Exemple #1
0
    def __init__(self, *, handler, name, instance=None, maxsplit=None,
                 hide=False, modes=None, not_modes=None, debug=False,
                 ignore_args=False, deprecated=False, no_cmd_split=False,
                 star_args_optional=False, scope='global', backend=None,
                 no_replace_variables=False):
        # I really don't know how to solve this in a better way, I tried.
        # pylint: disable=too-many-locals
        if modes is not None and not_modes is not None:
            raise ValueError("Only modes or not_modes can be given!")
        if modes is not None:
            for m in modes:
                if not isinstance(m, usertypes.KeyMode):
                    raise TypeError("Mode {} is no KeyMode member!".format(m))
            self._modes = set(modes)
        elif not_modes is not None:
            for m in not_modes:
                if not isinstance(m, usertypes.KeyMode):
                    raise TypeError("Mode {} is no KeyMode member!".format(m))
            self._modes = set(usertypes.KeyMode).difference(not_modes)
        else:
            self._modes = set(usertypes.KeyMode)
        if scope != 'global' and instance is None:
            raise ValueError("Setting scope without setting instance makes "
                             "no sense!")

        self.name = name
        self.maxsplit = maxsplit
        self.hide = hide
        self.deprecated = deprecated
        self._instance = instance
        self._scope = scope
        self._star_args_optional = star_args_optional
        self.debug = debug
        self.ignore_args = ignore_args
        self.handler = handler
        self.no_cmd_split = no_cmd_split
        self.backend = backend
        self.no_replace_variables = no_replace_variables

        self.docparser = docutils.DocstringParser(handler)
        self.parser = argparser.ArgumentParser(
            name, description=self.docparser.short_desc,
            epilog=self.docparser.long_desc)
        self.parser.add_argument('-h', '--help', action=argparser.HelpAction,
                                 default=argparser.SUPPRESS, nargs=0,
                                 help=argparser.SUPPRESS)
        self._check_func()
        self.opt_args = collections.OrderedDict()
        self.namespace = None
        self._count = None
        self.pos_args = []
        self.desc = None
        self.flags_with_args = []

        # This is checked by future @cmdutils.argument calls so they fail
        # (as they'd be silently ignored otherwise)
        self._qute_args = getattr(self.handler, 'qute_args', {})
        self.handler.qute_args = None

        self._inspect_func()
Exemple #2
0
 def __init__(self, name, maxsplit, hide, instance, completion, modes,
              not_modes, needs_js, is_debug, ignore_args,
              handler, scope):
     # I really don't know how to solve this in a better way, I tried.
     # pylint: disable=too-many-arguments,too-many-locals
     self.name = name
     self.maxsplit = maxsplit
     self.hide = hide
     self._instance = instance
     self.completion = completion
     self._modes = modes
     self._not_modes = not_modes
     self._scope = scope
     self._needs_js = needs_js
     self.debug = is_debug
     self.ignore_args = ignore_args
     self.handler = handler
     self.docparser = docutils.DocstringParser(handler)
     self.parser = argparser.ArgumentParser(
         name, description=self.docparser.short_desc,
         epilog=self.docparser.long_desc)
     self.parser.add_argument('-h', '--help', action=argparser.HelpAction,
                              default=argparser.SUPPRESS, nargs=0,
                              help=argparser.SUPPRESS)
     self._check_func()
     self.opt_args = collections.OrderedDict()
     self.namespace = None
     self._count = None
     self.pos_args = []
     self.special_params = {'count': None, 'win_id': None}
     self.desc = None
     self.flags_with_args = []
     self._type_conv = {}
     self._name_conv = {}
     self._inspect_func()
Exemple #3
0
    def __init__(self, *, handler, name, instance=None, maxsplit=None,
                 modes=None, not_modes=None, debug=False, deprecated=False,
                 no_cmd_split=False, star_args_optional=False, scope='global',
                 backend=None, no_replace_variables=False):
        if modes is not None and not_modes is not None:
            raise ValueError("Only modes or not_modes can be given!")
        if modes is not None:
            for m in modes:
                if not isinstance(m, usertypes.KeyMode):
                    raise TypeError("Mode {} is no KeyMode member!".format(m))
            self.modes = set(modes)
        elif not_modes is not None:
            for m in not_modes:
                if not isinstance(m, usertypes.KeyMode):
                    raise TypeError("Mode {} is no KeyMode member!".format(m))
            self.modes = set(usertypes.KeyMode).difference(not_modes)
        else:
            self.modes = set(usertypes.KeyMode)
        if scope != 'global' and instance is None:
            raise ValueError("Setting scope without setting instance makes "
                             "no sense!")

        self.name = name
        self.maxsplit = maxsplit
        self.deprecated = deprecated
        self._instance = instance
        self._scope = scope
        self._star_args_optional = star_args_optional
        self.debug = debug
        self.handler = handler
        self.no_cmd_split = no_cmd_split
        self.backend = backend
        self.no_replace_variables = no_replace_variables

        self.docparser = docutils.DocstringParser(handler)
        self.parser = argparser.ArgumentParser(
            name, description=self.docparser.short_desc,
            epilog=self.docparser.long_desc)
        self.parser.add_argument('-h', '--help', action=argparser.HelpAction,
                                 default=argparser.SUPPRESS, nargs=0,
                                 help=argparser.SUPPRESS)
        self.opt_args: MutableMapping[str, Tuple[str, str]] = collections.OrderedDict()
        self.namespace = None
        self._count = None
        self.pos_args: MutableSequence[Tuple[str, str]] = []
        self.flags_with_args: MutableSequence[str] = []
        self._has_vararg = False

        self._signature = inspect.signature(handler)
        self._type_hints = typing.get_type_hints(handler)

        self._qute_args = getattr(self.handler, 'qute_args', {})

        self._check_func()
        self._inspect_func()
