Duas maneiras de pensar, mas tenho certeza de que há mais. A função que é chamada quando você clica no botão do quadro de exclusão (canto superior direito [X] no Windows) é handle-delete-frame
. Você pode avisar esse comando ou pode substituí-lo como a função que manipula esse clique por algum outro comando.
Para aconselhá-lo:
(defadvice handle-delete-frame (around my-handle-delete-frame-advice activate) "Ask for confirmation before deleting the last frame" (let ((frame (posn-window (event-start event))) (numfrs (length (visible-frame-list)))) (when (or (> numfrs 1) (y-or-n-p "Really exit Emacs? ")) ad-do-it)))
Para substituí-lo:
(defun my-handle-delete-frame (event) "Ask for confirmation before deleting the last frame" (interactive "e") (let ((frame (posn-window (event-start event))) (numfrs (length (visible-frame-list)))) (cond ((> numfrs 1) (delete-frame frame t)) ((y-or-n-p "Really exit Emacs? ") (save-buffers-kill-emacs))))) (define-key special-event-map [delete-frame] 'my-handle-delete-frame)
Não faça ambos destes; apenas faça um deles.