Есть несколько способов сделать это:
Вы можете посоветовать функцию save-buffers-kill-emacs:
(defadvice save-buffers-kill-emacs (around no-y-or-n activate)
(flet ((yes-or-no-p (&rest args) t)
(y-or-n-p (&rest args) t))
ad-do-it))
Недостатком этого является то, чтотакже пропустит проверку на активные процессы в Emacs (что делается после проверки буфера файлов).Поэтому, вероятно, безопаснее всего написать собственную версию save-buffers-kill-emacs
(defun my-save-buffers-kill-emacs (&optional arg)
"Offer to save each buffer(once only), then kill this Emacs process.
With prefix ARG, silently save all file-visiting buffers, then kill."
(interactive "P")
(save-some-buffers arg t)
(and (or (not (fboundp 'process-list))
;; process-list is not defined on MSDOS.
(let ((processes (process-list))
active)
(while processes
(and (memq (process-status (car processes)) '(run stop open listen))
(process-query-on-exit-flag (car processes))
(setq active t))
(setq processes (cdr processes)))
(or (not active)
(progn (list-processes t)
(yes-or-no-p "Active processes exist; kill them and exit anyway? ")))))
;; Query the user for other things, perhaps.
(run-hook-with-args-until-failure 'kill-emacs-query-functions)
(or (null confirm-kill-emacs)
(funcall confirm-kill-emacs "Really exit Emacs? "))
(kill-emacs)))
и привязать ее к стандартной Cx Cc привязке ключа:
(global-set-key (kbd "C-x C-c") 'my-save-buffers-kill-emacs)
или установите его в "save-buffers-kill-emacs":
(fset 'save-buffers-kill-emacs 'my-save-buffers-kill-emacs)