非同期シェルプロセスバッファーは常にウィンドウの配置を覆います


8

私はM-!、FirefoxやEvinceなどのを使用してemacsから外部プログラムを頻繁に起動します。実行するたびに、バッファがプロセスの結果でいっぱいにポップアップします。これにより、ウィンドウの配置に関して私が行っている他のことはすべて破棄されます。

デフォルトでそのようなバッファを埋める方法はありますか?そうすれば、バッファを探しに行くことに決めない限り、それらを見る必要はありませんか?


回答:


11

コマンドが非同期で実行されていることを述べたので、私はあなたがにasync-shell-commandバインドされたコマンドを意味すると仮定していますM-&。あなたは次のようにカスタマイズasync-shell-commandする(あなたはそれを読むことでそれを読むことができますC-hfasync-shell-commandRET)のドキュメントのアドバイスに従うことができdisplay-buffer-alistます

(add-to-list 'display-buffer-alist (cons "\\*Async Shell Command\\*.*" (cons #'display-buffer-no-window nil)))

これで、コマンドが出力を表示するために使用するバッファーは表示されなくなります。


これは美しく機能します、ありがとう。また、M-&どちらも知りませんでした。私は使用していて、シェルに渡したコマンドにM-!手動でを追加してい&ました。
Steven Arntson、2014

4

Emacsには、意図しない(または実際に意図的な)ウィンドウ構成の変更が問題を引き起こすのを防ぐための汎用機能があります。

(winner-mode 1)initファイルに追加します。次に、何かがウィンドウを混乱させたら、C-c<left>winner-undo)を使用してウィンドウを復元します。これを繰り返し使用して、複数のウィンドウ構成の変更を元に戻すことができます。C-c<right>winner-redo)は、最新の構成に戻ります。


はい、私は勝者モードの非常に熱心なユーザーです!
Steven Arntson、2014

4

これが私の設定です。Linuxを使用している場合は、うまく機能するはずです。

(require 'dired-aux)

(defvar dired-filelist-cmd
  '(("vlc" "-L")))

(defun dired-start-process (cmd &optional file-list)
  (interactive
   (let ((files (dired-get-marked-files t current-prefix-arg)))
     (list
      (dired-read-shell-command "& on %s: " current-prefix-arg files)
      files)))
  (start-process
   cmd nil shell-file-name
   shell-command-switch
   (format "nohup 1>/dev/null 2>/dev/null %s \"%s\""
           (if (> (length file-list) 1)
               (format "%s %s" cmd
                       (cadr (assoc cmd dired-filelist-cmd)))
             cmd)
           (mapconcat #'expand-file-name file-list "\" \""))))

(define-key dired-mode-map "r" 'dired-start-process)

たとえばからPDFファイルを開いたときに、これらの厄介なバッファが非表示になるだけでなくdired、Emacsを閉じてもEvince は保持されます。マークされたビデオファイルをvlcプレイリストにキューイングするための小さなカスタマイズもあります。


2

グローバルに使用する代わりに、単一のコマンドに対してそのウィンドウを抑制することができます let

(let ((display-buffer-alist
       (cons (cons "\\*Async Shell Command\\*.*"
                   (cons #'display-buffer-no-window nil))
             display-buffer-alist))) ;; suppress async shell command window
  (async-shell-command command))

(cons NEWTHING display-buffer-alist)代わりに(list NEWTHING)、元のリストを完全に阻害しないようにすることをお勧めします。
Phils 2017

良い提案、それを実装しました。
killdash9 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.