start-up – Emacs desktop-save-mode: solo guarde el escritorio cuando el escritorio anterior se restauró por completo

Pregunta:

Tengo lo siguiente en mi .emacs :

(desktop-save-mode 1)
(setq desktop-restore-eager 10)
(setq desktop-save t)

A menudo tengo muchos búferes abiertos (100 más o menos), entonces esto realmente ayuda, ya que emacs está cargando búferes solo cuando no está ocupado con otra cosa.

Ahora, a veces sucede lo siguiente: cierro emacs antes de querer apagar mi computadora portátil. Entonces me doy cuenta de que necesito editar un archivo más rápidamente, así que abro emacs nuevamente, realizo la edición y luego lo cierro. Si esto sucede en un corto período de tiempo, entonces el desktop-save-mode no pudo restaurar todos los búferes guardados previamente. En este caso, cuando vuelvo a cerrar emacs, solo se guardan los búferes que se restauraron y se pierde el estado anterior al cierre inicial.

¿Hay alguna manera de hacer que el desktop-save del desktop-save solo ocurra, si el escritorio guardado anteriormente se ha restaurado por completo?

Respuesta:

Hay un gancho que puede usar: desktop-after-read-hook . Agregue una función para establecer una variable después de que se restaure el estado del escritorio. Usando defadvice alrededor de desktop-save , verifique si la variable está configurada antes de guardar el estado.

Estoy en Emacs 25.3.1, y este es el código que usé:

(defvar *my-desktop-save* nil
  "Should I save the desktop when Emacs is shutting down?")

(add-hook 'desktop-after-read-hook
          (lambda () (setq *my-desktop-save* t)))

(advice-add 'desktop-save :around
            (lambda (fn &rest args)
              (if (bound-and-true-p *my-desktop-save*)
                  (apply fn args))))

.emacs a su .emacs y reinícielo.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım