¿Cómo recibo una advertencia antes de cerrar un búfer temporal en Emacs?

StackOverflow https://stackoverflow.com/questions/86963

  •  01-07-2019
  •  | 
  •  

Pregunta

Más de una vez perdí trabajo al cerrar accidentalmente un buffer temporal en Emacs.¿Puedo configurar Emacs para que me dé una advertencia cuando elimino un búfer no asociado con un archivo?

¿Fue útil?

Solución

Cree una función que le pregunte si está seguro cuando el búfer haya sido editado y no esté asociado con un archivo.Luego agregue esa función a la lista. kill-buffer-query-functions.

Mirando la documentación para Nombre del archivo de búfer tú entiendes:

  • un buffer no visita un archivo si y solo si la variable buffer-file-name es nulo

Utilice esa información para escribir la función:

(defun maybe-kill-buffer ()
  (if (and (not buffer-file-name)
           (buffer-modified-p))
      ;; buffer is not visiting a file
      (y-or-n-p "This buffer is not visiting a file but has been edited.  Kill it anyway? ")
    t))

Y luego agregue la función al gancho así:

(add-to-list 'kill-buffer-query-functions 'maybe-kill-buffer)

Otros consejos

(defun maybe-kill-buffer ()
  (if (and (not buffer-file-name)
           (buffer-modified-p))
      ;; buffer is not visiting a file
      (y-or-n-p (format "Buffer %s has been edited.  Kill it anyway? "
                        (buffer-name)))
    t))

(add-to-list 'kill-buffer-query-functions 'maybe-kill-buffer)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top