help: pass around ui to doc loader (API)

This is necessary to hide DEPRECATED items conditionally.

Flagged as API change because it will break "hg help git|subversion".
This commit is contained in:
Yuya Nishihara 2015-09-26 12:06:30 +09:00
parent 958a6389af
commit 2f746aa9d3
4 changed files with 10 additions and 10 deletions

View File

@ -79,7 +79,7 @@ def checkhghelps(ui):
errorcnt = 0
for names, sec, doc in helptable:
if callable(doc):
doc = doc()
doc = doc(ui)
errorcnt += checkseclevel(ui, doc,
'%s help topic' % names[0],
initlevel_topic)

View File

@ -138,7 +138,7 @@ def helpprinter(ui, helptable, sectionfunc, include=[], exclude=[]):
if sectionfunc:
ui.write(sectionfunc(sec))
if callable(doc):
doc = doc()
doc = doc(ui)
ui.write(doc)
ui.write("\n")

View File

@ -34,8 +34,8 @@ def listexts(header, exts, indent=1, showdeprecated=False):
rst.append('%s:%s: %s\n' % (' ' * indent, name, desc))
return rst
def extshelp():
rst = loaddoc('extensions')().splitlines(True)
def extshelp(ui):
rst = loaddoc('extensions')(ui).splitlines(True)
rst.extend(listexts(
_('enabled extensions:'), extensions.enabled(), showdeprecated=True))
rst.extend(listexts(_('disabled extensions:'), extensions.disabled()))
@ -83,7 +83,7 @@ def indicateomitted(rst, omitted, notomitted=None):
if notomitted:
rst.append('\n\n.. container:: notomitted\n\n %s\n\n' % notomitted)
def topicmatch(kw):
def topicmatch(ui, kw):
"""Return help topics matching kw.
Returns {'section': [(name, summary), ...], ...} where section is
@ -101,7 +101,7 @@ def topicmatch(kw):
# Old extensions may use a str as doc.
if (sum(map(lowercontains, names))
or lowercontains(header)
or (callable(doc) and lowercontains(doc()))):
or (callable(doc) and lowercontains(doc(ui)))):
results['topics'].append((names[0], header))
import commands # avoid cycle
for cmd, entry in commands.table.iteritems():
@ -139,7 +139,7 @@ def topicmatch(kw):
def loaddoc(topic):
"""Return a delayed loader for help/topic.txt."""
def loader():
def loader(ui):
docdir = os.path.join(util.datapath, 'help')
path = os.path.join(docdir, topic + ".txt")
doc = gettext(util.readfile(path))
@ -415,7 +415,7 @@ def help_(ui, name, unknowncmd=False, full=True, **opts):
if not doc:
rst.append(" %s\n" % _("(no help text available)"))
if callable(doc):
rst += [" %s\n" % l for l in doc().splitlines()]
rst += [" %s\n" % l for l in doc(ui).splitlines()]
if not ui.verbose:
omitted = _('(some details hidden, use --verbose'
@ -482,7 +482,7 @@ def help_(ui, name, unknowncmd=False, full=True, **opts):
rst = []
kw = opts.get('keyword')
if kw:
matches = topicmatch(name)
matches = topicmatch(ui, name)
helpareas = []
if opts.get('extension'):
helpareas += [('extensions', _('Extensions'))]

View File

@ -1105,7 +1105,7 @@ Test omit indicating for help
> def extsetup(ui):
> help.helptable.append((["topic-containing-verbose"],
> "This is the topic to test omit indicating.",
> lambda : testtopic))
> lambda ui: testtopic))
> EOF
$ echo '[extensions]' >> $HGRCPATH
$ echo "addverboseitems = `pwd`/addverboseitems.py" >> $HGRCPATH