骨のダイスを転がそう
2011-03-27
_ [Ruby][xyzzy] windows と jruby と xyzzy で、rsense
Visual Studio の intelisense 良いですよね。最高です。intelisense と同じインターフェースを、Emacs や vi で実現するのが、Rsense です。 ずいぶん前から気になっていたんですが、PC の切り替えを機に試してみることにしました。
これ、Emacs や vi でしか使えないのかというと、そんなことはありません。xyzzy でも使用できるようにしてくれた方がいらっしゃいます。 また、私、仕事では主に、Jruby を使っているわけですが、rsense は、jruby で動くのか?ためしてみたところ、何個か修正が必要でした。 一つ一つ確認していきましょう。
RUBY_PLATFORM
jruby は、
jruby -e "p RUBY_PLATFORM"
とかすると、
"java"
とだけ返してきます。rsense では、Windows か、Unix系かでいろいろ挙動を変えているため、これは痛い。これは、RUBY_PLATHORM のかわりに、 Config::CONFIG['host_os'] を使うと良いようです。
jruby -rrbconfig -e "p Config::CONFIG['host_os']"
で
"mswin32"
と来ます。
ポート番号
rsense のデフォルトポートは、77637。これは、jrubyでは動きませんでした。(というか Windows って、65536 以上のポート番号を指定しても大丈夫なのか……知らなんだ) これは、単純に、7767 あたりに修正。
read_close
148 行目の socket.read_close をコメントアウトしないと、コマンド発信のタイミングでrsenseサーバが落ちる。コメントアウトして良いもんかどうか分からんが、コメントアウト。
xyzzy
xyzzy で使用するには、aike さんのrsense.l (参照) を、%XYZZY_HOME%\site_lisp に入れてあげて、以下のように設定。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; rsense ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (add-hook 'editor::*ruby-mode-hook* #'(lambda () (load-library "rsense") ; rsense.lロード (require 'rsense) ; rsense.lロード (setq rsense-home "c:/xyzzy/rsense-0.3") ; rsenseインストール先(必須) (define-key *ruby-mode-map* #\M-. 'rsense-complete) ; キー設定例 ESC+ピリオドでコード補完 (define-key *ruby-mode-map* #\M-\, 'rsense-type-help))) ; キー設定例 ESC+カンマで型表示
で、aikeさんの rsense.l は、rsense 0.2 向けなので 0.3の rsense-where-is と、rsense-jump-to-definition は、自分で移植してみた。これで良いのかどうかは、はなはだ怪しいのですが。
Before...
_ Jacques [I came here to study http://www.indiamanufacturingshow.com..]
_ Dorian [Could you transfer $1000 from my current account to my dep..]
_ Stefan [Do you need a work permit? http://www.samhardenburgh.com/v..]