我~/.emacs
包括打開某些應用程序的某些文件進行以下設置(Ubuntu的12.10; Emacs的24):如何避免在Emacs中彈出* Async Shell Command *緩衝區?
(setq dired-guess-shell-alist-user
'(("\\.pdf\\'" "okular ? &")
("\\.djvu\\'" "okular ? &")
("\\.mp3\\'" "vlc ? &")
("\\.mp4\\'" "vlc ? &")
))
當我瀏覽到一個PDF中dired-mode
和命中!
,它在打開的Okular的.PDF ,但是dired緩衝區被分成兩個部分,第二個現在正在像
*Async Shell Command*
緩衝
okular(25393)/kdecore (KConfigSkeleton) KCoreConfigSkeleton::writeConfig:
okular(25393)/kdecore (KConfigSkeleton) KCoreConfigSkeleton::writeConfig:
okular(25393)/kdecore (KConfigSkeleton) KCoreConfigSkeleton::writeConfig:
okular(25393)/kdecore (KConfigSkeleton) KCoreConfigSkeleton::writeConfig:
我怎樣才能防止被打開這個緩衝區? (除了,也許,如果出現錯誤並且此信息有用)。
我發現相關問題here和here,但他們似乎要處理的,而不是一般*Async Shell Command*
與異步執行特定的命令,(如果可能的話,我想改變的行爲一般爲異步進程,不僅對某些文件類型)
查看'.../lisp/simple.el'源文件中的實際函數 - 即'defun shell-command'和'defun async-shell-command'。你甚至可以創建自己的自定義函數和/或使用'defalias'。當使用'start-process'時,第二個參數是輸出緩衝區名稱 - 使用'nil'作爲第二個參數可以防止創建輸出緩衝區。你可以將'set-process-sentinel'和'start-process'結合使用。 – lawlist
'async-shell-command'的文檔字符串表明:'...在Elisp中,通過直接調用'start-process'可以更好地服務,因爲它提供了更多的控制,並且不會強制使用 shell(需要引用參數)。' – lawlist