Me gustaría saber si es posible que el búfer se guarde en el momento exacto de modificación; en el instante del evento key up.
Me gustaría saber si es posible que el búfer se guarde en el momento exacto de modificación; en el instante del evento key up.
Respuestas:
(defun my-instant-save-buffer (eins zwei drei)
"To be hooked into list `after-change-functions'
`after-change-functions' expects functions receiving three arguments.
Arguments are ignored here, but slots needed by add-hook"
(save-buffer))
(add-hook 'after-change-functions 'my-instant-save-buffer)
Tenía el mismo requisito y la función de guardado automático de emacs no me ha funcionado bien porque no se puede utilizar las funciones de c. Entonces, escribí un paquete real-auto-save para eso. Está disponible en melpa.
Puedes instalarlo por
M-x package-install RET real-auto-save
y en tu configuración puedes agregar
(require 'real-auto-save)
(add-hook 'prog-mode-hook 'real-auto-save-mode)
(setq real-auto-save-interval 1) ;; in seconds
Después de cada segundo, si se modifica su búfer, se guardará automáticamente.
Si desea guardar específicamente después del evento key up, puede escribir una función lisp para eso.
Puede habilitar auto-save-mode
, por lo que Emacs guarda automáticamente su búfer actual en un archivo diferente. Luego, agregue esta función para auto-save-hook
también escribirla directamente en el archivo real que está editando:
(defun save-buffer-if-visiting-file (&optional args)
"Save the current buffer only if it is visiting a file"
(interactive)
(if (and (buffer-file-name) (buffer-modified-p))
(save-buffer args)))
(add-hook 'auto-save-hook 'save-buffer-if-visiting-file)
De acuerdo con el manual de Emacs sobre el control de guardado automático :
La variable intervalo de guardado automático especifica cuántos caracteres hay entre los guardados automáticos. Por defecto, es 300. Emacs no acepta valores que sean demasiado pequeños: si personaliza el intervalo de guardado automático a un valor inferior a 20, Emacs se comportará como si el valor fuera 20.
Entonces, si desea que Emacs guarde para cada pulsación de tecla, cambie auto-save-interval
a 1
:
(setq auto-save-interval 1)