È possibile configurare Emacs, in modo che salvi tutti i file quando la finestra di emacs perde lo stato attivo di ?Come salvare automaticamente i file su perdere focus in Emacs
risposta
Io lo uso, funzionerà solo se emacs è in esecuzione in X (come probabilmente sarebbe in qualcosa come Ubuntu).
(when
(and (featurep 'x) window-system)
(defvar on-blur--saved-window-id 0 "Last known focused window.")
(defvar on-blur--timer nil "Timer refreshing known focused window.")
(defun on-blur--refresh()
"Runs on-blur-hook if emacs has lost focus."
(let* ((active-window (x-window-property
"_NET_ACTIVE_WINDOW" nil "WINDOW" 0 nil t))
(active-window-id (if (numberp active-window)
active-window
(string-to-number
(format "%x00%x"
(car active-window)
(cdr active-window)) 16)))
(emacs-window-id (string-to-number
(frame-parameter nil 'outer-window-id))))
(when (and
(= emacs-window-id on-blur--saved-window-id)
(not (= active-window-id on-blur--saved-window-id)))
(run-hooks 'on-blur-hook))
(setq on-blur--saved-window-id active-window-id)
(run-with-timer 1 nil 'on-blur--refresh)))
(add-hook 'on-blur-hook #'(lambda() (save-some-buffers t)))
(on-blur--refresh))
Non so se questo è quello che vuoi.
(defun dld-deselect-frame-hook()
(save-some-buffers 1))
(add-hook 'deselect-frame-hook 'dld-deselect-frame-hook)
Da: http://www.dribin.org/dave/blog/archives/2003/09/10/emacs/
EDIT: sembra solo a lavorare in XEmacs
Sì, ho cercato tutti gli "stronzi" e le "funzioni", ma non ho trovato qualcosa che dicesse selezionare o mettere a fuoco. – Rockiger
È possibile utilizzare `auto-save-intervallo' per salvare ogni n caratteri digitati. Il mio è impostato su 100. Quindi circa ogni 2-3 righe di codice, forse?
auto-save-interval è una variabile definita in `codice sorgente C '. Il suo valore è 100
Documentazione: * Numero di eventi di input tra i salvataggi automatici. Zero significa disabilitare il salvataggio automatico a causa del numero di caratteri digitato.
È possibile personalizzare questa variabile.
Questo non risponde alla domanda originale; è solo un modo per ottenere qualcosa di simile.
Lo so, la funzione di cui sto parlando è di Scribes. È molto conveniente quando si modifica html e simili, non è necessario premere C-x C-s, basta cambiare la finestra e controllare il browser. – Rockiger
[...] la funzione di cui sto parlando è da Scribes. È molto conveniente quando si modifica l'html e simili, non è necessario premere C-x C-s, si basta cambiare la finestra e controllare il tuo browser .
In questo caso, invece di passare alla applicazione browser, ordina Emacs per caricare l'applicazione browser (C-c C-v
o M-x browse-url-of-buffer
). Con questo metodo, è possibile scrivere la propria funzione che salva il buffer e quindi porta il browser su, come:
(defun my-browse-url-of-buffer()
"Save current buffer and view its content in browser."
(interactive)
(save-buffer)
(browse-url-of-buffer))
e agganciarlo ad una vantaggiosa vincolante.
Oppure è ancora possibile utilizzare lo html-autoview-mode
che ogni volta che si salva il buffer, carica automaticamente il file nel browser preferito.
Sembra una soluzione interessante. Ci proverò. Ma sono ancora un po 'sorpreso, che Emacs non possa reagire a qualcosa come cambiare messa a fuoco. – Rockiger
@Rockiger sembra che Emacs non fornisca un modo per agganciare l'evento unfocus. –
Ho aggiunto hook di messa a fuoco su Gnu Emacs 24.4.
Si chiamano focus-in-hook
e focus-out-hook
.
È possibile aggiungere
(defun save-all()
(interactive)
(save-some-buffers t))
(add-hook 'focus-out-hook 'save-all)
al file .emacs e dovrebbe salvare tutti i file sulla perdita di messa a fuoco.
Un liner: '(add-hook 'focus-out-hook (lambda() (interattivo) (save-some-buffer t)))' –
The i documenti sembrano implicare che la tua prima nota non si applica più - è vero? Dopo un rapido test, sembra che 'focus-out-hook' non venga eseguito quando il gestore delle finestre cambia focus tra i frame emacs (che provengono dalla stessa istanza di emacs). Forse l'aggiunta di 'handle-switch-frame' ha alterato il comportamento che hai descritto? – ohspite
@ohspite Sembra che tu abbia ragione. Grazie per l'aggiornamento. – bonkydog
- 1. Come salvare i file su un iPhone?
- 2. Come salvare automaticamente in XE2?
- 3. Come aprire i file automaticamente all'avvio di emacs?
- 4. Come salvare Emacs in più posizioni?
- 5. come ottenere focus-follows-mouse sui buffer in emacs?
- 6. Non ho bisogno di salvare. Come mantenere i buffer di Emacs sincronizzati con i file?
- 7. Salvare i file aperti (sessione) in NetBeans
- 8. Il file atomico salva su Linux senza perdere i metadati
- 9. emacs dà avvertimento quando si tenta di salvare i file su sshfs
- 10. come fare clic automaticamente su "vuoi aprire o salvare?"
- 11. Come salvare un elenco di tutti i pacchetti installati in Emacs 24?
- 12. Emacs salva automaticamente sul buffer di commutazione
- 13. È possibile salvare automaticamente i buffer temporanei che non stanno visitando un file?
- 14. Come far ricaricare automaticamente il file TAGS da Emacs?
- 15. Come salvare i caratteri cinesi su file con java?
- 16. Vim salvare quindi effettuare automaticamente?
- 17. come ignorare automaticamente i file in grep
- 18. Spostamento di elementi HTML contenenti contentEditable su un altro ramo in dom senza perdere il focus
- 19. Posso seguire automaticamente un file di intestazione in Emacs?
- 20. Come salvare l'oggetto SimpleXML modificato su file?
- 21. Ripristina senza perdere i file già impegnati
- 22. jQuery - Focus su TR
- 23. Come fa vim salvare i file?
- 24. Come posso salvare un file su MongoDB?
- 25. Chrome: Come salvare un file su disco
- 26. Come salvare UIImage su file con NSFileManager?
- 27. come stampare automaticamente i file tiff
- 28. Suggerimenti su come salvare i dati
- 29. Salvare i file .dta in python
- 30. Come salvare i cookie HtmlUnit in un file?
Funziona su Ubuntu come pubblicizzato e non richiede che Emacs sia al centro del proprio flusso di lavoro. –
Questo è assolutamente fantastico, finalmente la soluzione al problema e nessuna soluzione alternativa. – Rockiger
Credo che la stringa di formato corretta dovrebbe essere "% x% 04x" - per me (Ubuntu 12.04) i frame Emacs secondari hanno ID che non funzionano con il tuo hook. (Basandosi solo su esperimenti, non è stato possibile trovare alcuna documentazione al riguardo.) – volferine