xmp で Ruby 1.8 と 1.9 を切り替える
ある食事会で有名な Rubyist に質問された。
xmp を使うときに、Ruby 1.8 と 1.9 を切り替えられないか?
その時は答えられなかったけど、こんな感じでどうだろうか?
- Ruby 1.8 と 1.9 がインストールされていること。
- ruby と ruby19
- 普段使うのは ruby19
- rcodetools がインストールされていること。
(require 'rcodetools) (setq xmpfilter-command-name "xmpfilter -S ruby19 --dev --detect-rbtest") (setq rct-complete-command-name "rct-complete -S ruby19 --dev --fork --detect-rbtest") (defun xmp-1-8 () (interactive) (let ((xmpfilter-command-name "ruby -rubygems -S xmpfilter --dev --fork --detect-rbtest")) (xmp))) (defun rct-complete-symbol-1-8 () (interactive) (let ((rct-complete-command-name "ruby -rubygems -S rct-complete --dev --fork --detect-rbtest")) (rct-complete-symbol))) (add-hook 'ruby-mode-hook (lambda () (define-key ruby-mode-map "\M-\C-i" 'rct-complete-symbol) (define-key ruby-mode-map "\C-c\C-d" 'xmp) (define-key ruby-mode-map "\M-8\C-i" 'rct-complete-symbol-1-8) (define-key ruby-mode-map "\C-c8\C-d" 'xmp-1-8)))
キーバインドはなんとも頂けないが ...
RUBY_VERSION # =>
この状態で C-c C-d すると、
RUBY_VERSION # => "1.9.1"
C-c 8 C-d すると、
RUBY_VERSION # => "1.8.7"
だめかな?