Emacsから tmuxを操作する拡張 emamuxを書きました

Emacsから tmuxを操作する emamuxを書きました。
機能的には vimuxtslimeを合わせたようなもので、
任意の paneでコマンドを実行する機能と Emacsと同じ
tmux windowで新しい paneを作成し、コマンドを実行する機能があります。

必要要件

  • Emacs 22以降
  • tmux 1.5以降

設定

ソースを load-pathが通った場所に置き、設定ファイルに以下を追加します。

  (require 'emamux)

emamux:send-command

任意の paneでコマンドを実行します。
session, window, paneを入力したあと、コマンドを実行します。
それぞれの入力は補完が効き、候補が 1つしかない場合は自動で
それを選択します。2回目以降は 1回目で指定した targetが指定されます。
再度 targetを指定したい場合は "C-u"プレフィックスをつけてコマンドを
実行してください

emamux:send-commandのイメージ

sessionの選択

windowの選択

コマンドの送信



emamux:send-command以外のコマンドは tmux内で Emacsを no window(-nw)で
起動した場合にしか使えません。

emamux:run-command

emamux:run-commandは Emacsと同じ tmux windowに新しく paneを作成し、
その paneでコマンドを実行します。新しく paneを作るか既存の paneを
使うかはオプションによって切り替え可能です。詳しくはドキュメント
参照してください。

emamux:run-commandのイメージ

M-x emamux:run-commandの実行

新しい paneを作成し、コマンドを実行


その他, emamux:run-commandで新規作成した paneを閉じる(emamux:close-runner-pane),
その paneで実行中のコマンドを中断する(emamux:interrupt-runner)等の機能が
あります。詳しいことは ドキュメントを参照してください

終わりに

emamuxを紹介しました。個人的には send-commandだけで良かったの
ですが、Vimにしかないっていうのがどこか悔しかったのでそれ以外も
一通り実装してみました。Emacsは Shellとの親和性がなかなか高いと
思いますので、そこまで必要性があるものでもないかなと思っています。


今のところ面白い使い方が見えていませんが、何かひらめいたら
新規機能か、拡張という形で実装したいと思います。


あと本当は emuxにしたかったんですが、Emacsの拡張で複数
その他 Erlang等でも使われていたので emamuxとなりました。