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

Cédric Duval cedricduval at free.fr
Sat Jun 20 14:02:11 CDT 2009


# 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))
 
         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())
+    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
 



More information about the Mercurial-devel mailing list