ui: add new config option for help text width
authorJun Wu <quark@fb.com>
Wed, 04 May 2016 18:18:24 +0100
changeset 29070 29a7d591ff42
parent 29069 e2a1648a6ce7
child 29071 2f58975eb2cb
ui: add new config option for help text width Before this patch, when printing help text using `hg help`, or `hg log -h`, the output will wrap at 78 chars even if the user has a bigger terminal width and there is no config option to change it, making the experience different from the commonly used `man` tool. This patch introduces a new config option `ui.textwidth`, which replaces the hardcoded number. It's set to 78 by default to maintain compatibility. When set to 0, `hg help` will behave more like `man`.
mercurial/commands.py
mercurial/help/config.txt
tests/test-help.t
--- a/mercurial/commands.py	Tue May 03 15:26:51 2016 +0000
+++ b/mercurial/commands.py	Wed May 04 18:18:24 2016 +0100
@@ -4567,7 +4567,10 @@
     Returns 0 if successful.
     """
 
-    textwidth = min(ui.termwidth(), 80) - 2
+    textwidth = ui.configint('ui', 'textwidth', 78)
+    termwidth = ui.termwidth() - 2
+    if textwidth <= 0 or termwidth < textwidth:
+        textwidth = termwidth
 
     keep = opts.get('system') or []
     if len(keep) == 0:
--- a/mercurial/help/config.txt	Tue May 03 15:26:51 2016 +0000
+++ b/mercurial/help/config.txt	Wed May 04 18:18:24 2016 +0100
@@ -1737,6 +1737,13 @@
     large organisation with its own Mercurial deployment process and crash
     reports should be addressed to your internal support.
 
+``textwidth``
+    Maximum width of help text. A longer line generated by ``hg help`` or
+    ``hg subcommand --help`` will be broken after white space to get this
+    width or the terminal width, whichever comes first.
+    A non-positive value will disable this and the terminal width will be
+    used. (default: 78)
+
 ``timeout``
     The timeout used when a lock is held (in seconds), a negative value
     means no timeout. (default: 600)
--- a/tests/test-help.t	Tue May 03 15:26:51 2016 +0000
+++ b/tests/test-help.t	Wed May 04 18:18:24 2016 +0100
@@ -429,6 +429,22 @@
    -h --help              display help and exit
       --hidden            consider hidden changesets
 
+Test the textwidth config option
+
+  $ hg root -h  --config ui.textwidth=50
+  hg root
+  
+  print the root (top) of the current working
+  directory
+  
+      Print the root directory of the current
+      repository.
+  
+      Returns 0 on success.
+  
+  (some details hidden, use --verbose to show
+  complete help)
+
 Test help option with version option
 
   $ hg add -h --version