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.