From 0a710ab18ae1a58e39dd644b4a672ee8fc70e246 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Fri, 25 Apr 2014 12:34:17 +0200 Subject: [PATCH] Herpderp, CRLF --- qutebrowser/keyinput/keyparser.py | 154 ++++++++++++------------ qutebrowser/keyinput/modeparsers.py | 180 ++++++++++++++-------------- 2 files changed, 167 insertions(+), 167 deletions(-) diff --git a/qutebrowser/keyinput/keyparser.py b/qutebrowser/keyinput/keyparser.py index 5c7e7ee7b..7de0a9ca9 100644 --- a/qutebrowser/keyinput/keyparser.py +++ b/qutebrowser/keyinput/keyparser.py @@ -1,77 +1,77 @@ -# Copyright 2014 Florian Bruhin (The Compiler) -# -# 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 . - -"""Advanced keyparsers.""" - -import logging - -from qutebrowser.keyinput._basekeyparser import BaseKeyParser -import qutebrowser.utils.message as message - -from qutebrowser.commands.managers import (CommandManager, ArgumentCountError, - NoSuchCommandError) - - -class CommandKeyParser(BaseKeyParser): - - """KeyChainParser for command bindings. - - Attributes: - commandmanager: CommandManager instance. - """ - - def __init__(self, parent=None, supports_count=None, - supports_chains=False): - super().__init__(parent, supports_count, supports_chains) - self.commandmanager = CommandManager() - - def _run_or_fill(self, cmdstr, count=None, ignore_exc=True): - """Run the command in cmdstr or fill the statusbar if args missing. - - Args: - cmdstr: The command string. - count: Optional command count. - ignore_exc: Ignore exceptions. - """ - try: - self.commandmanager.run(cmdstr, count=count, ignore_exc=ignore_exc) - except NoSuchCommandError: - pass - except ArgumentCountError: - logging.debug('Filling statusbar with partial command {}'.format( - cmdstr)) - message.set_cmd_text(':{} '.format(cmdstr)) - - def execute(self, cmdstr, _keytype, count=None): - self._run_or_fill(cmdstr, count, ignore_exc=False) - - -class PassthroughKeyParser(CommandKeyParser): - - """KeyChainParser which passes through normal keys. - - Used for insert/passthrough modes. - """ - - def __init__(self, confsect, parent=None): - """Constructor. - - Args: - confsect: The config section to use. - """ - super().__init__(parent, supports_chains=False) - self.read_config(confsect) +# Copyright 2014 Florian Bruhin (The Compiler) +# +# 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 . + +"""Advanced keyparsers.""" + +import logging + +from qutebrowser.keyinput._basekeyparser import BaseKeyParser +import qutebrowser.utils.message as message + +from qutebrowser.commands.managers import (CommandManager, ArgumentCountError, + NoSuchCommandError) + + +class CommandKeyParser(BaseKeyParser): + + """KeyChainParser for command bindings. + + Attributes: + commandmanager: CommandManager instance. + """ + + def __init__(self, parent=None, supports_count=None, + supports_chains=False): + super().__init__(parent, supports_count, supports_chains) + self.commandmanager = CommandManager() + + def _run_or_fill(self, cmdstr, count=None, ignore_exc=True): + """Run the command in cmdstr or fill the statusbar if args missing. + + Args: + cmdstr: The command string. + count: Optional command count. + ignore_exc: Ignore exceptions. + """ + try: + self.commandmanager.run(cmdstr, count=count, ignore_exc=ignore_exc) + except NoSuchCommandError: + pass + except ArgumentCountError: + logging.debug('Filling statusbar with partial command {}'.format( + cmdstr)) + message.set_cmd_text(':{} '.format(cmdstr)) + + def execute(self, cmdstr, _keytype, count=None): + self._run_or_fill(cmdstr, count, ignore_exc=False) + + +class PassthroughKeyParser(CommandKeyParser): + + """KeyChainParser which passes through normal keys. + + Used for insert/passthrough modes. + """ + + def __init__(self, confsect, parent=None): + """Constructor. + + Args: + confsect: The config section to use. + """ + super().__init__(parent, supports_chains=False) + self.read_config(confsect) diff --git a/qutebrowser/keyinput/modeparsers.py b/qutebrowser/keyinput/modeparsers.py index 709d81622..542532f1b 100644 --- a/qutebrowser/keyinput/modeparsers.py +++ b/qutebrowser/keyinput/modeparsers.py @@ -1,90 +1,90 @@ -# Copyright 2014 Florian Bruhin (The Compiler) -# -# 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 . - -"""KeyChainParser for "hint" and "normal" modes. - -Module attributes: - STARTCHARS: Possible chars for starting a commandline input. -""" - -from PyQt5.QtCore import pyqtSignal - -import qutebrowser.utils.message as message -from qutebrowser.keyinput.keyparser import CommandKeyParser - - -STARTCHARS = ":/?" - - -class NormalKeyParser(CommandKeyParser): - - """KeyParser for normalmode with added STARTCHARS detection.""" - - def __init__(self, parent=None): - super().__init__(parent, supports_count=True, supports_chains=True) - self.read_config('keybind') - - def _handle_single_key(self, e): - """Override _handle_single_key to abort if the key is a startchar. - - Args: - e: the KeyPressEvent from Qt. - - Return: - True if event has been handled, False otherwise. - """ - txt = e.text().strip() - if not self._keystring and any(txt == c for c in STARTCHARS): - message.set_cmd_text(txt) - return True - return super()._handle_single_key(e) - - -class HintKeyParser(CommandKeyParser): - - """KeyChainParser for hints. - - Signals: - fire_hint: When a hint keybinding was completed. - Arg: the keystring/hint string pressed. - """ - - fire_hint = pyqtSignal(str) - - def __init__(self, parent=None): - super().__init__(parent, supports_count=False, supports_chains=True) - self.read_config('keybind.hint') - - def execute(self, cmdstr, keytype, count=None): - """Handle a completed keychain. - - Emit: - fire_hint: Emitted if keytype is TYPE_CHAIN - """ - if keytype == self.TYPE_CHAIN: - self.fire_hint.emit(cmdstr) - else: - # execute as command - super().execute(cmdstr, keytype, count) - - def on_hint_strings_updated(self, strings): - """Handler for HintManager's hint_strings_updated. - - Args: - strings: A list of hint strings. - """ - self.bindings = {s: s for s in strings} +# Copyright 2014 Florian Bruhin (The Compiler) +# +# 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 . + +"""KeyChainParser for "hint" and "normal" modes. + +Module attributes: + STARTCHARS: Possible chars for starting a commandline input. +""" + +from PyQt5.QtCore import pyqtSignal + +import qutebrowser.utils.message as message +from qutebrowser.keyinput.keyparser import CommandKeyParser + + +STARTCHARS = ":/?" + + +class NormalKeyParser(CommandKeyParser): + + """KeyParser for normalmode with added STARTCHARS detection.""" + + def __init__(self, parent=None): + super().__init__(parent, supports_count=True, supports_chains=True) + self.read_config('keybind') + + def _handle_single_key(self, e): + """Override _handle_single_key to abort if the key is a startchar. + + Args: + e: the KeyPressEvent from Qt. + + Return: + True if event has been handled, False otherwise. + """ + txt = e.text().strip() + if not self._keystring and any(txt == c for c in STARTCHARS): + message.set_cmd_text(txt) + return True + return super()._handle_single_key(e) + + +class HintKeyParser(CommandKeyParser): + + """KeyChainParser for hints. + + Signals: + fire_hint: When a hint keybinding was completed. + Arg: the keystring/hint string pressed. + """ + + fire_hint = pyqtSignal(str) + + def __init__(self, parent=None): + super().__init__(parent, supports_count=False, supports_chains=True) + self.read_config('keybind.hint') + + def execute(self, cmdstr, keytype, count=None): + """Handle a completed keychain. + + Emit: + fire_hint: Emitted if keytype is TYPE_CHAIN + """ + if keytype == self.TYPE_CHAIN: + self.fire_hint.emit(cmdstr) + else: + # execute as command + super().execute(cmdstr, keytype, count) + + def on_hint_strings_updated(self, strings): + """Handler for HintManager's hint_strings_updated. + + Args: + strings: A list of hint strings. + """ + self.bindings = {s: s for s in strings}