Я не знаю ни одной настройки или пакета, чтобы делать то, что вы хотите.Он не предоставляется самой viper.
Тем не менее, вы можете написать совет , который сделает эту работу.Ключевым моментом является то, что вам нужно посоветовать все способы переключения буферов / окон.Например, если вы переключаете окна с помощью команды other-window
( Cx o ), вам понадобится следующее:
(defadvice other-window (around other-window-maintain-viper-state activate
activate)
"when switching windows, pull the viper-current-state along"
(let ((old-window-state viper-current-state))
ad-do-it
(viper-change-state old-window-state)))
Но переключение окон с помощью мыши не происходитчерез эту функцию, и чтобы заставить это работать, вы должны сообщить select-window
точно таким же образом:
(defadvice select-window (around select-window-maintain-viper-state activate
activate)
"when switching windows, pull the viper-current-state along"
(let ((old-window-state viper-current-state))
ad-do-it
(viper-change-state old-window-state)))
Если вы обнаружите, что используете другой механизм для переключения окон / буферов, который не используетвыше, просто нужно немного покопаться ( Mx description-key ), чтобы узнать, что нового вы должны посоветовать.