読者です 読者をやめる 読者になる 読者になる

外部実行ファイル実行系ふたたび

xyzzy

フィルタもの

昨日の filter-region(C-x #)filter-buffer(C-x |) はその名の通りリージョンやバッファをコマンドの標準入力に渡して、コマンドの標準出力と入れ替えるものなわけでリージョンのなんてよく考えると結構すごいと思います。

(このリージョンを選択して…)
if ($result)
{
  warn "Post successful $result\n";
} else {
    warn "Error.\n";
}

(C-x # 実行して…)
# perltidy

(差し変わる)
if ($result) {
    warn "Post successful $result\n";
}
else {
    warn "Error.\n";
}

実行ファイル実行もの

問題は実行ファイル実行ものは他にもいっぱいありましていつもわたくし大変混乱。[ツール]メニューを開いてみても、「コンソールプログラムを非同期で実行」「コンソールプログラムを実行」「Windowsプログラムの実行」で混乱します。実はそれぞれキーも割り当てられていて、

  • コンソールプログラムを非同期で実行(execute-subprocess) C-x &
  • コンソールプログラムを実行(pipe-command) C-x @
  • Windowsプログラムの実行(launch-application) C-x %

なんですけど、どれもカレントディレクトリはカレントバッファのファイルのディレクトリになるんですね…すごいですね…(あたりまえ?)。launch-application はその名の通り実行かけて後は知らない系ですが、上の二つは実行すると新しいバッファが作られて、カレントバッファがそちらに移って、コマンドの標準出力が出てくるみたいです。使ってなかったなー…。

非同期で実行をかますと、kill-subprocess C-c C-k で殺せるらしいんですけど、よく分かってない浅はかな自分。これは宿題にしよう。