Skip to content

Instantly share code, notes, and snippets.

@supermomonga
Created October 20, 2013 14:50
Show Gist options
  • Save supermomonga/7070603 to your computer and use it in GitHub Desktop.
Save supermomonga/7070603 to your computer and use it in GitHub Desktop.

OmniRuby

Omni completion engine for Ruby

初期リリースの草案です(草案)

機能,コンセプト

  • 標準クラス及び現在のファイル内で定義されたクラスのメンバをオムニ補完
  • Rubyにより実装
  • VimEmacsなどからの利用を想定

型予測

  • リテラルからの予測
  • ClassName.newからの予測。オーバーライドは考えず、ClassNameな型を返すと仮定する
  • 変数名からの補完。上記2つを直接変数に代入している式がカーソル位置より上部の行にある場合、代入時点の型から変わっていないものと仮定する

標準クラス以外のメンバ補完について

  • 現在のファイル内で直接定義されているもの
  • define_methodとかは無視(Ignore)

実装

  • Ripperでがんばる(かなり)
  • 速度が満足でない場合、irbプロセスを常駐させる形にしたい(したい)

TODO

  • Rsenseの実装を調査
@ne-sachirou
Copy link

.。oO(Rubyは書き方が多いので、Ripperは多分悪手なんです。C拡張には対応出来ませんし、クラスはClass.new{ }とか、メソッドはdefine_method :name, { }とか、網羅的に考えないといけなくなります。とはいえ「実行してみて」ですと、moudle定義が副作用を持ってゐる可能性が有ります。JavaScriptのAdobe Bracketsは、「実行してみて」るみたいですけど。)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment