Supongamos que estoy ingresando un montón de texto en un búfer que no está visitando un archivo (podría ser una nueva publicación de org2blog, o simplemente un búfer de rayado). ¿Es posible guardar automáticamente en algún lugar en caso de que ocurra un desastre y Emacs muera?¿Es posible guardar automáticamente los búferes temporales que no están visitando un archivo?
Respuesta
auto-save-mode
funciona realmente con búferes que no son de archivo. Simplemente no se habilita por defecto, lo que generalmente ocurre en (after-find-file)
.
Así: Mxauto-save-mode
RET
Por defecto, el archivo de guardado automático se escribirá en el default-directory
de la memoria intermedia (o /var/tmp
o ~/
, dependiendo de los permisos de escritura; ver Chvbuffer-auto-save-file-name
RET) que puede ser un poco incomodo para descubrir después de un choque, por lo que establecer eso en algo estándar es probablemente una buena idea.
A continuación se aseguraría de que estos archivos de guardado automático se escriben en el directorio de inicio (o M-xcustomize-variable
RET RETmy-non-file-buffer-auto-save-dir
), si auto-save-mode
se invoca de forma interactiva. Es de esperar que evite esto en conflicto con cualquier otro uso de auto-save-mode
con búferes que no sean archivos (el código menciona el modo de correo, por ejemplo).
(defcustom my-non-file-buffer-auto-save-dir (expand-file-name "~/")
"Directory in which to store auto-save files for non-file buffers,
when `auto-save-mode' is invoked manually.")
(defadvice auto-save-mode (around use-my-non-file-buffer-auto-save-dir)
"Use a standard location for auto-save files for non-file buffers"
(if (and (not buffer-file-name)
(called-interactively-p 'any))
(let ((default-directory my-non-file-buffer-auto-save-dir))
ad-do-it)
ad-do-it))
(ad-activate 'auto-save-mode)
phils' answer aclarado las cosas para mí, pero terminé usando un enfoque algo diferente. Lo estoy publicando como una respuesta separada por el bien de la documentación. Aquí está mi copia de seguridad automática estrofa:
;; Put autosave files (ie #foo#) in one place
(defvar autosave-dir (concat "~/.emacs.d/autosave.1"))
(defvar autosave-dir-nonfile (concat "~/.emacs.d/autosave.nonfile"))
(make-directory autosave-dir t)
(make-directory autosave-dir-nonfile t)
(defun auto-save-file-name-p (filename) (string-match "^#.*#$" (file-name-nondirectory filename)))
(defun make-auto-save-file-name()
(if buffer-file-name (concat autosave-dir "/" "#" (file-name-nondirectory buffer-file-name) "#")
(expand-file-name (concat autosave-dir-nonfile "/" "#%"
(replace-regexp-in-string "[*]\\|/" "" (buffer-name)) "#"))))
Creación de un directorio independiente para los tampones no visitado de archivos es opcional en este contexto; también podrían ir a la ubicación centralizada (en este caso, autosave-dir
). Tenga en cuenta también que tengo que hacer una limpieza básica del nombre de archivo en caso de que el nombre del buffer temporal sea algo así como "* foo/bar *" (con estrellas y/o barras diagonales).
Por último, se puede activar automáticamente copia de seguridad automática en memorias intermedias temporales determinados modos utilizando algo así como
(add-hook 'org2blog/wp-mode-hook '(lambda() (auto-save-mode t)))
- 1. Emacs: pop-up ventana inferior para los búferes temporales
- 2. Guardar un archivo y crear directorios automáticamente
- 3. No necesito guardar. ¿Cómo mantener los búferes de Emacs sincronizados con los archivos?
- 4. Guardar archivo XML en AS3 es posible
- 5. ¿Es posible crear un archivo que no se puede copiar?
- 6. Flex 4: ¿Es posible tener un BorderContainer que se ajuste automáticamente a los contenidos que contiene?
- 7. ¿Cómo eliminar los archivos temporales automáticamente en ruby-rails?
- 8. ¿Es posible tomar un parámetro por referencia constante, mientras se prohíben las conversiones para que no se pasen los temporales?
- 9. emacs ver búferes abiertos como un árbol
- 10. XCode Guardar automáticamente?
- 11. ¿Es posible serializar automáticamente un objeto C++?
- 12. ¿Cómo guardar automáticamente un archivo cada 1 segundo en vim?
- 13. firebug: ¿es posible guardar la salida en el archivo?
- 14. ImageMagick dejando atrás los archivos temporales: ¿esto es por diseño o deberían eliminarse automáticamente?
- 15. ¿Es posible verificar si los servicios de localización están activos?
- 16. PHP: ¿Es posible obtener automáticamente todos los datos POST?
- 17. ¿Es posible decirle a Visual Studio que no trate un archivo fuente como un "componente"?
- 18. ¿Cómo hacer que Emacs actualice automáticamente todos los búferes cuando los archivos han cambiado en el disco?
- 19. guardar y compilar automáticamente
- 20. ¿Es posible tener tablas temporales en una función?
- 21. ¿Es posible importar un archivo MX sin evaluar los contenidos?
- 22. ¿Es posible crear un script para guardar y restaurar permisos?
- 23. ¿Es posible ejecutar apio automáticamente al inicio?
- 24. ¿Cómo debo guardar un archivo en OpenOffice para que no sea un archivo binario en Subversion?
- 25. ¿Es posible guardar un PDF modificado usando MuPDF?
- 26. ¿Es posible guardar un ensamblaje dinámico en el disco?
- 27. Script que no responde: ¿es posible evitarlo?
- 28. ¿Es posible guardar un Tipo (usando "typeof()") en una enumeración?
- 29. carpeta asociada al guardar un archivo html
- 30. ¿Cómo guardar automáticamente el archivo del proyecto después de incluir un nuevo archivo en Visual Studio?
gran información. Auto-save-mode ha sido un poco misterioso, ya que es muy discreto (lo cual es algo bueno). En lugar del defadvice, utilicé make-auto-save-file-name para controlar dónde se guardan los buffers. –