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