diff --git a/mercurial/minirst.py b/mercurial/minirst.py
--- a/mercurial/minirst.py
+++ b/mercurial/minirst.py
@@ -162,28 +162,24 @@ def splitparagraphs(blocks):
         i += 1
     return blocks
 
-_fieldwidth = 12
+_fieldwidth = 14
 
 def updatefieldlists(blocks):
-    """Find key and maximum key width for field lists."""
+    """Find key for field lists."""
     i = 0
     while i < len(blocks):
         if blocks[i]['type'] != 'field':
             i += 1
             continue
 
-        keywidth = 0
         j = i
         while j < len(blocks) and blocks[j]['type'] == 'field':
             m = _fieldre.match(blocks[j]['lines'][0])
             key, rest = m.groups()
             blocks[j]['lines'][0] = rest
             blocks[j]['key'] = key
-            keywidth = max(keywidth, len(key))
             j += 1
 
-        for block in blocks[i:j]:
-            block['keywidth'] = keywidth
         i = j + 1
 
     return blocks
@@ -492,19 +488,13 @@ def formatblock(block, width):
             m = _bulletre.match(block['lines'][0])
             subindent = indent + m.end() * ' '
     elif block['type'] == 'field':
-        keywidth = block['keywidth']
         key = block['key']
-
         subindent = indent + _fieldwidth * ' '
         if len(key) + 2 > _fieldwidth:
             # key too large, use full line width
             key = key.ljust(width)
-        elif keywidth + 2 < _fieldwidth:
-            # all keys are small, add only two spaces
-            key = key.ljust(keywidth + 2)
-            subindent = indent + (keywidth + 2) * ' '
         else:
-            # mixed sizes, use fieldwidth for this one
+            # key fits within field width
             key = key.ljust(_fieldwidth)
         block['lines'][0] = key + block['lines'][0]
     elif block['type'] == 'option':
diff --git a/tests/test-convert.t b/tests/test-convert.t
--- a/tests/test-convert.t
+++ b/tests/test-convert.t
@@ -128,15 +128,16 @@
       you can set on the command line with "--config":
   
       convert.hg.ignoreerrors
-                  ignore integrity errors when reading. Use it to fix Mercurial
-                  repositories with missing revlogs, by converting from and to
-                  Mercurial. Default is False.
+                    ignore integrity errors when reading. Use it to fix
+                    Mercurial repositories with missing revlogs, by converting
+                    from and to Mercurial. Default is False.
       convert.hg.saverev
-                  store original revision ID in changeset (forces target IDs to
-                  change). It takes a boolean argument and defaults to False.
+                    store original revision ID in changeset (forces target IDs
+                    to change). It takes a boolean argument and defaults to
+                    False.
       convert.hg.startrev
-                  convert start revision and its descendants. It takes a hg
-                  revision identifier and defaults to 0.
+                    convert start revision and its descendants. It takes a hg
+                    revision identifier and defaults to 0.
   
       CVS Source
       ''''''''''
@@ -153,36 +154,35 @@
       The following options can be used with "--config":
   
       convert.cvsps.cache
-                  Set to False to disable remote log caching, for testing and
-                  debugging purposes. Default is True.
+                    Set to False to disable remote log caching, for testing and
+                    debugging purposes. Default is True.
       convert.cvsps.fuzz
-                  Specify the maximum time (in seconds) that is allowed between
-                  commits with identical user and log message in a single
-                  changeset. When very large files were checked in as part of a
-                  changeset then the default may not be long enough. The default
-                  is 60.
+                    Specify the maximum time (in seconds) that is allowed
+                    between commits with identical user and log message in a
+                    single changeset. When very large files were checked in as
+                    part of a changeset then the default may not be long enough.
+                    The default is 60.
       convert.cvsps.mergeto
-                  Specify a regular expression to which commit log messages are
-                  matched. If a match occurs, then the conversion process will
-                  insert a dummy revision merging the branch on which this log
-                  message occurs to the branch indicated in the regex. Default
-                  is "{{mergetobranch ([-\w]+)}}"
+                    Specify a regular expression to which commit log messages
+                    are matched. If a match occurs, then the conversion process
+                    will insert a dummy revision merging the branch on which
+                    this log message occurs to the branch indicated in the
+                    regex. Default is "{{mergetobranch ([-\w]+)}}"
       convert.cvsps.mergefrom
-                  Specify a regular expression to which commit log messages are
-                  matched. If a match occurs, then the conversion process will
-                  add the most recent revision on the branch indicated in the
-                  regex as the second parent of the changeset. Default is
-                  "{{mergefrombranch ([-\w]+)}}"
-      hook.cvslog
-                  Specify a Python function to be called at the end of gathering
-                  the CVS log. The function is passed a list with the log
-                  entries, and can modify the entries in-place, or add or delete
-                  them.
+                    Specify a regular expression to which commit log messages
+                    are matched. If a match occurs, then the conversion process
+                    will add the most recent revision on the branch indicated in
+                    the regex as the second parent of the changeset. Default is
+                    "{{mergefrombranch ([-\w]+)}}"
+      hook.cvslog   Specify a Python function to be called at the end of
+                    gathering the CVS log. The function is passed a list with
+                    the log entries, and can modify the entries in-place, or add
+                    or delete them.
       hook.cvschangesets
-                  Specify a Python function to be called after the changesets
-                  are calculated from the the CVS log. The function is passed a
-                  list with the changeset entries, and can modify the changesets
-                  in-place, or add or delete them.
+                    Specify a Python function to be called after the changesets
+                    are calculated from the the CVS log. The function is passed
+                    a list with the changeset entries, and can modify the
+                    changesets in-place, or add or delete them.
   
       An additional "debugcvsps" Mercurial command allows the builtin changeset
       merging code to be run without doing a conversion. Its parameters and
@@ -205,19 +205,21 @@
       The following options can be set with "--config":
   
       convert.svn.branches
-                  specify the directory containing branches. The default is
-                  "branches".
+                    specify the directory containing branches. The default is
+                    "branches".
       convert.svn.tags
-                  specify the directory containing tags. The default is "tags".
+                    specify the directory containing tags. The default is
+                    "tags".
       convert.svn.trunk
-                  specify the name of the trunk branch. The default is "trunk".
+                    specify the name of the trunk branch. The default is
+                    "trunk".
   
       Source history can be retrieved starting at a specific revision, instead
       of being integrally converted. Only single branch conversions are
       supported.
   
       convert.svn.startrev
-                  specify start Subversion revision number. The default is 0.
+                    specify start Subversion revision number. The default is 0.
   
       Perforce Source
       '''''''''''''''
