Emacsのtuareg-modeでOCamlのコードを書いている。
編集中はmliファイルまたはmlファイルを頻繁に切り替えているのだけど、switch-buffer(C-x b)で指定するのが面倒になったので、簡単に切り替えることができるelispを作成した。
tuaregには対応するコマンドは、きっとあるだろうなと思い、tuareg-* を探してみたが、見当たらなかった。残念。
キーバインディングは、空いていた C-c , に割り当てた。
(defun switch-file-ext (file-name ext1 ext2)
(let ((file-ext (file-name-extension file-name)))
(unless (member file-ext (list ext1 ext2))
(error "unmatch file extension"))
(message file-ext)
(concat (file-name-directory file-name)
(file-name-base file-name)
"."
(if (string= file-ext ext1) ext2 ext1))))
(defun switch-to-ml-or-mli ()
(interactive) (find-file (switch-file-ext (buffer-file-name) "ml" "mli")))
(define-key tuareg-mode-map (kbd "C-c ,") 'switch-to-ml-or-mli)
これで、mliファイルまたはmlファイルを編集中に、C-c , をキー入力すると、
例えば、hoge.mli を編集している場合は hoge.ml に、
逆に、hoge.ml の場合は、 hoge.mli に切り替えできるようになった。
こんなふうに手軽に機能拡張できるEmacsは素晴しいね。
2014/5/17 追記
Twitterで、nomaddoさん、星のキャミバ様に教えていただいたが、上記の関数を作らなくても、tuareg-find-alternate-fileがあることが判明。
デフォルトでは、C-c C-aに割り当てられていた。
/(^o^)\ナンテコッタイ
0 件のコメント:
コメントを投稿