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()
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()
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()
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)
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)
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)
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))