Implement command-accept --rapid.
command-accept --rapid will run the command without clearing the prompt, allowing "rapid fire" commands. For example, one could open completion for `open -t` and open several tabs in a row. The default binding is ctrl+enter. Resolves #588.
This commit is contained in:
parent
0a612db733
commit
12112e0fc7
@ -2307,6 +2307,7 @@ bindings.default:
|
|||||||
<Ctrl-C>: completion-item-yank
|
<Ctrl-C>: completion-item-yank
|
||||||
<Ctrl-Shift-C>: completion-item-yank --sel
|
<Ctrl-Shift-C>: completion-item-yank --sel
|
||||||
<Return>: command-accept
|
<Return>: command-accept
|
||||||
|
<Ctrl-Return>: command-accept --rapid
|
||||||
<Ctrl-B>: rl-backward-char
|
<Ctrl-B>: rl-backward-char
|
||||||
<Ctrl-F>: rl-forward-char
|
<Ctrl-F>: rl-forward-char
|
||||||
<Alt-B>: rl-backward-word
|
<Alt-B>: rl-backward-word
|
||||||
|
@ -156,8 +156,12 @@ class Command(misc.MinimalLineEditMixin, misc.CommandLineEdit):
|
|||||||
|
|
||||||
@cmdutils.register(instance='status-command',
|
@cmdutils.register(instance='status-command',
|
||||||
modes=[usertypes.KeyMode.command], scope='window')
|
modes=[usertypes.KeyMode.command], scope='window')
|
||||||
def command_accept(self):
|
def command_accept(self, rapid=False):
|
||||||
"""Execute the command currently in the commandline."""
|
"""Execute the command currently in the commandline.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
rapid: Run the command without closing or clearing the command bar.
|
||||||
|
"""
|
||||||
prefixes = {
|
prefixes = {
|
||||||
':': '',
|
':': '',
|
||||||
'/': 'search -- ',
|
'/': 'search -- ',
|
||||||
@ -165,7 +169,9 @@ class Command(misc.MinimalLineEditMixin, misc.CommandLineEdit):
|
|||||||
}
|
}
|
||||||
text = self.text()
|
text = self.text()
|
||||||
self.history.append(text)
|
self.history.append(text)
|
||||||
modeman.leave(self._win_id, usertypes.KeyMode.command, 'cmd accept')
|
if not rapid:
|
||||||
|
modeman.leave(self._win_id, usertypes.KeyMode.command,
|
||||||
|
'cmd accept')
|
||||||
self.got_cmd[str].emit(prefixes[text[0]] + text[1:])
|
self.got_cmd[str].emit(prefixes[text[0]] + text[1:])
|
||||||
|
|
||||||
@cmdutils.register(instance='status-command', scope='window')
|
@cmdutils.register(instance='status-command', scope='window')
|
||||||
|
@ -9,6 +9,13 @@ Feature: Various utility commands.
|
|||||||
And I run :command-accept
|
And I run :command-accept
|
||||||
Then the message "Hello World" should be shown
|
Then the message "Hello World" should be shown
|
||||||
|
|
||||||
|
Scenario: :set-cmd-text and :command-accept --rapid
|
||||||
|
When I run :set-cmd-text :message-info "Hello World"
|
||||||
|
And I run :command-accept --rapid
|
||||||
|
And I run :command-accept
|
||||||
|
Then the message "Hello World" should be shown
|
||||||
|
And the message "Hello World" should be shown
|
||||||
|
|
||||||
Scenario: :set-cmd-text with two commands
|
Scenario: :set-cmd-text with two commands
|
||||||
When I run :set-cmd-text :message-info test ;; message-error error
|
When I run :set-cmd-text :message-info test ;; message-error error
|
||||||
And I run :command-accept
|
And I run :command-accept
|
||||||
|
Loading…
Reference in New Issue
Block a user