タグ

ブックマーク / m2ym.hatenadiary.org (5)

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

    定義元ジャンプなどに対応した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の新機能について説明します。 定義元ジャンプ Where Is メソッドシグネチャ表示 Windowsサービス 定義元ジャンプ この機能はその名の通り、カーソルでポイントしている定数(クラス)やメソッドの定義元にジャンプする機能です。まだ実験的な段階ですが、requireしているライブラリのメソッドにジャンプしたり、編集中のファイルで定義しているメソッドにジャンプしたりといった、比較的簡単なケースではうまく動作しています。この機能によって、

    定義元ジャンプなどに対応したRSense v0.3をリリースしました - Functional Emacser
  • ヒューリスティックな型推論 - Functional Emacser

    もはや型推論と呼べないことは承知ですが、あえてメモしておきます。主に補完目的の話です。 Rubyなどの動的言語ではevalやsendを使うことで、簡単に型推論できない状況を作り出すことができます。そのような状況では当然、精度の良い補完を提供できません。そういう場合の解決策として、変数名やメソッド名から適切な型をヒューリスティックに推測してくれると良いかもしれません。 例えば、以下のようになります。 fileという名前はStringかFileのオブジェクトだろう gsubというメソッドが呼ばれているオブジェクトはStringだろう mapというメソッドが呼ばれているオブジェクトはEnumerableをincludeしたクラスだろう <<というメソッドが呼ばれているオブジェクトはArrayとかIOだろう こんな機能が入るのはかなり先だと思いますが、実際に実行するタイプの補完プログラムには負けな

    ヒューリスティックな型推論 - Functional Emacser
  • Rubyのための開発補助ツール、RSenseをリリースしました - Functional Emacser

    未踏プロジェクトの援助を受けて、ここ数ヶ月集中して開発していた、Rubyのための開発補助ツールRSenseをようやくリリースしました!配布物やドキュメントは次のURLから入手できます。 http://cx4a.org/software/rsense/index.ja.html RSenseの最大の特徴は、他の開発環境(IDE)では実現できていない高精度なコード補完を実現しているところです。周知のことだと思いますがRubyは動的型付け言語です。そのためプログラムを実際に実行してみないと、ほとんどの式の型は分からないのです。型情報からユーザーの入力を補助するコード補完機能の分野では、これはかなり致命的な問題です。RSenseは型推論の技術を応用することで、この問題を解決しました。上記のURLにもありますが、以下に実際のスクリーンショットやデモが貼っておくので、ぜひご覧ください。 現在利用できる

    Rubyのための開発補助ツール、RSenseをリリースしました - Functional Emacser
  • Rubyコード補完進捗報告1 - Functional Emacser

    ここ二週間ほど、集中して取り組んだおかげで、一応それっぽく動くようになりました。問題は山積みで実用などは遥か遠い未来の話ですが、ちょっと嬉しかったので報告です。次のスクリーンショットを見てください。 なんの変哲のない補完に見えますが、よく見ると補完候補としてFixnum#succとString#gsubが含まれているのが分かります。これの意味するところは、ローカル変数aへのFixnumオブジェクトとStringオブジェクトの代入が正しく検知され型推論されているということです。 分かりやすさのために、あえてこんな単純な例を出していますが、前のエントリにあるようなケースも現状ですでに対応できています。 def foo(n) n. # <= succ, gsubが候補として出てくる end foo(1) foo('Hello') 一応プロジェクトのURLを貼っておきます。 http://code

    Rubyコード補完進捗報告1 - Functional Emacser
  • Rubyにおけるコード補完の考察 - Functional Emacser

    実験的ではあるにせよ、現状ではRubyのコード補完はid:rubikitchさんのrcodetoolsでなんとか対応できています。が、次のような(大きな)問題をかかえています。ちなみにここでいうrcodetoolsの問題というのは補完機能のことで、xmpfilterとかは全然関係ないことを留意してください。 rcodetoolsの問題点 rcodetoolsは、補完を得るために裏で編集中のRubyコードを実行するようです。実際にRubyコードを実行するので、補完ポイントに処理が到達できる場合は補完精度は100%になります。しかしこの方法には二つの問題があります。 一つは、補完ポイントに処理が到達できない場合は補完精度が0%に等しくなるという問題です。もう一つの問題はRubyコードの実行に時間がかかる場合に、それと同等の時間をEmacsが待つことになるという問題です。後者の問題は特に深刻で、

    Rubyにおけるコード補完の考察 - Functional Emacser
  • 1