Пара идей.
Во-первых, если вы обнаружите, что вызываете такую команду, как save, с достаточно высокой частотой, вы можете рассмотреть более короткую привязку клавиш для этой команды. Например, я также обнаружил, что у меня та же «дрожь», поэтому теперь я использую f2
вместо C-x C-s
для сохранения правок.
Функция, которую я связываю с f2
, сохраняет каждый несохраненный буфер безоговорочно. Вы можете найти это полезным:
(defun force-save-all ()
"Unconditionally saves all unsaved buffers."
(interactive)
(save-some-buffers t))
(global-set-key [f2] 'force-save-all)
Теперь перейдем к основному вопросу. Вы можете попробовать что-то вроде этого (обратите внимание, что force-save-all
называется):
(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)
Конечно, вы также можете привязать функциональность буфера переключателя к другой клавише, например, к функциональной клавише, так что это операция одним нажатием.
Я думал, что у @ seth была отличная идея по использованию совета, но я заметил, что руководство ELisp предлагает, чтобы совет не использовался для привязок клавиш . Я не совсем уверен, почему это так, но это то, что руководство предлагает к сведению.