Pregunta:
Cuando cierro un marco, me gustaría que se eliminara su búfer.
Si el búfer se muestra en otros fotogramas, no se debe eliminar el búfer.
No haga nada si se muestra más de un búfer en un marco.
¿Cuál es una buena forma de configurar esto?
Respuesta:
Si he entendido la pregunta, aquí hay una función que hace lo que quieres:
(defun maybe-delete-frame-buffer (frame)
"When a dedicated FRAME is deleted, also kill its buffer.
A dedicated frame contains a single window whose buffer is not
displayed anywhere else."
(let ((windows (window-list frame)))
(when (eq 1 (length windows))
(let ((buffer (window-buffer (car windows))))
(when (eq 1 (length (get-buffer-window-list buffer nil t)))
(kill-buffer buffer))))))
Puede agregarlo como un gancho que se llama cada vez que se cierra un marco usando:
(add-to-list 'delete-frame-functions #'maybe-delete-frame-buffer)