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
入力ファイルが違うのかと思ったけど、内容は同じだった。
う〜ん、なんでかなぁ。