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

Ada*_*dam 34 emacs

尽管所有的建议都是一个坏主意,但我仍然希望Emacs不再问我"当我点击Cc Cx时,存在活动进程;杀死它们并且无论如何都要退出".我希望它能在不问的情况下简单地杀死所有活动进程.

我怎么能做到这一点?

pol*_*lot 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))
Run Code Online (Sandbox Code Playgroud)

  • `flet`非常酷,但不幸的是自Emacs 24.3以来已被弃用,但是Nic Ferrier已将其重新实现为`noflet`,可通过package.el获得.可能最好使用它,或使用下面的其他解决方案(在第二个想法,defadvice开始有点难看,所以钩子解决方案可能更好一般). (2认同)

Jür*_*zel 20

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

(add-hook 'comint-exec-hook 
      (lambda () (set-process-query-on-exit-flag (get-buffer-process (current-buffer)) nil)))
Run Code Online (Sandbox Code Playgroud)

  • 请注意,文档说(关于process-kill-without-query)"此函数自22.1以来已过时",建议使用set-process-query-on-exit-flag. (4认同)

Phi*_*ipp 7

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