定義元ジャンプなどに対応したRSense v0.3をリリースしました

定義元ジャンプなどに対応したRSense v0.3をリリースしました。

http://cx4a.org/software/rsense/index.ja.html

v0.2からの詳しい変更点は次のURLを参照していただくとして、

http://cx4a.org/software/rsense/changes-v0.3.ja.html

ここでは次のv0.3の新機能について説明します。

定義元ジャンプ

この機能はその名の通り、カーソルでポイントしている定数(クラス)やメソッドの定義元にジャンプする機能です。まだ実験的な段階ですが、requireしているライブラリのメソッドにジャンプしたり、編集中のファイルで定義しているメソッドにジャンプしたりといった、比較的簡単なケースではうまく動作しています。この機能によって、いよいよIDEらしくなってきました。

EmacsではM-x rsense-jump-to-definition、Vimでは:RSenseJumpToDefinitionで利用できます。

なお現状では複数の選択肢がある場合は、最初の選択肢を選択します。

Where Is

適当な名前を思いつかなかったので、このような分かりづらい名前になってますが、要は現在どのメソッドあるいはクラスを編集しているのかを示してくれるのがこの機能になります。構造化されているとは言え、構文のクセが少ないRubyではどのメソッドを編集しているか分からなくなることがあります。この機能はそういった問題を解決することを目的としています。

EmacsではM-x rsense-where-is、Vimでは:RSenseWhereIsで利用できます。

メソッドシグネチャ表示

コード補完時に、そのメソッドがどのクラスやモジュールに所属しているのかを示してくれる機能です。また、それと同時にmやcといった記号も表示されます。これらの記号の意味は次のようになります。

記号 意味
C クラス
M モジュール
c 定数
m メソッド

Emacsでは次のような表示になります。

なお、この表示にするにはauto-complete-modeの開発版をインストールしておく必要があります。近々リリースする予定なので、面倒な方はしばしお待ちを。現在の安定板ではメソッド名のみの表示になります。

Vimでは次のような表示になります。


Windowsサービス

以前のバージョンではコマンドプロンプトでRSenseサーバーを手動で起動しておかなければなりませんでしたが、今回のバージョンからRSenseをWindowsサービスとして動作できるようにしました。Windows XPでのみ動作確認しています。

Windowsサービスの利用方法はドキュメントを参照してください。

http://cx4a.org/software/rsense/manual.ja.html#Windows

その他

その他、エディタが固まったり、Javaプロセスが落ちたりといった致命的なバグが修正されています。これによりv0.2に比べて断然に安定度が増しています。また、CPU使用率やメモリ使用量などのパフォーマンスの問題も改善されています。

以上、是非お試しを。

C/C++のための開発援助ツール、GCCSenseをリリースしました

未踏プロジェクトの支援を受けて開発していた、C/C++のための開発援助ツールGCCSenseをリリースしました。配布物やドキュメントは次のURLから入手できます。

http://cx4a.org/software/gccsense/index.ja.html

開発援助ツールと銘打っていますが、現状利用できる機能はコード補完と自動構文チェック(Emacsのみ)だけです。将来的には関数ヘルプ機能や型表示機能を実装する予定です。

GCCSenseはコード補完などの機能を搭載した独自のGCCを利用しているため、インストールがかなり面倒です。ドキュメントによってある程度カバーしたつもりですが、環境によってまちまちなのでインストール時に問題が出てくるのは必至だと思います。その際は私に連絡してください。

また、独自GCCを利用している関係上、現状ではWindowsでの利用はできません。自由なソフトウェアを推進する人間が、完成度の高いVisual C++を使えとは口が避けても言えないので、将来的には対応したいと考えています。なお、次のOSで動作を確認しました。

対応しているエディタはEmacsVimです。コード補完のプログラムは独立して動作するので、理論的にはどのエディタからも利用できます。

あと、コード補完時にコンパイラが走る設計になっているので、当然ながら比較的新しいマシンを必要とします。インストール時にGCCがすんなり入れば、おそらく問題ないでしょう。根拠が全くありませんが、2GHz以上のCPU、1GB以上のメモリがある環境なら問題ないと思われます。

ライセンスはGPLv3+です。

