changeset 8864:cad6370a15cb

help: refactor extensions listing, and show enabled ones in the dedicated topic
author Cédric Duval <cedricduval@free.fr>
date Sat, 20 Jun 2009 20:55:49 +0200
parents 7b19c3c0172b
children 37d8a5ddd499
files mercurial/commands.py mercurial/help.py
diffstat 2 files changed, 35 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/commands.py	Sat Jun 20 20:55:43 2009 +0200
+++ b/mercurial/commands.py	Sat Jun 20 20:55:49 2009 +0200
@@ -1483,18 +1483,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))
 
         if not ui.quiet:
             addglobalopts(True)
--- a/mercurial/help.py	Sat Jun 20 20:55:43 2009 +0200
+++ b/mercurial/help.py	Sat Jun 20 20:55:49 2009 +0200
@@ -98,6 +98,33 @@
 
     return exts, maxlength
 
+def enabledextensions():
+    '''Return the list of enabled extensions, and max name length'''
+    enabled = list(extensions.extensions())
+    exts = {}
+    maxlength = 0
+
+    if enabled:
+        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):
+    '''Return a text listing of the given extensions'''
+    result = ''
+
+    if exts:
+        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