Rubyの勉強会などでプレゼンを行ってる人を見てると
10.times do |i|
i # =>
end
の状態から
10.times do |i|
i # => 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
end
の状態にパッと変える事がよくあるんですが「あれは何なのだろう?」と疑問に思いながらも他のことで頭がいっぱいで質問できずにいました。
xmpfilter
これは xmpfilter
という物の機能らしく rcodetools
に含まれています。
xmpfilter自体はrubyで書かれたプログラムでそれを rcodetools.el
から呼び出すのですが、PATHを設定してないとLoad Errorになり、値を表示してくれるどころかバッファーの中身が全部消されます。一瞬何が起こったのかわからず混乱すること請け合いですね。
環境
Cocoa Emacs 24
MacbookとUbuntuでDropboxを使ってEmacsの設定同期を行ってる
rcodetools の インストール
$ gem install rcodetools
でインストールすると el ファイルも一緒にインストールされます。
rbenv を使ってるなら $ rbenv rehash
も忘れずに。
俺はすっかり忘れてひどく時間を無駄にしました。いやマジで。gccの入れなおしとかまでしました。10時間ぐらい無駄に…。
設定
(require 'rcodetools)
(setq rct-find-tag-if-available nil)
(defun ruby-mode-hook-rcodetools ()
(define-key ruby-mode-map (kbd "<C-tab>") 'rct-complete-symbol)
(define-key ruby-mode-map (kbd "<C-return>") 'xmp))
;(global-set-key (kbd "<C-return>") 'xmp)
(add-hook 'ruby-mode-hook 'ruby-mode-hook-rcodetools)
(defun make-ruby-scratch-buffer ()
(with-current-buffer (get-buffer-create "*ruby scratch*")
(ruby-mode)
(current-buffer)))
(defun ruby-scratch ()
(interactive)
(pop-to-buffer (make-ruby-scratch-buffer)))
試しに使ってみる
M-x ruby-scratch
して
a=1
b=3
a+b
して a+b の行で M-; (comment-dwim
) を二回入力すると # => が入力されるので、そこで Ctrl + Return
を入力すると結果が表示される。ステキ!
rct-complete-symbol が何を補完してくれるかはよくわかんない。だってどのサイトもどのタイミングで補完コマンドを打ったら何が補完されるか書いてないんですもん。
問題対策
・何故かバッファーの内容が消える
→Path通ってないんのでは?
参考
rcodetoolsをemacsで使う設定するときにはまったのでメモ - とみふらの明るく楽しい日記
http://d.hatena.ne.jp/tomitake_flash/20100220/1266662660
rvm で ruby 1.8.7 インストール時にエラーになったので gcc 4.9 を homebrew で入れた | EasyRamble
http://easyramble.com/install-gcc-with-homebrew.html
Ruby1.8系をrbenvで追加インストールしたら少し嵌る - Fevnirのブログ
http://fevnir-r.hateblo.jp/entry/2013/03/11/215422
rcodetoolsが素晴らしすぎる件 - I am Cruby!
http://d.hatena.ne.jp/authorNari/20090523/1243051306
EmacsでRubyの開発環境をめちゃガチャパワーアップしたまとめ | Futurismo
http://futurismo.biz/archives/1295