Emacsのファイルセーブ時に指定したコマンドをバックグラウンドで実行してくれる auto-shell-command

ファイルセーブ時に指定したシェルコマンドを非同期で実行するelispです。 前回バージョンから色々とパワーアップさせました。

ongaeshi/auto-shell-command · GitHub

タスクを連続して登録しなくなったのと、エラー時のポップアップ周りの処理を入れて大分使いやすくなりました。

インストール

MELPAからインストールするのが簡単です。

M-x package-list-packages auto-shell-command

auto-install経由でインストールしたい時はREADMEをどうぞ。

前回からの修正点

ChangeLogの翻訳

  • 同じタスクが連続で登録された時はタスクを増やしすぎないようにする
  • エラー時にポップアップしてもエラーバッファにカーソルを切り替えない
  • エラー時のポップアップはバッファの一番下を表示する
  • コマンド成功したらAuto Shell Commandバッファを閉じる
  • 指定したファイルにタスクが登録されていない時は警告
  • ascmd:exec でタスクを実行した時に指定したファイルに切り替えないように

こんな所で使えます

Cとか向け、ファイルセーブ時にmakeを実行させる

(ascmd:add '("/path/to/dir"                  "make"))     ; /path/to/dir以下のファイルをセーブしたら'make'を実行
(ascmd:add '("/path/to/dir/doc"              "make doc")) ; doc/以下のファイルをセーブした時だけは 'make doc'

ruby向け、テストを実行する

(ascmd:add '("/path/proj/test/.*\.rb$" "ruby -I../lib -I../test $FILE")) ; test/以下の*.rbを触ったら単体テストを実行
(ascmd:add '("/path/proj/test/runner.rb" "rake test")) ; test/runner.rb の時は全体テストとして 'rake test'を実行

さらに詳しい使い方や具体的なサンプルコードを見たい人はREADMEsamples をどうぞ。

関連記事