keyinput: Merge keyparser into modeparsers
This commit is contained in:
parent
63d23ca9df
commit
0cd73af691
@ -1,74 +0,0 @@
|
|||||||
# vim: ft=python fileencoding=utf-8 sts=4 sw=4 et:
|
|
||||||
|
|
||||||
# Copyright 2014-2018 Florian Bruhin (The Compiler) <mail@qutebrowser.org>
|
|
||||||
#
|
|
||||||
# This file is part of qutebrowser.
|
|
||||||
#
|
|
||||||
# qutebrowser is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# qutebrowser is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with qutebrowser. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
"""Advanced keyparsers."""
|
|
||||||
|
|
||||||
import traceback
|
|
||||||
|
|
||||||
from qutebrowser.keyinput.basekeyparser import BaseKeyParser
|
|
||||||
from qutebrowser.utils import message, utils
|
|
||||||
from qutebrowser.commands import runners, cmdexc
|
|
||||||
|
|
||||||
|
|
||||||
class CommandKeyParser(BaseKeyParser):
|
|
||||||
|
|
||||||
"""KeyChainParser for command bindings.
|
|
||||||
|
|
||||||
Attributes:
|
|
||||||
_commandrunner: CommandRunner instance.
|
|
||||||
"""
|
|
||||||
|
|
||||||
def __init__(self, win_id, parent=None, supports_count=None):
|
|
||||||
super().__init__(win_id, parent, supports_count)
|
|
||||||
self._commandrunner = runners.CommandRunner(win_id)
|
|
||||||
|
|
||||||
def execute(self, cmdstr, count=None):
|
|
||||||
try:
|
|
||||||
self._commandrunner.run(cmdstr, count)
|
|
||||||
except cmdexc.Error as e:
|
|
||||||
message.error(str(e), stack=traceback.format_exc())
|
|
||||||
|
|
||||||
|
|
||||||
class PassthroughKeyParser(CommandKeyParser):
|
|
||||||
|
|
||||||
"""KeyChainParser which passes through normal keys.
|
|
||||||
|
|
||||||
Used for insert/passthrough modes.
|
|
||||||
|
|
||||||
Attributes:
|
|
||||||
_mode: The mode this keyparser is for.
|
|
||||||
"""
|
|
||||||
|
|
||||||
do_log = False
|
|
||||||
passthrough = True
|
|
||||||
|
|
||||||
def __init__(self, win_id, mode, parent=None):
|
|
||||||
"""Constructor.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
mode: The mode this keyparser is for.
|
|
||||||
parent: Qt parent.
|
|
||||||
warn: Whether to warn if an ignored key was bound.
|
|
||||||
"""
|
|
||||||
super().__init__(win_id, parent)
|
|
||||||
self._read_config(mode)
|
|
||||||
self._mode = mode
|
|
||||||
|
|
||||||
def __repr__(self):
|
|
||||||
return utils.get_repr(self, mode=self._mode)
|
|
@ -25,7 +25,7 @@ import attr
|
|||||||
from PyQt5.QtCore import pyqtSlot, pyqtSignal, Qt, QObject, QEvent
|
from PyQt5.QtCore import pyqtSlot, pyqtSignal, Qt, QObject, QEvent
|
||||||
from PyQt5.QtWidgets import QApplication
|
from PyQt5.QtWidgets import QApplication
|
||||||
|
|
||||||
from qutebrowser.keyinput import modeparsers, keyparser
|
from qutebrowser.keyinput import modeparsers
|
||||||
from qutebrowser.config import config
|
from qutebrowser.config import config
|
||||||
from qutebrowser.commands import cmdexc, cmdutils
|
from qutebrowser.commands import cmdexc, cmdutils
|
||||||
from qutebrowser.utils import usertypes, log, objreg, utils
|
from qutebrowser.utils import usertypes, log, objreg, utils
|
||||||
@ -67,11 +67,11 @@ def init(win_id, parent):
|
|||||||
keyparsers = {
|
keyparsers = {
|
||||||
KM.normal: modeparsers.NormalKeyParser(win_id, modeman),
|
KM.normal: modeparsers.NormalKeyParser(win_id, modeman),
|
||||||
KM.hint: modeparsers.HintKeyParser(win_id, modeman),
|
KM.hint: modeparsers.HintKeyParser(win_id, modeman),
|
||||||
KM.insert: keyparser.PassthroughKeyParser(win_id, 'insert', modeman),
|
KM.insert: modeparsers.PassthroughKeyParser(win_id, 'insert', modeman),
|
||||||
KM.passthrough: keyparser.PassthroughKeyParser(win_id, 'passthrough',
|
KM.passthrough: modeparsers.PassthroughKeyParser(win_id, 'passthrough',
|
||||||
modeman),
|
modeman),
|
||||||
KM.command: keyparser.PassthroughKeyParser(win_id, 'command', modeman),
|
KM.command: modeparsers.PassthroughKeyParser(win_id, 'command', modeman),
|
||||||
KM.prompt: keyparser.PassthroughKeyParser(win_id, 'prompt', modeman),
|
KM.prompt: modeparsers.PassthroughKeyParser(win_id, 'prompt', modeman),
|
||||||
KM.yesno: modeparsers.PromptKeyParser(win_id, modeman),
|
KM.yesno: modeparsers.PromptKeyParser(win_id, modeman),
|
||||||
KM.caret: modeparsers.CaretKeyParser(win_id, modeman),
|
KM.caret: modeparsers.CaretKeyParser(win_id, modeman),
|
||||||
KM.set_mark: modeparsers.RegisterKeyParser(win_id, KM.set_mark,
|
KM.set_mark: modeparsers.RegisterKeyParser(win_id, KM.set_mark,
|
||||||
|
@ -29,9 +29,9 @@ import enum
|
|||||||
from PyQt5.QtCore import pyqtSlot, Qt
|
from PyQt5.QtCore import pyqtSlot, Qt
|
||||||
from PyQt5.QtGui import QKeySequence
|
from PyQt5.QtGui import QKeySequence
|
||||||
|
|
||||||
from qutebrowser.commands import cmdexc
|
from qutebrowser.commands import runners, cmdexc
|
||||||
from qutebrowser.config import config
|
from qutebrowser.config import config
|
||||||
from qutebrowser.keyinput import keyparser, keyutils
|
from qutebrowser.keyinput import basekeyparser, keyutils
|
||||||
from qutebrowser.utils import usertypes, log, message, objreg, utils
|
from qutebrowser.utils import usertypes, log, message, objreg, utils
|
||||||
|
|
||||||
|
|
||||||
@ -39,7 +39,26 @@ STARTCHARS = ":/?"
|
|||||||
LastPress = enum.Enum('LastPress', ['none', 'filtertext', 'keystring'])
|
LastPress = enum.Enum('LastPress', ['none', 'filtertext', 'keystring'])
|
||||||
|
|
||||||
|
|
||||||
class NormalKeyParser(keyparser.CommandKeyParser):
|
class CommandKeyParser(basekeyparser.BaseKeyParser):
|
||||||
|
|
||||||
|
"""KeyChainParser for command bindings.
|
||||||
|
|
||||||
|
Attributes:
|
||||||
|
_commandrunner: CommandRunner instance.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, win_id, parent=None, supports_count=None):
|
||||||
|
super().__init__(win_id, parent, supports_count)
|
||||||
|
self._commandrunner = runners.CommandRunner(win_id)
|
||||||
|
|
||||||
|
def execute(self, cmdstr, count=None):
|
||||||
|
try:
|
||||||
|
self._commandrunner.run(cmdstr, count)
|
||||||
|
except cmdexc.Error as e:
|
||||||
|
message.error(str(e), stack=traceback.format_exc())
|
||||||
|
|
||||||
|
|
||||||
|
class NormalKeyParser(CommandKeyParser):
|
||||||
|
|
||||||
"""KeyParser for normal mode with added STARTCHARS detection and more.
|
"""KeyParser for normal mode with added STARTCHARS detection and more.
|
||||||
|
|
||||||
@ -127,7 +146,36 @@ class NormalKeyParser(keyparser.CommandKeyParser):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class PromptKeyParser(keyparser.CommandKeyParser):
|
class PassthroughKeyParser(CommandKeyParser):
|
||||||
|
|
||||||
|
"""KeyChainParser which passes through normal keys.
|
||||||
|
|
||||||
|
Used for insert/passthrough modes.
|
||||||
|
|
||||||
|
Attributes:
|
||||||
|
_mode: The mode this keyparser is for.
|
||||||
|
"""
|
||||||
|
|
||||||
|
do_log = False
|
||||||
|
passthrough = True
|
||||||
|
|
||||||
|
def __init__(self, win_id, mode, parent=None):
|
||||||
|
"""Constructor.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
mode: The mode this keyparser is for.
|
||||||
|
parent: Qt parent.
|
||||||
|
warn: Whether to warn if an ignored key was bound.
|
||||||
|
"""
|
||||||
|
super().__init__(win_id, parent)
|
||||||
|
self._read_config(mode)
|
||||||
|
self._mode = mode
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return utils.get_repr(self, mode=self._mode)
|
||||||
|
|
||||||
|
|
||||||
|
class PromptKeyParser(CommandKeyParser):
|
||||||
|
|
||||||
"""KeyParser for yes/no prompts."""
|
"""KeyParser for yes/no prompts."""
|
||||||
|
|
||||||
@ -139,7 +187,7 @@ class PromptKeyParser(keyparser.CommandKeyParser):
|
|||||||
return utils.get_repr(self)
|
return utils.get_repr(self)
|
||||||
|
|
||||||
|
|
||||||
class HintKeyParser(keyparser.CommandKeyParser):
|
class HintKeyParser(CommandKeyParser):
|
||||||
|
|
||||||
"""KeyChainParser for hints.
|
"""KeyChainParser for hints.
|
||||||
|
|
||||||
@ -249,7 +297,7 @@ class HintKeyParser(keyparser.CommandKeyParser):
|
|||||||
hintmanager.handle_partial_key(keystr)
|
hintmanager.handle_partial_key(keystr)
|
||||||
|
|
||||||
|
|
||||||
class CaretKeyParser(keyparser.CommandKeyParser):
|
class CaretKeyParser(CommandKeyParser):
|
||||||
|
|
||||||
"""KeyParser for caret mode."""
|
"""KeyParser for caret mode."""
|
||||||
|
|
||||||
@ -260,7 +308,7 @@ class CaretKeyParser(keyparser.CommandKeyParser):
|
|||||||
self._read_config('caret')
|
self._read_config('caret')
|
||||||
|
|
||||||
|
|
||||||
class RegisterKeyParser(keyparser.CommandKeyParser):
|
class RegisterKeyParser(CommandKeyParser):
|
||||||
|
|
||||||
"""KeyParser for modes that record a register key.
|
"""KeyParser for modes that record a register key.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user