Supponiamo di inserire un gruppo di testo in un buffer che non sta visitando un file (potrebbe essere un nuovo post di org2blog o solo un buffer di lavoro). È possibile salvarlo automaticamente da qualche parte nel caso in cui un disastro colpisca ed Emacs muore?È possibile salvare automaticamente i buffer temporanei che non stanno visitando un file?
risposta
auto-save-mode
funziona in realtà con buffer non file. Semplicemente non viene abilitato di default - che di solito accade in (after-find-file)
.
Quindi: Mxauto-save-mode
RET
Per impostazione predefinita il file di salvataggio automatico verrà scritto il default-directory
del buffer (o /var/tmp
o ~/
, a seconda delle autorizzazioni di scrittura; vedere Chvbuffer-auto-save-file-name
RET), che potrebbe essere un po 'difficile da capire dopo un incidente, quindi impostarlo su qualcosa di standard è probabilmente una buona idea.
Di seguito garantirebbe che questi file di salvataggio automatico vengono scritti vostra home directory (o M-xcustomize-variable
RETmy-non-file-buffer-auto-save-dir
RET), se auto-save-mode
viene richiamato in modo interattivo. Speriamo di evitare questo conflitto con altri usi di auto-save-mode
con buffer non file (il codice menziona la modalità Mail, per esempio).
(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 chiarito le cose per me, ma ho finito per usare un approccio un po 'diverso. Sto postandolo come una risposta separata per motivi di documentazione. Ecco la mia stanza di salvataggio automatico:
;; 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)) "#"))))
Creazione di una directory separata per i buffer di file non visitati è facoltativa in questo contesto; potevano anche andare nella posizione centralizzata (in questo caso, autosave-dir
). Nota anche che devo fare una pulizia di base del nome del file nel caso in cui il nome del buffer temporaneo sia qualcosa come "* foo/bar *" (con stelle e/o barre).
Infine, si può accendere automaticamente il salvataggio automatico in buffer temporanei certe modalita con qualcosa di simile
(add-hook 'org2blog/wp-mode-hook '(lambda() (auto-save-mode t)))
- 1. Come eliminare automaticamente i file temporanei in ruby-rails?
- 2. È possibile salvare i file MySQL Workbench come semplice XML?
- 3. Non ho bisogno di salvare. Come mantenere i buffer di Emacs sincronizzati con i file?
- 4. Dove è il posto migliore per salvare i file temporanei in Windows
- 5. Come salvare automaticamente i file su perdere focus in Emacs
- 6. ImageMagick lascia i file temporanei - è questo di progettazione o dovrebbero essere cancellati automaticamente?
- 7. firebug: è possibile salvare l'output su file?
- 8. È possibile salvare lo stato dell'interprete Python in un file?
- 9. Come gestire i file temporanei in ASP.NET?
- 10. È possibile sincronizzare automaticamente i fork in gitHub?
- 11. PHP non riconoscerà i propri file temporanei caricati
- 12. Dove scrivere i miei file temporanei?
- 13. Emacs salva automaticamente sul buffer di commutazione
- 14. file temporanei autotools
- 15. È necessario salvare e riattivare UIImages utilizzando il buffer
- 16. array Python stanno copiando automaticamente l'altro
- 17. È possibile salvare ActionDispatch :: Session :: SessionRestoreError?
- 18. File temporanei in .Net
- 19. Vim salvare quindi effettuare automaticamente?
- 20. È possibile completare automaticamente un EditTextPreference?
- 21. È possibile serializzare automaticamente un oggetto C++?
- 22. Come salvare i file su un iPhone?
- 23. È possibile utilizzare Boost.Format con un buffer preallocato?
- 24. Gli ottimizzatori spostano i tipi temporanei non POD dai loop?
- 25. È possibile salvare oggetti persistenti nel file system
- 26. Che cosa è un modo di leggere le pagine man in vim senza usare file temporanei
- 27. È possibile salvare il file XML in AS3
- 28. È possibile che la bussola unisca i file .css?
- 29. è possibile non respingere un
- 30. Come salvare automaticamente in XE2?
Grande informazioni. La modalità di salvataggio automatico è stata un po 'misteriosa, dal momento che è così discreta (che è una buona cosa). Invece di defadvice, ho usato make-auto-save-file-name per controllare dove sono salvati i buffer. –