Add an input.insert_mode.auto_enter setting

Closes #3143
This commit is contained in:
Florian Bruhin 2018-03-07 23:45:19 +01:00
parent 9b9d7647a4
commit b9d26ee268
5 changed files with 24 additions and 4 deletions

View File

@ -54,6 +54,10 @@ Added
* `tabs.mode_on_change` which replaces `tabs.persist_mode_on_change`. It can
now be set to `restore` which remembers input modes (input/passthrough)
per tab.
* `input.insert_mode.auto_enter` which makes it possible to disable entering
insert mode automatically when an editable element was clicked. Together
with `input.forward_unbound_keys`, this should allow for emacs-like
"modeless" keybindings.
- New `:prompt-yank` command (bound to `Alt-y` by default) to yank URLs
referenced in prompts.
- The `hostblock_blame` script which was removed in v1.0 was updated for the new

View File

@ -201,6 +201,7 @@
|<<hints.uppercase,hints.uppercase>>|Make characters in hint strings uppercase.
|<<history_gap_interval,history_gap_interval>>|Maximum time (in minutes) between two history items for them to be considered being from the same browsing session.
|<<input.forward_unbound_keys,input.forward_unbound_keys>>|Which unbound keys to forward to the webview in normal mode.
|<<input.insert_mode.auto_enter,input.insert_mode.auto_enter>>|Enter insert mode if an editable element is clicked.
|<<input.insert_mode.auto_leave,input.insert_mode.auto_leave>>|Leave insert mode if a non-editable element is clicked.
|<<input.insert_mode.auto_load,input.insert_mode.auto_load>>|Automatically enter insert mode if an editable element is focused after loading the page.
|<<input.insert_mode.plugins,input.insert_mode.plugins>>|Switch to insert mode when clicking flash and other plugins.
@ -2400,6 +2401,14 @@ Valid values:
Default: +pass:[auto]+
[[input.insert_mode.auto_enter]]
=== input.insert_mode.auto_enter
Enter insert mode if an editable element is clicked.
Type: <<types,Bool>>
Default: +pass:[true]+
[[input.insert_mode.auto_leave]]
=== input.insert_mode.auto_leave
Leave insert mode if a non-editable element is clicked.

View File

@ -151,8 +151,9 @@ class MouseEventFilter(QObject):
if elem.is_editable():
log.mouse.debug("Clicked editable element!")
modeman.enter(self._tab.win_id, usertypes.KeyMode.insert,
'click', only_if_normal=True)
if config.val.input.insert_mode.auto_enter:
modeman.enter(self._tab.win_id, usertypes.KeyMode.insert,
'click', only_if_normal=True)
else:
log.mouse.debug("Clicked non-editable element!")
if config.val.input.insert_mode.auto_leave:

View File

@ -411,8 +411,9 @@ class AbstractWebElement(collections.abc.MutableMapping):
elif self.is_editable(strict=True):
log.webelem.debug("Clicking via JS focus()")
self._click_editable(click_target)
modeman.enter(self._tab.win_id, usertypes.KeyMode.insert,
'clicking input')
if config.val.input.insert_mode.auto_enter:
modeman.enter(self._tab.win_id, usertypes.KeyMode.insert,
'clicking input')
else:
self._click_fake_event(click_target)
elif click_target in [usertypes.ClickTarget.tab,

View File

@ -981,6 +981,11 @@ input.insert_mode.auto_load:
desc: Automatically enter insert mode if an editable element is focused after
loading the page.
input.insert_mode.auto_enter:
default: true
type: Bool
desc: Enter insert mode if an editable element is clicked.
input.insert_mode.auto_leave:
default: true
type: Bool