让Emacs停止询问“活动进程存在;杀死它们然后退出”

时间:2010-04-24 23:16:27

标签: emacs

尽管所有的建议都是一个坏主意,但仍然希望Emacs停止问我“当我点击C-c C-x时,”活动进程存在;杀死它们并且无论如何都会退出“。我希望它能在不问的情况下简单地杀死所有活动进程。

我该如何做到这一点?

5 个答案:

答案 0 :(得分:23)

这段代码(进入您的.emacs自定义文件)会暂时让Emacs认为杀死它时没有活动进程,因此您不会收到恼人的提示。

(require 'cl-lib)
(defadvice save-buffers-kill-emacs (around no-query-kill-emacs activate)
  "Prevent annoying \"Active processes exist\" query when you quit Emacs."
  (cl-letf (((symbol-function #'process-list) (lambda ())))
    ad-do-it))

答案 1 :(得分:19)

您可以通过将每个进程的 query-on-exit 标志设置为nil来完成此操作。 您可以在执行命令解释程序时使用钩子自动执行此操作:

(add-hook 'comint-exec-hook 
      (lambda () (set-process-query-on-exit-flag (get-buffer-process (current-buffer)) nil)))

答案 2 :(得分:7)

下一版本的Emacs(25.3或26.1)将有一个新的自定义选项confirm-kill-processes,以使这更简单。然后,您可以说M-x customize-variable RET confirm-kill-processes RET并将变量设置为nil以取消确认提示。

答案 3 :(得分:1)

你不能没有黑客攻击。如果您喜欢冒险,请在save-buffers-kill-emacs中替换.emacs的定义,以便它不会询问(但每次升级Emacs后都不要忘记重复此过程)。该函数的标准定义无需任何方式来定制该行为。

编辑:

或者,您可以像这样重新定义yes-or-no-p(未经测试):

(defadvice yes-or-no-p (around hack-exit (prompt))
   (if (string= prompt "Active processes exist; kill them and exit anyway? ")
       t
      ad-do-it))

答案 4 :(得分:1)

(if (get-buffer your-process-buffer)
      (progn
    (if (get-buffer-process your-process-buffer)
        (set-process-query-on-exit-flag (get-buffer-process your-process-buffer) nil)
      (kill-buffer your-process-buffer))))