Un paio di idee.
Per prima cosa, se ti trovi a invocare un comando come save con una frequenza sufficientemente alta, potresti prendere in considerazione un binding di tasti più breve per il comando. Per esempio, mi sono ritrovato ad avere lo stesso "twitch", quindi ora uso f2
invece di C-x C-s
per salvare le modifiche.
La funzione che associo a f2
salva incondizionatamente ogni buffer non salvato. Potresti trovarlo utile:
(defun force-save-all()
"Unconditionally saves all unsaved buffers."
(interactive)
(save-some-buffers t))
(global-set-key [f2] 'force-save-all)
Ora, sul problema principale. Si potrebbe provare qualcosa di simile (si noti che force-save-all
si chiama):
(defun my-switch-to-buffer (buffer)
(interactive (list (read-buffer "Switch to buffer: " (cadr buffer-name-history) nil)))
(force-save-all)
(switch-to-buffer buffer))
(global-set-key "\C-xb" 'my-switch-to-buffer)
Naturalmente, si potrebbe anche legare la funzionalità di buffer passaggio a un altro tasto, come un tasto funzione, in modo che sia un'operazione di una macchina da stampa.
Ho pensato che l'@seth avesse una grande idea sull'uso dei consigli, ma ho notato che il manuale ELisp suggerisce che advice not be used for key bindings. Non sono del tutto sicuro del motivo per cui questo è il caso, ma questo è ciò che il manuale suggerisce FYI.
fonte
2009-09-12 01:35:39
+1 da me ... ho dimenticato il buffer-file -name – seth
Perfetto! Grazie :) 6 anni dopo e ancora un'ottima risposta –