mercurial/help.py
changeset 26413 e0c572d4d112
parent 26371 51b309ce6c7d
child 26414 c44b507e7c78
equal deleted inserted replaced
26412:7e8e3c0920a6 26413:e0c572d4d112
    32             if not showdeprecated and any(w in desc for w in _exclkeywords):
    32             if not showdeprecated and any(w in desc for w in _exclkeywords):
    33                 continue
    33                 continue
    34             rst.append('%s:%s: %s\n' % (' ' * indent, name, desc))
    34             rst.append('%s:%s: %s\n' % (' ' * indent, name, desc))
    35     return rst
    35     return rst
    36 
    36 
    37 def extshelp():
    37 def extshelp(ui):
    38     rst = loaddoc('extensions')().splitlines(True)
    38     rst = loaddoc('extensions')(ui).splitlines(True)
    39     rst.extend(listexts(
    39     rst.extend(listexts(
    40         _('enabled extensions:'), extensions.enabled(), showdeprecated=True))
    40         _('enabled extensions:'), extensions.enabled(), showdeprecated=True))
    41     rst.extend(listexts(_('disabled extensions:'), extensions.disabled()))
    41     rst.extend(listexts(_('disabled extensions:'), extensions.disabled()))
    42     doc = ''.join(rst)
    42     doc = ''.join(rst)
    43     return doc
    43     return doc
    81 def indicateomitted(rst, omitted, notomitted=None):
    81 def indicateomitted(rst, omitted, notomitted=None):
    82     rst.append('\n\n.. container:: omitted\n\n    %s\n\n' % omitted)
    82     rst.append('\n\n.. container:: omitted\n\n    %s\n\n' % omitted)
    83     if notomitted:
    83     if notomitted:
    84         rst.append('\n\n.. container:: notomitted\n\n    %s\n\n' % notomitted)
    84         rst.append('\n\n.. container:: notomitted\n\n    %s\n\n' % notomitted)
    85 
    85 
    86 def topicmatch(kw):
    86 def topicmatch(ui, kw):
    87     """Return help topics matching kw.
    87     """Return help topics matching kw.
    88 
    88 
    89     Returns {'section': [(name, summary), ...], ...} where section is
    89     Returns {'section': [(name, summary), ...], ...} where section is
    90     one of topics, commands, extensions, or extensioncommands.
    90     one of topics, commands, extensions, or extensioncommands.
    91     """
    91     """
    99                }
    99                }
   100     for names, header, doc in helptable:
   100     for names, header, doc in helptable:
   101         # Old extensions may use a str as doc.
   101         # Old extensions may use a str as doc.
   102         if (sum(map(lowercontains, names))
   102         if (sum(map(lowercontains, names))
   103             or lowercontains(header)
   103             or lowercontains(header)
   104             or (callable(doc) and lowercontains(doc()))):
   104             or (callable(doc) and lowercontains(doc(ui)))):
   105             results['topics'].append((names[0], header))
   105             results['topics'].append((names[0], header))
   106     import commands # avoid cycle
   106     import commands # avoid cycle
   107     for cmd, entry in commands.table.iteritems():
   107     for cmd, entry in commands.table.iteritems():
   108         if len(entry) == 3:
   108         if len(entry) == 3:
   109             summary = entry[2]
   109             summary = entry[2]
   137     return results
   137     return results
   138 
   138 
   139 def loaddoc(topic):
   139 def loaddoc(topic):
   140     """Return a delayed loader for help/topic.txt."""
   140     """Return a delayed loader for help/topic.txt."""
   141 
   141 
   142     def loader():
   142     def loader(ui):
   143         docdir = os.path.join(util.datapath, 'help')
   143         docdir = os.path.join(util.datapath, 'help')
   144         path = os.path.join(docdir, topic + ".txt")
   144         path = os.path.join(docdir, topic + ".txt")
   145         doc = gettext(util.readfile(path))
   145         doc = gettext(util.readfile(path))
   146         for rewriter in helphooks.get(topic, []):
   146         for rewriter in helphooks.get(topic, []):
   147             doc = rewriter(topic, doc)
   147             doc = rewriter(topic, doc)
   413 
   413 
   414         # description
   414         # description
   415         if not doc:
   415         if not doc:
   416             rst.append("    %s\n" % _("(no help text available)"))
   416             rst.append("    %s\n" % _("(no help text available)"))
   417         if callable(doc):
   417         if callable(doc):
   418             rst += ["    %s\n" % l for l in doc().splitlines()]
   418             rst += ["    %s\n" % l for l in doc(ui).splitlines()]
   419 
   419 
   420         if not ui.verbose:
   420         if not ui.verbose:
   421             omitted = _('(some details hidden, use --verbose'
   421             omitted = _('(some details hidden, use --verbose'
   422                          ' to show complete help)')
   422                          ' to show complete help)')
   423             indicateomitted(rst, omitted)
   423             indicateomitted(rst, omitted)
   480 
   480 
   481 
   481 
   482     rst = []
   482     rst = []
   483     kw = opts.get('keyword')
   483     kw = opts.get('keyword')
   484     if kw:
   484     if kw:
   485         matches = topicmatch(name)
   485         matches = topicmatch(ui, name)
   486         helpareas = []
   486         helpareas = []
   487         if opts.get('extension'):
   487         if opts.get('extension'):
   488             helpareas += [('extensions', _('Extensions'))]
   488             helpareas += [('extensions', _('Extensions'))]
   489         if opts.get('command'):
   489         if opts.get('command'):
   490             helpareas += [('commands', _('Commands'))]
   490             helpareas += [('commands', _('Commands'))]