2011-08-01 39 views
5

Emacsは明らかに複数の非同期サブプロセスを扱うことができます。そうでなければ、org-babelのような多言語プログラミング環境では例を挙げることはできません。Emacs-Diredの複数の非同期シェルコマンド?

しかし、私はのdiredにいるよと第二pdfファイルで同じことをしようその後、pdfファイル(&示す)を表示するには、非同期シェルコマンドを起動し、そして、私が手に、次のメッセージ:

"コマンドは実行中ですか?それを削除しますか?はいまたはいいえ?"

Diredで複数の非同期シェルコマンドを並行して実行する方法はありますか?

答えて

2

私はdired-do-async-shell-commandとは考えていませんが、いくつかのファイルを開くには、特定の外部アプリケーションが必要です。OpenWithを使用することをお勧めします。

+0

- 感謝を。 – Thorsten

11

dired-do-async-shell-command Emacsを使用すると、*Async Shell Command*バッファが作成されます。あなたが別の非同期コマンドをしたい場合、あなたはそれをアドバイスすることにより、dired-do-async-shell-commandの振舞変更しようとすることができM-x rename-uniquely

使用して、たとえば、このバッファの名前を変更する必要があります:私は本当にシェルコマンドをアドバイス

(defadvice shell-command (after shell-in-new-buffer (command &optional output-buffer error-buffer)) 
    (when (get-buffer "*Async Shell Command*") 
     (with-current-buffer "*Async Shell Command*" 
     (rename-uniquely)))) 
(ad-activate 'shell-command) 

ノートEmacsコマンドはdiredによって呼び出されたためです。

+0

これは別の有効な代替手段ですが、あまりにも悪いのは1つの回答しか受け入れることができません - ありがとうございます。 – Thorsten

0

私はシェルコマンドに専用のバッファ名を渡すために変数dired-実行シェルコマンドの現在の定義を消去し、次のちょうどセットアップをしました:

チャームのように動作しますOpenWith
(defun dired-run-shell-command (command) 
     (let ((handler 
      (find-file-name-handler (directory-file-name default-directory) 
         'shell-command))) 
    (if handler (apply handler 'shell-command (list command)) 
     (shell-command command 
       (generate-new-buffer-name 
       (concat "*Shell Command Output: '" command "'*"))))) 
     ;; Return nil for sake of nconc in dired-bunch-files. 
     nil) 
関連する問題