ruby-modeあなどりがたし

ruby-modeをあなどっていた。単にインデントやキーワードの色付けをしてくれるだけじゃなく、endの自動補完とかリージョンをirbに送りつけて別バッファで実行するといったこともできるらしい。Emacs万歳だ。

(require 'ruby-electric)
(add-hook 'ruby-mode-hook
	  '(lambda () (ruby-electric-mode t)))

と書いておけば閉じカッコやendが適当なタイミングで補完される。ブロック単位やsexp単位で前後にジャンプというのもあるけど、どこまで便利なのかよく分からない。ていうか、Rubyのsexpって?

それよりも、irbで直接書くのはためらわれるけど、ちょっとあれこれ試したいというときにテキストファイルを開くのが面倒くさい。ディレクトリ掘ったりファイル名考えるのって無駄だ。日付を絡めて適当に名前をつけたファイルを、キー操作一発で開くようにしたい。

というわけで早速書いてみた。ファイル名は日付+時刻なので、後から検索するときのことを考えてフリーキーワードを入れられるようにした。

(defun open-ruby-file (str)
  (interactive "skeyword: ")
  (find-file
   (concat "/home/yarb/desktop/fun/gomi/"
	   (format-time-string "%m%d%H%M%S")
	   ".rb"))
  (insert (concat "#!/usr/bin/ruby\n# "
		  str "\n\n")))

(global-set-key [(super @)] 'open-ruby-file)

キーバインドをどうしていいのか分からなかったけど、superキーを使うことにした。何が驚いたかって、Rubyのrを取って[super r]を割り当てようと思って念のために押してみたら、いきなりCompiz Fusionのデスクトップ拡大機能が呼び出されてしまったこと。ムニューンと画面の一部が10倍ぐらいに拡大表示されてビビッた。そんな機能があったのか……。そもそもruby-modeのC-M-h(ruby-mark-defun)というキーバインドもCompiz Fusionとぶつかってて、いきなりデスクトップ画面がゴロンと横に転がって隣のデスクトップに移動してしまったりするのだけど。キーバインドを整合的に設定するのって難しい。

うーん、ファイル名がぐちゃぐちゃな分、Emacsの中から実行したいわけだけど、