Add debug argument for commands

This commit is contained in:
Florian Bruhin 2014-06-16 09:44:11 +02:00
parent d97823615a
commit d76226626f
5 changed files with 23 additions and 15 deletions

View File

@ -78,8 +78,8 @@ class Application(QApplication):
networkmanager: The global NetworkManager instance.
cookiejar: The global CookieJar instance.
rl_bridge: The ReadlineBridge being used.
args: ArgumentParser instance.
_keyparsers: A mapping from modes to keyparsers.
_args: ArgumentParser instance.
_timers: List of used QTimers so they don't get GCed.
_shutting_down: True if we're currently shutting down.
_quit_status: The current quitting status.
@ -121,7 +121,7 @@ class Application(QApplication):
sys.excepthook = self._exception_hook
self._args = args
self.args = args
self._init_misc()
actute_warning()
self._init_config()
@ -155,12 +155,12 @@ class Application(QApplication):
def _init_config(self):
"""Inizialize and read the config."""
if self._args.confdir is None:
if self.args.confdir is None:
confdir = get_standard_dir(QStandardPaths.ConfigLocation)
elif self._args.confdir == '':
elif self.args.confdir == '':
confdir = None
else:
confdir = self._args.confdir
confdir = self.args.confdir
try:
self.config = ConfigManager(confdir, 'qutebrowser.conf')
except (config.ValidationError,
@ -210,7 +210,7 @@ class Application(QApplication):
def _init_misc(self):
"""Initialize misc things."""
if self._args.version:
if self.args.version:
print(version.version())
print()
print()
@ -285,7 +285,7 @@ class Application(QApplication):
self.processEvents(QEventLoop.ExcludeUserInputEvents |
QEventLoop.ExcludeSocketNotifiers)
for e in self._args.command:
for e in self.args.command:
if e.startswith(':'):
log.init.debug("Startup cmd {}".format(e))
self.commandmanager.run_safely_init(e.lstrip(':'))
@ -516,7 +516,7 @@ class Application(QApplication):
# if shutdown:
# self.shutdown()
@cmdutils.register(instance='', split=False)
@cmdutils.register(instance='', split=False, debug=True)
def pyeval(self, s):
"""Evaluate a python string and display the results as a webpage.
@ -602,7 +602,7 @@ class Application(QApplication):
self.quit()
@cmdutils.register(hide=True)
@cmdutils.register(debug=True)
def crash(typ='exception'):
"""Crash for debugging purposes.

View File

@ -42,6 +42,7 @@ class Command:
handler: The handler function to call.
completion: Completions to use for arguments, as a list of strings.
needs_js: Whether the command needs javascript enabled
debug: Whether this is a debugging command (only shown with --debug).
"""
# TODO:
@ -49,7 +50,7 @@ class Command:
# this might be combined with help texts or so as well
def __init__(self, name, split, hide, nargs, count, desc, instance,
handler, completion, modes, not_modes, needs_js):
handler, completion, modes, not_modes, needs_js, debug):
# I really don't know how to solve this in a better way, I tried.
# pylint: disable=too-many-arguments
super().__init__()
@ -65,6 +66,7 @@ class Command:
self.modes = modes
self.not_modes = not_modes
self.needs_js = needs_js
self.debug = debug
def check(self, args):
"""Check if the argument count is valid and the command is permitted.

View File

@ -104,11 +104,12 @@ class register: # pylint: disable=invalid-name
strings.
modes/not_modes: List of modes to use/not use.
needs_js: If javascript is needed for this command.
debug: Whether this is a debugging command (only shown with --debug).
"""
def __init__(self, instance=None, name=None, nargs=None, split=True,
hide=False, completion=None, modes=None, not_modes=None,
needs_js=False):
needs_js=False, debug=False):
"""Save decorator arguments.
Gets called on parse-time with the decorator arguments.
@ -127,6 +128,7 @@ class register: # pylint: disable=invalid-name
self.modes = modes
self.not_modes = not_modes
self.needs_js = needs_js
self.debug = debug
def __call__(self, func):
"""Register the command before running the function.
@ -169,7 +171,8 @@ class register: # pylint: disable=invalid-name
hide=self.hide, nargs=nargs, count=count, desc=desc,
instance=self.instance, handler=func,
completion=self.completion, modes=self.modes,
not_modes=self.not_modes, needs_js=self.needs_js)
not_modes=self.not_modes, needs_js=self.needs_js,
debug=self.debug)
for name in names:
cmd_dict[name] = cmd
return func

View File

@ -17,7 +17,7 @@
"""CompletionModels for different usages."""
from PyQt5.QtCore import pyqtSlot, Qt
from PyQt5.QtCore import pyqtSlot, Qt, QCoreApplication
import qutebrowser.config.config as config
import qutebrowser.config.configdata as configdata
@ -128,7 +128,10 @@ class CommandCompletionModel(BaseCompletionModel):
assert cmd_dict
cmdlist = []
for obj in set(cmd_dict.values()):
if not obj.hide:
if obj.hide or (obj.debug and not
QCoreApplication.instance().args.debug):
pass
else:
cmdlist.append((obj.name, obj.desc))
for name, cmd in config.section('aliases').items():
cmdlist.append((name, "Alias for '{}'".format(cmd)))

View File

@ -49,7 +49,7 @@ def log_events(klass):
return klass
@cmdutils.register(hide=True)
@cmdutils.register(debug=True)
def set_trace():
"""Set a tracepoint in the Python debugger that works with Qt.