Save input modes when mode_on_change=='restore'

This commit is contained in:
Marc Jauvin 2018-03-07 11:43:17 -05:00
parent 872cff2ae1
commit 5992688926

View File

@ -236,6 +236,7 @@ class ModeManager(QObject):
if mode not in self._parsers:
raise ValueError("No keyparser for mode {}".format(mode))
prompt_modes = (usertypes.KeyMode.prompt, usertypes.KeyMode.yesno)
input_modes = [usertypes.KeyMode.insert, usertypes.KeyMode.passthrough]
if self.mode == mode or (self.mode in prompt_modes and
mode in prompt_modes):
log.modes.debug("Ignoring request as we're in mode {} "
@ -249,7 +250,8 @@ class ModeManager(QObject):
return
log.modes.debug("Overriding mode {}.".format(self.mode))
self.left.emit(self.mode, mode, self._win_id)
if mode in prompt_modes:
if (mode in prompt_modes and self.mode in input_modes and
config.val.tabs.mode_on_change == 'restore'):
# save previous mode when being prompted
self._prev_mode = self.mode
else:
@ -273,6 +275,7 @@ class ModeManager(QObject):
usertypes.KeyMode.yesno, usertypes.KeyMode.prompt]:
raise cmdexc.CommandError(
"Mode {} can't be entered manually!".format(mode))
self.enter(m, 'command')
@pyqtSlot(usertypes.KeyMode, str, bool)