EmacsからRubyを呼出す

おお、久しぶりのRubyの話題です。
EmacsからRubyを呼出すには、el4rというものがあります。
el4r $B!A(BEmacsRuby$B$G3Z$7$$(BEmacs$B%i%$%U!A(B
が、簡単なRubyのフィルタを通すだけでいいとかいう場合には、call-process-region等のEmacsの標準関数を使うと楽です。こんな感じです。

(setq process-coding-system-alist
      (cons '("ruby" . euc-jp) process-coding-system-alist))
(defun rb-unescape-url (start end)
  (interactive "*r")
  (call-process-region start end
		       "ruby" t t nil "-rkconv" "-rcgi" "-e" 
		       "puts Kconv.toeuc(CGI.unescape(ARGF.read))"))

上の例は、URLをデコードするRubyワンライナーです。漢字が入ってくる場合がありますので、process-coding-system-alistでRubyプロセスとのやりとりで使用するコーディングシステムを指定しています。
そうそう、-eの後のRubyの引数は、Emacs-Lispの文字列で記述する必要があります。"は\"に、""や//の中の\dなどは\\dに置き換えないとダメです。結構たいへんです。
参照: http://www.bookshelf.jp/texi/elisp-manual-20-2.5-jp/elisp_37.html#SEC585