[PATCH 2 of 4] help: refactor extensions listing, and show enabled ones in the dedicated topic

Dirkjan Ochtman dirkjan at ochtman.nl
Sun Jun 21 05:35:41 CDT 2009


2009/6/20 Cédric Duval <cedricduval at free.fr>:
> # HG changeset patch
> # User Cédric Duval <cedricduval at free.fr>
> # Date 1245524149 -7200
> # Node ID 34c094dfd6a93a402269a5ee8e7aa0840d5365b8
> # Parent  9070fe33a459e01c57d45572ac246310e3e37b06
> help: refactor extensions listing, and show enabled ones in the dedicated topic
>
> diff --git a/mercurial/commands.py b/mercurial/commands.py
> --- a/mercurial/commands.py
> +++ b/mercurial/commands.py
> @@ -1473,18 +1473,10 @@
>             else:
>                 ui.write(' %-*s   %s\n' % (m, f, h[f]))
>
> -        exts = list(extensions.extensions())
> -        if exts and name != 'shortlist':
> -            ui.write(_('\nenabled extensions:\n\n'))
> -            maxlength = 0
> -            exthelps = []
> -            for ename, ext in exts:
> -                doc = (gettext(ext.__doc__) or _('(no help text available)'))
> -                ename = ename.split('.')[-1]
> -                maxlength = max(len(ename), maxlength)
> -                exthelps.append((ename, doc.splitlines(0)[0].strip()))
> -            for ename, text in exthelps:
> -                ui.write(_(' %s   %s\n') % (ename.ljust(maxlength), text))
> +        if name != 'shortlist':
> +            exts, maxlength = help.enabledextensions()
> +            ui.write(help.extensionslisting(_('enabled extensions:'),
> +                                            exts, maxlength))

I prefer temporary variables over line wrapping.

>
>         if not ui.quiet:
>             addglobalopts(True)
> diff --git a/mercurial/help.py b/mercurial/help.py
> --- a/mercurial/help.py
> +++ b/mercurial/help.py
> @@ -98,6 +98,33 @@
>
>     return exts, maxlength
>
> +def enabledextensions():
> +    '''Return the list of enabled extensions, and max name length'''
> +    enabled = list(extensions.extensions())

Another long name. Maybe just enabled?

Actually, it may make more sense to put disabled() and enabled() in
mercurial.extensions. It's not really a help thing, after all.

> +    exts = {}
> +    maxlength = 0
> +
> +    if enabled:

It'd be nicer to return if not enabled, saves on the indentation later.

> +        exthelps = []
> +        for ename, ext in enabled:
> +            doc = (gettext(ext.__doc__) or _('(no help text available)'))
> +            ename = ename.split('.')[-1]
> +            maxlength = max(len(ename), maxlength)
> +            exts[ename] = doc.splitlines(0)[0].strip()
> +
> +    return exts, maxlength
> +
> +def extensionslisting(header, exts, maxlength):

Please rename... listexts()?

> +    '''Return a text listing of the given extensions'''
> +    result = ''
> +
> +    if exts:

See above.

> +        result += '\n%s\n\n' % header
> +        for name, desc in sorted(exts.iteritems()):
> +            result += ' %s   %s\n' % (name.ljust(maxlength), desc)
> +
> +    return result
> +
>  def topicextensions():
>     doc = _(r'''
>     Mercurial has an extension mechanism for adding new features.
> @@ -109,11 +136,11 @@
>        foo =
>     ''')
>
> +    exts, maxlength = enabledextensions()
> +    doc += extensionslisting(_('enabled extensions:'), exts, maxlength)
> +
>     exts, maxlength = additionalextensions()
> -    if exts:
> -        doc += _('\nnon-enabled extensions:\n\n')
> -    for name, desc in sorted(exts.iteritems()):
> -        doc += ' %s  %s\n' % (name.ljust(maxlength), desc)
> +    doc += extensionslisting(_('non-enabled extensions:'), exts, maxlength)
>
>     return doc

Cheers,

Dirkjan



More information about the Mercurial-devel mailing list