@@ -232,8 +234,8 @@
       specifying an initial Perforce revision:
   
       convert.p4.startrev
-                  specify initial Perforce revision (a Perforce changelist
-                  number).
+                    specify initial Perforce revision (a Perforce changelist
+                    number).
   
       Mercurial Destination
       '''''''''''''''''''''
@@ -241,12 +243,12 @@
       The following options are supported:
   
       convert.hg.clonebranches
-                  dispatch source branches in separate clones. The default is
-                  False.
+                    dispatch source branches in separate clones. The default is
+                    False.
       convert.hg.tagsbranch
-                  branch name for tag revisions, defaults to "default".
+                    branch name for tag revisions, defaults to "default".
       convert.hg.usebranchnames
-                  preserve branch names. The default is True.
+                    preserve branch names. The default is True.
   
   options:
   
diff --git a/tests/test-extension.t b/tests/test-extension.t
--- a/tests/test-extension.t
+++ b/tests/test-extension.t
@@ -419,14 +419,14 @@ Disabled extension commands:
   $ hg help email
   'email' is provided by the following extension:
   
-      patchbomb  command to send changesets as (a series of) patch emails
+      patchbomb     command to send changesets as (a series of) patch emails
   
   use "hg help extensions" for information on enabling extensions
   $ hg qdel
   hg: unknown command 'qdel'
   'qdelete' is provided by the following extension:
   
-      mq  manage a stack of patches
+      mq            manage a stack of patches
   
   use "hg help extensions" for information on enabling extensions
   [255]
@@ -434,7 +434,7 @@ Disabled extension commands:
   hg: unknown command 'churn'
   'churn' is provided by the following extension:
   
-      churn  command to display statistics about repository history
+      churn         command to display statistics about repository history
   
   use "hg help extensions" for information on enabling extensions
   [255]
diff --git a/tests/test-help.t b/tests/test-help.t
--- a/tests/test-help.t
+++ b/tests/test-help.t
@@ -675,7 +675,7 @@ Test that default list of commands omits
   
   enabled extensions:
   
-   helpext  (no help text available)
+   helpext       (no help text available)
   
   additional help topics:
   
@@ -748,10 +748,10 @@ Test a help topic
 Test templating help
 
   $ hg help templating | egrep '(desc|diffstat|firstline|nonempty)  '
-      desc        String. The text of the changeset description.
-      diffstat    String. Statistics of changes with the following format:
-      firstline   Any text. Returns the first line of text.
-      nonempty    Any text. Returns '(none)' if the string is empty.
+      desc          String. The text of the changeset description.
+      diffstat      String. Statistics of changes with the following format:
+      firstline     Any text. Returns the first line of text.
+      nonempty      Any text. Returns '(none)' if the string is empty.
 
 Test help hooks
 
diff --git a/tests/test-minirst.py.out b/tests/test-minirst.py.out
--- a/tests/test-minirst.py.out
+++ b/tests/test-minirst.py.out
@@ -414,35 +414,37 @@ marker after the option. It is treated a
 == fields ==
 60 column format:
 ----------------------------------------------------------------------
-a   First item.
-ab  Second item. Indentation and wrapping is handled
-    automatically.
+a             First item.
+ab            Second item. Indentation and wrapping is
+              handled automatically.
 
 Next list:
 
-small       The larger key below triggers full indentation
-            here.
+small         The larger key below triggers full indentation
+              here.
 much too large
-            This key is big enough to get its own line.
+              This key is big enough to get its own line.
 ----------------------------------------------------------------------
 
 30 column format:
 ----------------------------------------------------------------------
-a   First item.
-ab  Second item. Indentation
-    and wrapping is handled
-    automatically.
+a             First item.
+ab            Second item.
+              Indentation and
+              wrapping is
+              handled
+              automatically.
 
 Next list:
 
-small       The larger key
-            below triggers
-            full indentation
-            here.
+small         The larger key
+              below triggers
+              full indentation
+              here.
 much too large
-            This key is big
-            enough to get its
-            own line.
+              This key is big
+              enough to get
+              its own line.
 ----------------------------------------------------------------------
 
 html format:
diff --git a/tests/test-qrecord.t b/tests/test-qrecord.t
--- a/tests/test-qrecord.t
+++ b/tests/test-qrecord.t
@@ -15,7 +15,7 @@ help qrecord (no record)
   $ hg help qrecord
   'qrecord' is provided by the following extension:
   
-      record  commands to interactively select changes for commit/qrefresh
+      record        commands to interactively select changes for commit/qrefresh
   
   use "hg help extensions" for information on enabling extensions