以上、問題・質問があれば tomo@cx4a.org か Twitter @m2ym まで。

Rubyのための開発補助ツール、RSenseをリリースしました

未踏プロジェクトの援助を受けて、ここ数ヶ月集中して開発していた、Rubyのための開発補助ツールRSenseをようやくリリースしました!配布物やドキュメントは次のURLから入手できます。

http://cx4a.org/software/rsense/index.ja.html

RSenseの最大の特徴は、他の開発環境(IDE)では実現できていない高精度なコード補完を実現しているところです。周知のことだと思いますがRubyは動的型付け言語です。そのためプログラムを実際に実行してみないと、ほとんどの式の型は分からないのです。型情報からユーザーの入力を補助するコード補完機能の分野では、これはかなり致命的な問題です。RSenseは型推論の技術を応用することで、この問題を解決しました。上記のURLにもありますが、以下に実際のスクリーンショットやデモが貼っておくので、ぜひご覧ください。

現在利用できるエディタはEmacsVimだけです。バックエンドをうまく分離しているので、理論的にはEclipseTextMateなどの他のエディタにも対応できるはずです。フロントエンド対応したいという方がいらっしゃましたら、僕に連絡ください。可能な限り手助けいたします。TextMateここを読む限り、案外簡単に実装できそうですが、OS Xをもっていないので何もできません。

あと未踏の成果報告の関連で利用者の声というのを募集しています。一行でいいので、何かコメントがあるかたがいしゃっらいましたら、僕に連絡ください。

メールアドレスは tomo@cx4a.org です。

将来的には静的コードチェック機能や、ソースコードジャンプ機能、リファクタリング機能を実装したいと考えています。ただ現状では以下のような制限事項があるので、まずはこちらから解決することになるでしょう。

  • evalのあるソースコードを正しく解析できない
  • proc, lambda, callcc, structが未対応
  • raise, catchが解析できない
  • 多くの標準ライブラリが未対応
  • パフォーマンスの問題
  • 構文エラー時の補完ができない

auto-complete.elがpos-tip.elに対応しました

@iRi_Eさん作のpos-tip.elにauto-completeが対応しました。補完のポップアップヘルプで利用できます。

pos-tip.el: http://www.emacswiki.org/emacs-en/PosTip

auto-completeのコードはいつものようにGitリポジトリから取得してください。

pos-tip.elを使うにはac-quick-help-prefer-xをtに設定し(デフォルト)、あらかじめ(require 'pos-tip)しておきます。

次のスクリーンショットはauto-complete + RSense + pos-tip.elを組み合わせた素晴しい機能性・見栄えを表現しています。

「スクリプト言語としてのEmacs Lisp」資料公開

3/18の「ありえるえりあ勉強会」で使った資料を公開します。応用編はまだ作りかけですが、少しでもEmacs Lispを知っている人なら、スクリプト言語としての利用が十分可能になるよう網羅されています。

http://cx4a.org/pub/emacs-lisp-for-scripting.ja.html

auto-completeのヘルプ機能改善(persist-help, last-help)

auto-completeのヘルプ機能を少し改善してみました。コードはGitリポジトリから取得できます。

http://cx4a.org/software/auto-complete/#Source_Code

変更点:

1. ヘルプ表示後に操作を行っても自動的に消えないバッファヘルプ機能(persist-help)
2. 前回補完した候補のヘルプを再度表示する機能(last-help)

(1)は補完中にC-u f1あるいはM-x ac-persist-helpすることで、別ウィンドウに表示されるバッファヘルプを永続的に表示させておくことができるようになります。

(2)は関数などをRETで補完した後からでも、その関数のヘルプを見ることができる機能で、M-x ac-last-helpでバッファヘルプ形式で表示、M-x ac-last-quick-helpでクイックヘルプ形式で表示してくれます。TABによる補完や単純な文字入力では補完されたとみなされませんので、後から表示したいのであればあらかじめRETで補完しておきます。

auto-complete v1.2をリリースしました

次のURLから最新版を手に入れることができます。

http://cx4a.org/software/auto-complete/index.ja.html

v1.2の変更点は次のURLから確認できます。

http://cx4a.org/software/auto-complete/changes-v1.2.ja.html

デモムービーです。