rct-complete-symbol できなくなった

最近 rcodetools の設定で、いつも rubikichi さんに助けて頂いている。
本当にありがとうございます。

前回やっとのことで xmpfilter が動いたのだが、今度は rct-complete-symbol による補完ができないことに気がついた。

以下のコードで M-TAB すると、補完されずにメッセージバッファに Search failed: "enco" と表示される。

# -*- coding: utf-8; -*-
RUBY_VERSION        # => "1.9.1"

s = "こんにちは"    # => "こんにちは"
s.enco

(setq rct-debug t) して、実行しているコマンドを確認してみた。

rct-complete -S ruby19 --dev --fork --detect-rbtest --completion-emacs  --line=5 --column=6  xmptmp-in3544lam.rb > xmptmp-out3544yks.rb

同じコマンドをシェルから実行すると、こんな感じ。

$ rct-complete -S ruby19 --dev --fork --detect-rbtest --completion-emacs --line=5 --column=6 foo.rb
(progn
(setq rct-method-completion-table '(("encode") ("encode!") ("encoding") ))
(setq alist '(("encode\t[String#encode]") ("encode!\t[String#encode!]") ("encoding\t[String#encoding]") ))
(setq pattern "enco")
(try-completion pattern rct-method-completion-table nil)
)

rct-complete-symbol すると、実行結果を *rct-eval* というバッファに出力するらしい。
バッファの中身を覗いてみると、

(progn
(setq rct-method-completion-table '(("encode") ("encode!") ("encoding") ))
(setq alist '(("encode\t[String#encode]") ("encode!\t[Stringenco")
(try-completion pattern rct-method-completion-table nil)
)encod

ありゃりゃ、S 式が完成してない。
alist が途中までしかなくて、pattern も setq してない。

前回 xmpfilter が動かなかったときは、rcodetools.el が古いのが原因だったみたいだけど、今回のは Ruby スクリプトの方に原因がありそう。*1

ライブラリのロードパスが違うのだろうか。

# -*- coding: utf-8; -*-
RUBY_VERSION        # => "1.9.1"

s = "こんにちは"    # => "こんにちは"
# s.enco

puts $LOAD_PATH.join("\n")
# >> /usr/local/lib/ruby19/gems/1.9.1/gems/rcodetools-0.8.1.0/bin
# >> /usr/local/lib/ruby19/gems/1.9.1/gems/rcodetools-0.8.1.0/lib
# >> /usr/local/lib/ruby19/site_ruby/1.9.1
# >> /usr/local/lib/ruby19/site_ruby/1.9.1/i386-cygwin
# >> /usr/local/lib/ruby19/site_ruby
# >> /usr/local/lib/ruby19/vendor_ruby/1.9.1
# >> /usr/local/lib/ruby19/vendor_ruby/1.9.1/i386-cygwin
# >> /usr/local/lib/ruby19/vendor_ruby
# >> /usr/local/lib/ruby19/1.9.1
# >> /usr/local/lib/ruby19/1.9.1/i386-cygwin
# >> .

ちゃんと 1.9 のライブラリだけ読み込みそうに見える。*2
シェルから起動したときと、$LOAD_PATH は同じだった。*3

入力ファイルが違うのかと思ったけど、内容は同じだった。

う〜ん、なんでかなぁ。

*1:ちゃんと gem でインストールした Ruby スクリプトを /usr/local/bin にコピーしなおした。shebang も /usr/local/bin/ruby19 に変更した。

*2:xmpfilter と rct-complete で $LOAD_PATH が違うのかも知れない。

*3:シェルから起動したときは $RUBYLIB が追加されていたけど、そこに rcodetools はインストールされていない。