mercurial/help.py
changeset 16845 4594729c61ee
parent 16816 d10994f1c7a2
child 16852 af69b2b64d6e
equal deleted inserted replaced
16843:61f3ca8e4d39 16845:4594729c61ee
    68     Returns {'section': [(name, summary), ...], ...} where section is
    68     Returns {'section': [(name, summary), ...], ...} where section is
    69     one of topics, commands, extensions, or extensioncommands.
    69     one of topics, commands, extensions, or extensioncommands.
    70     """
    70     """
    71     kw = encoding.lower(kw)
    71     kw = encoding.lower(kw)
    72     def lowercontains(container):
    72     def lowercontains(container):
    73         return kw in encoding.lower(_(container))
    73         return kw in encoding.lower(container)  # translated in helptable
    74     results = {'topics': [],
    74     results = {'topics': [],
    75                'commands': [],
    75                'commands': [],
    76                'extensions': [],
    76                'extensions': [],
    77                'extensioncommands': [],
    77                'extensioncommands': [],
    78                }
    78                }
    87             continue
    87             continue
    88         if len(entry) == 3:
    88         if len(entry) == 3:
    89             summary = entry[2]
    89             summary = entry[2]
    90         else:
    90         else:
    91             summary = ''
    91             summary = ''
    92         docs = getattr(entry[0], '__doc__', None) or ''
    92         # translate docs *before* searching there
       
    93         docs = _(getattr(entry[0], '__doc__', None)) or ''
    93         if kw in cmd or lowercontains(summary) or lowercontains(docs):
    94         if kw in cmd or lowercontains(summary) or lowercontains(docs):
    94             doclines = _(docs).splitlines()
    95             doclines = docs.splitlines()
    95             if doclines:
    96             if doclines:
    96                 summary = doclines[0]
    97                 summary = doclines[0]
    97             cmdname = cmd.split('|')[0].lstrip('^')
    98             cmdname = cmd.split('|')[0].lstrip('^')
    98             results['commands'].append((cmdname, summary))
    99             results['commands'].append((cmdname, summary))
    99     for name, docs in itertools.chain(
   100     for name, docs in itertools.chain(
   100         extensions.enabled().iteritems(),
   101         extensions.enabled().iteritems(),
   101         extensions.disabled().iteritems()):
   102         extensions.disabled().iteritems()):
   102         # extensions.load ignores the UI argument
   103         # extensions.load ignores the UI argument
   103         mod = extensions.load(None, name, '')
   104         mod = extensions.load(None, name, '')
   104         if lowercontains(name) or lowercontains(docs):
   105         if lowercontains(name) or lowercontains(docs):
   105             results['extensions'].append((name, _(docs).splitlines()[0]))
   106             # extension docs are already translated
       
   107             results['extensions'].append((name, docs.splitlines()[0]))
   106         for cmd, entry in getattr(mod, 'cmdtable', {}).iteritems():
   108         for cmd, entry in getattr(mod, 'cmdtable', {}).iteritems():
   107             if kw in cmd or (len(entry) > 2 and lowercontains(entry[2])):
   109             if kw in cmd or (len(entry) > 2 and lowercontains(entry[2])):
   108                 cmdname = cmd.split('|')[0].lstrip('^')
   110                 cmdname = cmd.split('|')[0].lstrip('^')
   109                 results['extensioncommands'].append(
   111                 results['extensioncommands'].append(
   110                     (cmdname, _(getattr(cmd, '__doc__', ''))))
   112                     (cmdname, _(getattr(cmd, '__doc__', ''))))