diff --git a/qutebrowser/commands/template.py b/qutebrowser/commands/template.py index 087589bb3..74c3b3206 100644 --- a/qutebrowser/commands/template.py +++ b/qutebrowser/commands/template.py @@ -40,23 +40,13 @@ class Command(QObject): # we should probably have some kind of typing / argument casting for args # this might be combined with help texts or so as well - nargs = 0 - name = None - mainname = None - signal = None - count = False - split_args = True - signal = pyqtSignal(tuple) - hide = False - - def __init__(self): + def __init__(self, name, split_args, hide, nargs, handler): super().__init__() - if self.name is None: - self.name = self.__class__.__name__.lower() - if isinstance(self.name, str): - self.mainname = self.name - else: - self.mainname = self.name[0] + self.name = name + self.split_args = split_args + self.hide = hide + self.nargs = nargs + self.handler = handler def check(self, args): """Check if the argument count is valid. diff --git a/qutebrowser/commands/utils.py b/qutebrowser/commands/utils.py index 980ed5fc3..0803484d4 100644 --- a/qutebrowser/commands/utils.py +++ b/qutebrowser/commands/utils.py @@ -47,6 +47,23 @@ def register_all(): cmd_dict[n] = obj +def register_cmd(func, name=None, split_args=True, hide=False): + """Decorator to register a new command handler.""" + global cmd_dict + names = [] + if name is None: + name = func.__name__.lower() + if isinstance(name, str): + mainname = name + names.append(name) + else: + mainname = name[0] + names += name + cmd = Command(mainname, split_args, hide, handler=func) + for name in names: + cmd_dict[name] = cmd + + class SearchParser(QObject): """Parse qutebrowser searches.