Exemple #4
0
def _get_setting_types_quickref():
    """Generate the setting types quick reference."""
    out = []
    out.append('[[types]]')
    out.append('[options="header",width="75%",cols="25%,75%"]')
    out.append('|==============')
    out.append('|Type|Description')

    for name, typ in _get_configtypes():
        parser = docutils.DocstringParser(typ)
        desc = parser.short_desc
        if parser.long_desc:
            desc += '\n\n' + parser.long_desc
        out.append('|{}|{}'.format(name, desc))

    out.append('|==============')
    return '\n'.join(out)
Exemple #5
0
def _get_command_doc(name, cmd):
    """Generate the documentation for a command."""
    output = ['[[{}]]'.format(name)]
    output += ['=== {}'.format(name)]
    syntax = _get_cmd_syntax(name, cmd)
    if syntax != name:
        output.append('Syntax: +:{}+'.format(syntax))
        output.append("")
    parser = docutils.DocstringParser(cmd.handler)
    output.append(parser.short_desc)
    if parser.long_desc:
        output.append("")
        output.append(parser.long_desc)

    if cmd.pos_args:
        output.append("")
        output.append("==== positional arguments")
        for arg, name in cmd.pos_args:
            try:
                output.append("* +'{}'+: {}".format(name,
                                                    parser.arg_descs[arg]))
            except KeyError as e:
                raise KeyError("No description for arg {} of command "
                               "'{}'!".format(e, cmd.name))

    if cmd.opt_args:
        output.append("")
        output.append("==== optional arguments")
        for arg, (long_flag, short_flag) in cmd.opt_args.items():
            try:
                output.append('* +*{}*+, +*{}*+: {}'.format(
                    short_flag, long_flag, parser.arg_descs[arg]))
            except KeyError:
                raise KeyError("No description for arg {} of command "
                               "'{}'!".format(e, cmd.name))

    if cmd.special_params['count'] is not None:
        output.append("")
        output.append("==== count")
        output.append(parser.arg_descs[cmd.special_params['count']])

    output.append("")
    output.append("")
    return '\n'.join(output)
Exemple #6
0
def _get_command_doc(name, cmd):
    """Generate the documentation for a command."""
    output = ['[[{}]]'.format(name)]
    output += ['=== {}'.format(name)]
    syntax = _get_cmd_syntax(name, cmd)
    if syntax != name:
        output.append('Syntax: +:{}+'.format(syntax))
        output.append("")
    parser = docutils.DocstringParser(cmd.handler)
    output.append(parser.short_desc)
    if parser.long_desc:
        output.append("")
        output.append(parser.long_desc)

    output += list(_get_command_doc_args(cmd, parser))
    output += list(_get_command_doc_count(cmd, parser))
    output += list(_get_command_doc_notes(cmd))

    output.append("")
    output.append("")
    return '\n'.join(output)
Exemple #7
0
 def __init__(self,
              *,
              handler,
              name,
              instance=None,
              maxsplit=None,
              hide=False,
              completion=None,
              modes=None,
              not_modes=None,
              needs_js=False,
              debug=False,
              ignore_args=False,
              deprecated=False,
              no_cmd_split=False,
              scope='global',
              count=None,
              win_id=None):
     # I really don't know how to solve this in a better way, I tried.
     # pylint: disable=too-many-arguments,too-many-locals
     if modes is not None and not_modes is not None:
         raise ValueError("Only modes or not_modes can be given!")
     if modes is not None:
         for m in modes:
             if not isinstance(m, usertypes.KeyMode):
                 raise TypeError("Mode {} is no KeyMode member!".format(m))
     if not_modes is not None:
         for m in not_modes:
             if not isinstance(m, usertypes.KeyMode):
                 raise TypeError("Mode {} is no KeyMode member!".format(m))
     if scope != 'global' and instance is None:
         raise ValueError("Setting scope without setting instance makes "
                          "no sense!")
     self.name = name
     self.maxsplit = maxsplit
     self.hide = hide
     self.deprecated = deprecated
     self._instance = instance
     self.completion = completion
     self._modes = modes
     self._not_modes = not_modes
     self._scope = scope
     self._needs_js = needs_js
     self.debug = debug
     self.ignore_args = ignore_args
     self.handler = handler
     self.no_cmd_split = no_cmd_split
     self.count_arg = count
     self.win_id_arg = win_id
     self.docparser = docutils.DocstringParser(handler)
     self.parser = argparser.ArgumentParser(
         name,
         description=self.docparser.short_desc,
         epilog=self.docparser.long_desc)
     self.parser.add_argument('-h',
                              '--help',
                              action=argparser.HelpAction,
                              default=argparser.SUPPRESS,
                              nargs=0,
                              help=argparser.SUPPRESS)
     self._check_func()
     self.opt_args = collections.OrderedDict()
     self.namespace = None
     self._count = None
     self.pos_args = []
     self.desc = None
     self.flags_with_args = []
     self._type_conv = {}
     count = self._inspect_func()
     if self.completion is not None and len(self.completion) > count:
         raise ValueError("Got {} completions, but only {} "
                          "arguments!".format(len(self.completion), count))