在看John Cinnamond的 Extreme Object-Oriented Ruby的时候,注意到John在Emacs里实时运行了Ruby代码并且输出了结果。查了一下,这是通过 xmpfilter以及rcodetools、robe实现的。
要实现这个,首先我们需要xmpfilter
gem install xmpfilter
之后还需要rcodetools和robe, 可以通过el-get安 装(手动安装后load-file也可以)。
之后在配置文件中加入以下代码,在ruby-mode中加载rcodetool
(eval-after-load 'ruby-mode
(lambda ()
(require 'robe)
(require 'rcodetools)))
并且绑定快捷键
(add-hook 'ruby-mode-hook
'robe-mode
(define-key ruby-mode-map (kbd "C-c C-c") 'xmp))
这样就完成了。
其实并没有。在实际操作中,因为我使用rvm来管理多个不同配置的ruby,直接C-c C-c
会提示找不到xmp这个操作。因为我只在一个ruby环境中安装了xmpfilter,而这个
ruby环境并不是emacs默认的。
解决方法也很简单,emacs也有rvm插件,可以通过这个切换ruby环境,或者更省事的方法, 直接将安装了xmpfilter的ruby作为默认环境,或者给所有版本都安装xmpfilter即可。
Happy hacking!