雑文発散

«前の日記(2013-08-13) 最新 次の日記(2013-11-16)» 編集
過去の日記

2013-08-30 [長年日記]

[Emacs] 非同期 shell-command であるところの async-shell-command が Emacs 本体に搭載されていた

shell-commandcall-process-shell-command の違いを調べていて発見したのだけど、Emacs 23.2 あたりから async-shell-command が本体に搭載されてたんだねぇ。

M-x async-shell-command で起動。デフォルトだと M-& にキーバインドされている。

例えば M-x shell-command で、find / -type f とかすると、コマンド実行が終了するまで Emacs の操作が全くできない状態になる。

それを M-x async-shell-command で、同じように find / -type f すると、*Async Shell Command* バッファにコマンドの出力を入力しつつ、キー入力可能な状態に戻ってくる。

まー、普段のコマンド実行は iTerm2 とかの Emacs とは別のシェルを使って行なっているので、M-x でわざわざ起動して使うかというとそうでも無いんだけど、Emacs Lisp プログラム内部から使うなら可能性は広がりそうな気がする。

【追記】
help を見てたら、shell-command のコマンドの最後に & を付けるのでも同じ挙動になるのか。どうも「自動的に & を付けた状態にする」のが async-shell-command みたいだ。