diff --git a/mercurial/help.py b/mercurial/help.py
index ff17dff99295e0781b3f147da2c5e5b14d3436e4_bWVyY3VyaWFsL2hlbHAucHk=..f3c4edfd35e1d7b469d518da38424ddb27b3d0f8_bWVyY3VyaWFsL2hlbHAucHk= 100644
--- a/mercurial/help.py
+++ b/mercurial/help.py
@@ -20,6 +20,7 @@
     encoding,
     error,
     extensions,
+    fancyopts,
     filemerge,
     fileset,
     minirst,
@@ -65,6 +66,7 @@
 def optrst(header, options, verbose):
     data = []
     multioccur = False
+    alllong = set(o[1] for o in options)
     for option in options:
         if len(option) == 5:
             shortopt, longopt, default, desc, optlabel = option
@@ -87,6 +89,16 @@
             multioccur = True
         elif (default is not None) and not isinstance(default, bool):
             lo += " %s" % optlabel
+        elif longopt not in fancyopts.nevernegate:
+            if longopt.startswith('no-'):
+                # This odd if statement guards against showing
+                # --no-commit and --commit on backout (as a practical
+                # example) as --[no-]commit in help.
+                if (longopt[3:]) not in alllong:
+                    lo = '--[no-]' + lo[5:]
+            else:
+                if ('no-' + longopt) not in alllong:
+                    lo = '--[no-]' + lo[2:]
 
         data.append((so, lo, desc))
 
diff --git a/tests/test-convert.t b/tests/test-convert.t
index ff17dff99295e0781b3f147da2c5e5b14d3436e4_dGVzdHMvdGVzdC1jb252ZXJ0LnQ=..f3c4edfd35e1d7b469d518da38424ddb27b3d0f8_dGVzdHMvdGVzdC1jb252ZXJ0LnQ= 100644
--- a/tests/test-convert.t
+++ b/tests/test-convert.t
@@ -327,6 +327,6 @@
    -r --rev REV [+]      import up to source revision REV
    -A --authormap FILE   remap usernames using this file
       --filemap FILE     remap file names using contents of file
-      --full             apply filemap changes by converting all files again
+      --[no-]full        apply filemap changes by converting all files again
       --splicemap FILE   splice synthesized history into place
       --branchmap FILE   change branch names while converting
@@ -331,9 +331,9 @@
       --splicemap FILE   splice synthesized history into place
       --branchmap FILE   change branch names while converting
-      --branchsort       try to sort changesets by branches
-      --datesort         try to sort changesets by date
-      --sourcesort       preserve source changesets order
-      --closesort        try to reorder closed revisions
+      --[no-]branchsort  try to sort changesets by branches
+      --[no-]datesort    try to sort changesets by date
+      --[no-]sourcesort  preserve source changesets order
+      --[no-]closesort   try to reorder closed revisions
   
   (some details hidden, use --verbose to show complete help)
   $ hg init a
diff --git a/tests/test-dispatch.t b/tests/test-dispatch.t
index ff17dff99295e0781b3f147da2c5e5b14d3436e4_dGVzdHMvdGVzdC1kaXNwYXRjaC50..f3c4edfd35e1d7b469d518da38424ddb27b3d0f8_dGVzdHMvdGVzdC1kaXNwYXRjaC50 100644
--- a/tests/test-dispatch.t
+++ b/tests/test-dispatch.t
@@ -23,7 +23,7 @@
   
    -o --output FORMAT       print output to file with formatted name
    -r --rev REV             print the given revision
-      --decode              apply any matching decode filter
+      --[no-]decode         apply any matching decode filter
    -I --include PATTERN [+] include names matching the given patterns
    -X --exclude PATTERN [+] exclude names matching the given patterns
   
diff --git a/tests/test-extdiff.t b/tests/test-extdiff.t
index ff17dff99295e0781b3f147da2c5e5b14d3436e4_dGVzdHMvdGVzdC1leHRkaWZmLnQ=..f3c4edfd35e1d7b469d518da38424ddb27b3d0f8_dGVzdHMvdGVzdC1leHRkaWZmLnQ= 100644
--- a/tests/test-extdiff.t
+++ b/tests/test-extdiff.t
@@ -48,6 +48,6 @@
    -o --option OPT [+]      pass option to comparison program
    -r --rev REV [+]         revision
    -c --change REV          change made by revision
-      --patch               compare patches for two revisions
+      --[no-]patch          compare patches for two revisions
    -I --include PATTERN [+] include names matching the given patterns
    -X --exclude PATTERN [+] exclude names matching the given patterns
@@ -52,6 +52,6 @@
    -I --include PATTERN [+] include names matching the given patterns
    -X --exclude PATTERN [+] exclude names matching the given patterns
-   -S --subrepos            recurse into subrepositories
+   -S --[no-]subrepos       recurse into subrepositories
   
   (some details hidden, use --verbose to show complete help)
 
diff --git a/tests/test-extension.t b/tests/test-extension.t
index ff17dff99295e0781b3f147da2c5e5b14d3436e4_dGVzdHMvdGVzdC1leHRlbnNpb24udA==..f3c4edfd35e1d7b469d518da38424ddb27b3d0f8_dGVzdHMvdGVzdC1leHRlbnNpb24udA== 100644
--- a/tests/test-extension.t
+++ b/tests/test-extension.t
@@ -530,6 +530,6 @@
       --cwd DIR           change working directory
    -y --noninteractive    do not prompt, automatically pick the first choice for
                           all prompts
-   -q --quiet             suppress output
-   -v --verbose           enable additional output
+   -q --[no-]quiet        suppress output
+   -v --[no-]verbose      enable additional output
       --config CONFIG [+] set/override config option (use 'section.name=value')
@@ -535,5 +535,5 @@
       --config CONFIG [+] set/override config option (use 'section.name=value')
-      --debug             enable debugging output
-      --debugger          start debugger
+      --[no-]debug        enable debugging output
+      --[no-]debugger     start debugger
       --encoding ENCODE   set the charset encoding (default: ascii)
       --encodingmode MODE set the charset encoding mode (default: strict)
@@ -538,7 +538,7 @@
       --encoding ENCODE   set the charset encoding (default: ascii)
       --encodingmode MODE set the charset encoding mode (default: strict)
-      --traceback         always print a traceback on exception
-      --time              time how long the command takes
-      --profile           print command execution profile
+      --[no-]traceback    always print a traceback on exception
+      --[no-]time         time how long the command takes
+      --[no-]profile      print command execution profile
       --version           output version information and exit
    -h --help              display help and exit
@@ -543,6 +543,6 @@
       --version           output version information and exit
    -h --help              display help and exit
-      --hidden            consider hidden changesets
+      --[no-]hidden       consider hidden changesets
 
 
 
@@ -565,6 +565,6 @@
       --cwd DIR           change working directory
    -y --noninteractive    do not prompt, automatically pick the first choice for
                           all prompts
-   -q --quiet             suppress output
-   -v --verbose           enable additional output
+   -q --[no-]quiet        suppress output
+   -v --[no-]verbose      enable additional output
       --config CONFIG [+] set/override config option (use 'section.name=value')
@@ -570,5 +570,5 @@
       --config CONFIG [+] set/override config option (use 'section.name=value')
-      --debug             enable debugging output
-      --debugger          start debugger
+      --[no-]debug        enable debugging output
+      --[no-]debugger     start debugger
       --encoding ENCODE   set the charset encoding (default: ascii)
       --encodingmode MODE set the charset encoding mode (default: strict)
@@ -573,7 +573,7 @@
       --encoding ENCODE   set the charset encoding (default: ascii)
       --encodingmode MODE set the charset encoding mode (default: strict)
-      --traceback         always print a traceback on exception
-      --time              time how long the command takes
-      --profile           print command execution profile
+      --[no-]traceback    always print a traceback on exception
+      --[no-]time         time how long the command takes
+      --[no-]profile      print command execution profile
       --version           output version information and exit
    -h --help              display help and exit
@@ -578,6 +578,6 @@
       --version           output version information and exit
    -h --help              display help and exit
-      --hidden            consider hidden changesets
+      --[no-]hidden       consider hidden changesets
 
 
 
@@ -624,6 +624,6 @@
    -o --option OPT [+]      pass option to comparison program
    -r --rev REV [+]         revision
    -c --change REV          change made by revision
-      --patch               compare patches for two revisions
+      --[no-]patch          compare patches for two revisions
    -I --include PATTERN [+] include names matching the given patterns
    -X --exclude PATTERN [+] exclude names matching the given patterns
@@ -628,6 +628,6 @@
    -I --include PATTERN [+] include names matching the given patterns
    -X --exclude PATTERN [+] exclude names matching the given patterns
-   -S --subrepos            recurse into subrepositories
+   -S --[no-]subrepos       recurse into subrepositories
   
   (some details hidden, use --verbose to show complete help)
 
@@ -851,6 +851,6 @@
       --cwd DIR           change working directory
    -y --noninteractive    do not prompt, automatically pick the first choice for
                           all prompts
-   -q --quiet             suppress output
-   -v --verbose           enable additional output
+   -q --[no-]quiet        suppress output
+   -v --[no-]verbose      enable additional output
       --config CONFIG [+] set/override config option (use 'section.name=value')
@@ -856,5 +856,5 @@
       --config CONFIG [+] set/override config option (use 'section.name=value')
-      --debug             enable debugging output
-      --debugger          start debugger
+      --[no-]debug        enable debugging output
+      --[no-]debugger     start debugger
       --encoding ENCODE   set the charset encoding (default: ascii)
       --encodingmode MODE set the charset encoding mode (default: strict)
@@ -859,7 +859,7 @@
       --encoding ENCODE   set the charset encoding (default: ascii)
       --encodingmode MODE set the charset encoding mode (default: strict)
-      --traceback         always print a traceback on exception
-      --time              time how long the command takes
-      --profile           print command execution profile
+      --[no-]traceback    always print a traceback on exception
+      --[no-]time         time how long the command takes
+      --[no-]profile      print command execution profile
       --version           output version information and exit
    -h --help              display help and exit
@@ -864,6 +864,6 @@
       --version           output version information and exit
    -h --help              display help and exit
-      --hidden            consider hidden changesets
+      --[no-]hidden       consider hidden changesets
 
 Make sure that single '-v' option shows help and built-ins only for 'dodo' command
   $ hg help -v dodo
@@ -875,7 +875,7 @@
   
   options:
   
-    --mq operate on patch repository
+    --[no-]mq operate on patch repository
   
   global options ([+] can be repeated):
   
@@ -884,6 +884,6 @@
       --cwd DIR           change working directory
    -y --noninteractive    do not prompt, automatically pick the first choice for
                           all prompts
-   -q --quiet             suppress output
-   -v --verbose           enable additional output
+   -q --[no-]quiet        suppress output
+   -v --[no-]verbose      enable additional output
       --config CONFIG [+] set/override config option (use 'section.name=value')
@@ -889,5 +889,5 @@
       --config CONFIG [+] set/override config option (use 'section.name=value')
-      --debug             enable debugging output
-      --debugger          start debugger
+      --[no-]debug        enable debugging output
+      --[no-]debugger     start debugger
       --encoding ENCODE   set the charset encoding (default: ascii)
       --encodingmode MODE set the charset encoding mode (default: strict)
@@ -892,7 +892,7 @@
       --encoding ENCODE   set the charset encoding (default: ascii)
       --encodingmode MODE set the charset encoding mode (default: strict)
-      --traceback         always print a traceback on exception
-      --time              time how long the command takes
-      --profile           print command execution profile
+      --[no-]traceback    always print a traceback on exception
+      --[no-]time         time how long the command takes
+      --[no-]profile      print command execution profile
       --version           output version information and exit
    -h --help              display help and exit
@@ -897,6 +897,6 @@
       --version           output version information and exit
    -h --help              display help and exit
-      --hidden            consider hidden changesets
+      --[no-]hidden       consider hidden changesets
 
 In case when extension name doesn't match any of its commands,
 help message should ask for '-v' to get list of built-in aliases
@@ -955,6 +955,6 @@
       --cwd DIR           change working directory
    -y --noninteractive    do not prompt, automatically pick the first choice for
                           all prompts
-   -q --quiet             suppress output
-   -v --verbose           enable additional output
+   -q --[no-]quiet        suppress output
+   -v --[no-]verbose      enable additional output
       --config CONFIG [+] set/override config option (use 'section.name=value')
@@ -960,5 +960,5 @@
       --config CONFIG [+] set/override config option (use 'section.name=value')
-      --debug             enable debugging output
-      --debugger          start debugger
+      --[no-]debug        enable debugging output
+      --[no-]debugger     start debugger
       --encoding ENCODE   set the charset encoding (default: ascii)
       --encodingmode MODE set the charset encoding mode (default: strict)
@@ -963,7 +963,7 @@
       --encoding ENCODE   set the charset encoding (default: ascii)
       --encodingmode MODE set the charset encoding mode (default: strict)
-      --traceback         always print a traceback on exception
-      --time              time how long the command takes
-      --profile           print command execution profile
+      --[no-]traceback    always print a traceback on exception
+      --[no-]time         time how long the command takes
+      --[no-]profile      print command execution profile
       --version           output version information and exit
    -h --help              display help and exit
@@ -968,6 +968,6 @@
       --version           output version information and exit
    -h --help              display help and exit
-      --hidden            consider hidden changesets
+      --[no-]hidden       consider hidden changesets
 
   $ hg help -v -e dudu
   dudu extension -
@@ -987,6 +987,6 @@
       --cwd DIR           change working directory
    -y --noninteractive    do not prompt, automatically pick the first choice for
                           all prompts
-   -q --quiet             suppress output
-   -v --verbose           enable additional output
+   -q --[no-]quiet        suppress output
+   -v --[no-]verbose      enable additional output
       --config CONFIG [+] set/override config option (use 'section.name=value')
@@ -992,5 +992,5 @@
       --config CONFIG [+] set/override config option (use 'section.name=value')
-      --debug             enable debugging output
-      --debugger          start debugger
+      --[no-]debug        enable debugging output
+      --[no-]debugger     start debugger
       --encoding ENCODE   set the charset encoding (default: ascii)
       --encodingmode MODE set the charset encoding mode (default: strict)
@@ -995,7 +995,7 @@
       --encoding ENCODE   set the charset encoding (default: ascii)
       --encodingmode MODE set the charset encoding mode (default: strict)
-      --traceback         always print a traceback on exception
-      --time              time how long the command takes
-      --profile           print command execution profile
+      --[no-]traceback    always print a traceback on exception
+      --[no-]time         time how long the command takes
+      --[no-]profile      print command execution profile
       --version           output version information and exit
    -h --help              display help and exit
@@ -1000,6 +1000,6 @@
       --version           output version information and exit
    -h --help              display help and exit
-      --hidden            consider hidden changesets
+      --[no-]hidden       consider hidden changesets
 
 Disabled extension commands:
 
diff --git a/tests/test-help.t b/tests/test-help.t
index ff17dff99295e0781b3f147da2c5e5b14d3436e4_dGVzdHMvdGVzdC1oZWxwLnQ=..f3c4edfd35e1d7b469d518da38424ddb27b3d0f8_dGVzdHMvdGVzdC1oZWxwLnQ= 100644
--- a/tests/test-help.t
+++ b/tests/test-help.t
@@ -318,6 +318,6 @@
       --cwd DIR           change working directory
    -y --noninteractive    do not prompt, automatically pick the first choice for
                           all prompts
-   -q --quiet             suppress output
-   -v --verbose           enable additional output
+   -q --[no-]quiet        suppress output
+   -v --[no-]verbose      enable additional output
       --config CONFIG [+] set/override config option (use 'section.name=value')
@@ -323,5 +323,5 @@
       --config CONFIG [+] set/override config option (use 'section.name=value')
-      --debug             enable debugging output
-      --debugger          start debugger
+      --[no-]debug        enable debugging output
+      --[no-]debugger     start debugger
       --encoding ENCODE   set the charset encoding (default: ascii)
       --encodingmode MODE set the charset encoding mode (default: strict)
@@ -326,7 +326,7 @@
       --encoding ENCODE   set the charset encoding (default: ascii)
       --encodingmode MODE set the charset encoding mode (default: strict)
-      --traceback         always print a traceback on exception
-      --time              time how long the command takes
-      --profile           print command execution profile
+      --[no-]traceback    always print a traceback on exception
+      --[no-]time         time how long the command takes
+      --[no-]profile      print command execution profile
       --version           output version information and exit
    -h --help              display help and exit
@@ -331,6 +331,6 @@
       --version           output version information and exit
    -h --help              display help and exit
-      --hidden            consider hidden changesets
+      --[no-]hidden       consider hidden changesets
   
   (use 'hg help' for the full list of commands)
 
@@ -353,8 +353,8 @@
   
    -I --include PATTERN [+] include names matching the given patterns
    -X --exclude PATTERN [+] exclude names matching the given patterns
-   -S --subrepos            recurse into subrepositories
-   -n --dry-run             do not perform actions, just print output
+   -S --[no-]subrepos       recurse into subrepositories
+   -n --[no-]dry-run        do not perform actions, just print output
   
   (some details hidden, use --verbose to show complete help)
 
@@ -404,8 +404,8 @@
   
    -I --include PATTERN [+] include names matching the given patterns
    -X --exclude PATTERN [+] exclude names matching the given patterns
-   -S --subrepos            recurse into subrepositories
-   -n --dry-run             do not perform actions, just print output
+   -S --[no-]subrepos       recurse into subrepositories
+   -n --[no-]dry-run        do not perform actions, just print output
   
   global options ([+] can be repeated):
   
@@ -414,6 +414,6 @@
       --cwd DIR           change working directory
    -y --noninteractive    do not prompt, automatically pick the first choice for
                           all prompts
-   -q --quiet             suppress output
-   -v --verbose           enable additional output
+   -q --[no-]quiet        suppress output
+   -v --[no-]verbose      enable additional output
       --config CONFIG [+] set/override config option (use 'section.name=value')
@@ -419,5 +419,5 @@
       --config CONFIG [+] set/override config option (use 'section.name=value')
-      --debug             enable debugging output
-      --debugger          start debugger
+      --[no-]debug        enable debugging output
+      --[no-]debugger     start debugger
       --encoding ENCODE   set the charset encoding (default: ascii)
       --encodingmode MODE set the charset encoding mode (default: strict)
@@ -422,7 +422,7 @@
       --encoding ENCODE   set the charset encoding (default: ascii)
       --encodingmode MODE set the charset encoding mode (default: strict)
-      --traceback         always print a traceback on exception
-      --time              time how long the command takes
-      --profile           print command execution profile
+      --[no-]traceback    always print a traceback on exception
+      --[no-]time         time how long the command takes
+      --[no-]profile      print command execution profile
       --version           output version information and exit
    -h --help              display help and exit
@@ -427,6 +427,6 @@
       --version           output version information and exit
    -h --help              display help and exit
-      --hidden            consider hidden changesets
+      --[no-]hidden       consider hidden changesets
 
 Test the textwidth config option
 
@@ -464,8 +464,8 @@
   
    -I --include PATTERN [+] include names matching the given patterns
    -X --exclude PATTERN [+] exclude names matching the given patterns
-   -S --subrepos            recurse into subrepositories
-   -n --dry-run             do not perform actions, just print output
+   -S --[no-]subrepos       recurse into subrepositories
+   -n --[no-]dry-run        do not perform actions, just print output
   
   (use 'hg add -h' to show more help)
   [255]
@@ -534,23 +534,23 @@
   
   options ([+] can be repeated):
   
-   -r --rev REV [+]         revision
-   -c --change REV          change made by revision
-   -a --text                treat all files as text
-   -g --git                 use git extended diff format
-      --nodates             omit dates from diff headers
-      --noprefix            omit a/ and b/ prefixes from filenames
-   -p --show-function       show which function each change is in
-      --reverse             produce a diff that undoes the changes
-   -w --ignore-all-space    ignore white space when comparing lines
-   -b --ignore-space-change ignore changes in the amount of white space
-   -B --ignore-blank-lines  ignore changes whose lines are all blank
-   -U --unified NUM         number of lines of context to show
-      --stat                output diffstat-style summary of changes
-      --root DIR            produce diffs relative to subdirectory
-   -I --include PATTERN [+] include names matching the given patterns
-   -X --exclude PATTERN [+] exclude names matching the given patterns
-   -S --subrepos            recurse into subrepositories
+   -r --rev REV [+]              revision
+   -c --change REV               change made by revision
+   -a --[no-]text                treat all files as text
+   -g --[no-]git                 use git extended diff format
+      --[no-]nodates             omit dates from diff headers
+      --[no-]noprefix            omit a/ and b/ prefixes from filenames
+   -p --[no-]show-function       show which function each change is in
+      --[no-]reverse             produce a diff that undoes the changes
+   -w --[no-]ignore-all-space    ignore white space when comparing lines
+   -b --[no-]ignore-space-change ignore changes in the amount of white space
+   -B --[no-]ignore-blank-lines  ignore changes whose lines are all blank
+   -U --unified NUM              number of lines of context to show
+      --[no-]stat                output diffstat-style summary of changes
+      --root DIR                 produce diffs relative to subdirectory
+   -I --include PATTERN [+]      include names matching the given patterns
+   -X --exclude PATTERN [+]      exclude names matching the given patterns
+   -S --[no-]subrepos            recurse into subrepositories
   
   (some details hidden, use --verbose to show complete help)
 
@@ -596,18 +596,18 @@
   
   options ([+] can be repeated):
   
-   -A --all                 show status of all files
-   -m --modified            show only modified files
-   -a --added               show only added files
-   -r --removed             show only removed files
-   -d --deleted             show only deleted (but tracked) files
-   -c --clean               show only files without changes
-   -u --unknown             show only unknown (not tracked) files
-   -i --ignored             show only ignored files
-   -n --no-status           hide status prefix
-   -C --copies              show source of copied files
-   -0 --print0              end filenames with NUL, for use with xargs
+   -A --[no-]all            show status of all files
+   -m --[no-]modified       show only modified files
+   -a --[no-]added          show only added files
+   -r --[no-]removed        show only removed files
+   -d --[no-]deleted        show only deleted (but tracked) files
+   -c --[no-]clean          show only files without changes
+   -u --[no-]unknown        show only unknown (not tracked) files
+   -i --[no-]ignored        show only ignored files
+   -n --[no-]status         hide status prefix
+   -C --[no-]copies         show source of copied files
+   -0 --[no-]print0         end filenames with NUL, for use with xargs
       --rev REV [+]         show difference from revision
       --change REV          list the changed files of a revision
    -I --include PATTERN [+] include names matching the given patterns
    -X --exclude PATTERN [+] exclude names matching the given patterns
@@ -610,8 +610,8 @@
       --rev REV [+]         show difference from revision
       --change REV          list the changed files of a revision
    -I --include PATTERN [+] include names matching the given patterns
    -X --exclude PATTERN [+] exclude names matching the given patterns
-   -S --subrepos            recurse into subrepositories
+   -S --[no-]subrepos       recurse into subrepositories
   
   (some details hidden, use --verbose to show complete help)
 
@@ -717,7 +717,7 @@
   
   options:
   
-    --remote check for push and pull
+    --[no-]remote check for push and pull
   
   (some details hidden, use --verbose to show complete help)
 
@@ -743,7 +743,7 @@
   
       --longdesc VALUE xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
                        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (default: 3)
-   -n --               normal desc
+   -n --[no-]          normal desc
       --newline VALUE  line1 line2
   
   (some details hidden, use --verbose to show complete help)
@@ -1128,5 +1128,5 @@
 
 test deprecated and experimental options is shown with -v
   $ hg help -v debugoptDEP | grep dopt
-    --dopt option is (DEPRECATED)
+    --[no-]dopt option is (DEPRECATED)
   $ hg help -v debugoptEXP | grep eopt
@@ -1132,5 +1132,5 @@
   $ hg help -v debugoptEXP | grep eopt
-    --eopt option is (EXPERIMENTAL)
+    --[no-]eopt option is (EXPERIMENTAL)
 
 #if gettext
 test deprecated option is hidden with translation with untranslated description
@@ -2474,6 +2474,6 @@
   <td>--exclude PATTERN [+]</td>
   <td>exclude names matching the given patterns</td></tr>
   <tr><td>-S</td>
-  <td>--subrepos</td>
+  <td>--[no-]subrepos</td>
   <td>recurse into subrepositories</td></tr>
   <tr><td>-n</td>
@@ -2478,6 +2478,6 @@
   <td>recurse into subrepositories</td></tr>
   <tr><td>-n</td>
-  <td>--dry-run</td>
+  <td>--[no-]dry-run</td>
   <td>do not perform actions, just print output</td></tr>
   </table>
   <p>
@@ -2494,6 +2494,6 @@
   <td>--noninteractive</td>
   <td>do not prompt, automatically pick the first choice for all prompts</td></tr>
   <tr><td>-q</td>
-  <td>--quiet</td>
+  <td>--[no-]quiet</td>
   <td>suppress output</td></tr>
   <tr><td>-v</td>
@@ -2498,8 +2498,8 @@
   <td>suppress output</td></tr>
   <tr><td>-v</td>
-  <td>--verbose</td>
+  <td>--[no-]verbose</td>
   <td>enable additional output</td></tr>
   <tr><td></td>
   <td>--config CONFIG [+]</td>
   <td>set/override config option (use 'section.name=value')</td></tr>
   <tr><td></td>
@@ -2501,8 +2501,8 @@
   <td>enable additional output</td></tr>
   <tr><td></td>
   <td>--config CONFIG [+]</td>
   <td>set/override config option (use 'section.name=value')</td></tr>
   <tr><td></td>
-  <td>--debug</td>
+  <td>--[no-]debug</td>
   <td>enable debugging output</td></tr>
   <tr><td></td>
@@ -2507,6 +2507,6 @@
   <td>enable debugging output</td></tr>
   <tr><td></td>
-  <td>--debugger</td>
+  <td>--[no-]debugger</td>
   <td>start debugger</td></tr>
   <tr><td></td>
   <td>--encoding ENCODE</td>
@@ -2515,6 +2515,6 @@
   <td>--encodingmode MODE</td>
   <td>set the charset encoding mode (default: strict)</td></tr>
   <tr><td></td>
-  <td>--traceback</td>
+  <td>--[no-]traceback</td>
   <td>always print a traceback on exception</td></tr>
   <tr><td></td>
@@ -2519,5 +2519,5 @@
   <td>always print a traceback on exception</td></tr>
   <tr><td></td>
-  <td>--time</td>
+  <td>--[no-]time</td>
   <td>time how long the command takes</td></tr>
   <tr><td></td>
@@ -2522,6 +2522,6 @@
   <td>time how long the command takes</td></tr>
   <tr><td></td>
-  <td>--profile</td>
+  <td>--[no-]profile</td>
   <td>print command execution profile</td></tr>
   <tr><td></td>
   <td>--version</td>
@@ -2530,7 +2530,7 @@
   <td>--help</td>
   <td>display help and exit</td></tr>
   <tr><td></td>
-  <td>--hidden</td>
+  <td>--[no-]hidden</td>
   <td>consider hidden changesets</td></tr>
   </table>
   
@@ -2661,6 +2661,6 @@
   </p>
   <table>
   <tr><td>-A</td>
-  <td>--after</td>
+  <td>--[no-]after</td>
   <td>record delete for missing files</td></tr>
   <tr><td>-f</td>
@@ -2665,5 +2665,5 @@
   <td>record delete for missing files</td></tr>
   <tr><td>-f</td>
-  <td>--force</td>
+  <td>--[no-]force</td>
   <td>forget added files, delete modified files</td></tr>
   <tr><td>-S</td>
@@ -2668,6 +2668,6 @@
   <td>forget added files, delete modified files</td></tr>
   <tr><td>-S</td>
-  <td>--subrepos</td>
+  <td>--[no-]subrepos</td>
   <td>recurse into subrepositories</td></tr>
   <tr><td>-I</td>
   <td>--include PATTERN [+]</td>
@@ -2690,6 +2690,6 @@
   <td>--noninteractive</td>
   <td>do not prompt, automatically pick the first choice for all prompts</td></tr>
   <tr><td>-q</td>
-  <td>--quiet</td>
+  <td>--[no-]quiet</td>
   <td>suppress output</td></tr>
   <tr><td>-v</td>
@@ -2694,8 +2694,8 @@
   <td>suppress output</td></tr>
   <tr><td>-v</td>
-  <td>--verbose</td>
+  <td>--[no-]verbose</td>
   <td>enable additional output</td></tr>
   <tr><td></td>
   <td>--config CONFIG [+]</td>
   <td>set/override config option (use 'section.name=value')</td></tr>
   <tr><td></td>
@@ -2697,8 +2697,8 @@
   <td>enable additional output</td></tr>
   <tr><td></td>
   <td>--config CONFIG [+]</td>
   <td>set/override config option (use 'section.name=value')</td></tr>
   <tr><td></td>
-  <td>--debug</td>
+  <td>--[no-]debug</td>
   <td>enable debugging output</td></tr>
   <tr><td></td>
@@ -2703,6 +2703,6 @@
   <td>enable debugging output</td></tr>
   <tr><td></td>
-  <td>--debugger</td>
+  <td>--[no-]debugger</td>
   <td>start debugger</td></tr>
   <tr><td></td>
   <td>--encoding ENCODE</td>
@@ -2711,6 +2711,6 @@
   <td>--encodingmode MODE</td>
   <td>set the charset encoding mode (default: strict)</td></tr>
   <tr><td></td>
-  <td>--traceback</td>
+  <td>--[no-]traceback</td>
   <td>always print a traceback on exception</td></tr>
   <tr><td></td>
@@ -2715,5 +2715,5 @@
   <td>always print a traceback on exception</td></tr>
   <tr><td></td>
-  <td>--time</td>
+  <td>--[no-]time</td>
   <td>time how long the command takes</td></tr>
   <tr><td></td>
@@ -2718,6 +2718,6 @@
   <td>time how long the command takes</td></tr>
   <tr><td></td>
-  <td>--profile</td>
+  <td>--[no-]profile</td>
   <td>print command execution profile</td></tr>
   <tr><td></td>
   <td>--version</td>
@@ -2726,7 +2726,7 @@
   <td>--help</td>
   <td>display help and exit</td></tr>
   <tr><td></td>
-  <td>--hidden</td>
+  <td>--[no-]hidden</td>
   <td>consider hidden changesets</td></tr>
   </table>
   
diff --git a/tests/test-mq-qrefresh-interactive.t b/tests/test-mq-qrefresh-interactive.t
index ff17dff99295e0781b3f147da2c5e5b14d3436e4_dGVzdHMvdGVzdC1tcS1xcmVmcmVzaC1pbnRlcmFjdGl2ZS50..f3c4edfd35e1d7b469d518da38424ddb27b3d0f8_dGVzdHMvdGVzdC1tcS1xcmVmcmVzaC1pbnRlcmFjdGl2ZS50 100644
--- a/tests/test-mq-qrefresh-interactive.t
+++ b/tests/test-mq-qrefresh-interactive.t
@@ -31,7 +31,7 @@
   
   options ([+] can be repeated):
   
-   -e --edit                invoke editor on commit messages
-   -g --git                 use git extended diff format
-   -s --short               refresh only files already in the patch and
+   -e --[no-]edit           invoke editor on commit messages
+   -g --[no-]git            use git extended diff format
+   -s --[no-]short          refresh only files already in the patch and
                             specified files
@@ -37,3 +37,3 @@
                             specified files
-   -U --currentuser         add/update author field in patch with current user
+   -U --[no-]currentuser    add/update author field in patch with current user
    -u --user USER           add/update author field in patch with given user
@@ -39,5 +39,5 @@
    -u --user USER           add/update author field in patch with given user
-   -D --currentdate         add/update date field in patch with current date
+   -D --[no-]currentdate    add/update date field in patch with current date
    -d --date DATE           add/update date field in patch with given date
    -I --include PATTERN [+] include names matching the given patterns
    -X --exclude PATTERN [+] exclude names matching the given patterns
@@ -73,7 +73,7 @@
   
   options ([+] can be repeated):
   
-   -e --edit                invoke editor on commit messages
-   -g --git                 use git extended diff format
-   -s --short               refresh only files already in the patch and
+   -e --[no-]edit           invoke editor on commit messages
+   -g --[no-]git            use git extended diff format
+   -s --[no-]short          refresh only files already in the patch and
                             specified files
@@ -79,3 +79,3 @@
                             specified files
-   -U --currentuser         add/update author field in patch with current user
+   -U --[no-]currentuser    add/update author field in patch with current user
    -u --user USER           add/update author field in patch with given user
@@ -81,7 +81,7 @@
    -u --user USER           add/update author field in patch with given user
-   -D --currentdate         add/update date field in patch with current date
+   -D --[no-]currentdate    add/update date field in patch with current date
    -d --date DATE           add/update date field in patch with given date
    -I --include PATTERN [+] include names matching the given patterns
    -X --exclude PATTERN [+] exclude names matching the given patterns
    -m --message TEXT        use text as commit message
    -l --logfile FILE        read commit message from file
@@ -83,9 +83,9 @@
    -d --date DATE           add/update date field in patch with given date
    -I --include PATTERN [+] include names matching the given patterns
    -X --exclude PATTERN [+] exclude names matching the given patterns
    -m --message TEXT        use text as commit message
    -l --logfile FILE        read commit message from file
-   -i --interactive         interactively select changes to refresh
+   -i --[no-]interactive    interactively select changes to refresh
   
   (some details hidden, use --verbose to show complete help)
 
diff --git a/tests/test-qrecord.t b/tests/test-qrecord.t
index ff17dff99295e0781b3f147da2c5e5b14d3436e4_dGVzdHMvdGVzdC1xcmVjb3JkLnQ=..f3c4edfd35e1d7b469d518da38424ddb27b3d0f8_dGVzdHMvdGVzdC1xcmVjb3JkLnQ= 100644
--- a/tests/test-qrecord.t
+++ b/tests/test-qrecord.t
@@ -59,22 +59,22 @@
   
   options ([+] can be repeated):
   
-   -A --addremove           mark new/missing files as added/removed before
-                            committing
-      --close-branch        mark a branch head as closed
-      --amend               amend the parent of the working directory
-   -s --secret              use the secret phase for committing
-   -e --edit                invoke editor on commit messages
-   -I --include PATTERN [+] include names matching the given patterns
-   -X --exclude PATTERN [+] exclude names matching the given patterns
-   -m --message TEXT        use text as commit message
-   -l --logfile FILE        read commit message from file
-   -d --date DATE           record the specified date as commit date
-   -u --user USER           record the specified user as committer
-   -S --subrepos            recurse into subrepositories
-   -w --ignore-all-space    ignore white space when comparing lines
-   -b --ignore-space-change ignore changes in the amount of white space
-   -B --ignore-blank-lines  ignore changes whose lines are all blank
+   -A --[no-]addremove           mark new/missing files as added/removed before
+                                 committing
+      --[no-]close-branch        mark a branch head as closed
+      --[no-]amend               amend the parent of the working directory
+   -s --[no-]secret              use the secret phase for committing
+   -e --[no-]edit                invoke editor on commit messages
+   -I --include PATTERN [+]      include names matching the given patterns
+   -X --exclude PATTERN [+]      exclude names matching the given patterns
+   -m --message TEXT             use text as commit message
+   -l --logfile FILE             read commit message from file
+   -d --date DATE                record the specified date as commit date
+   -u --user USER                record the specified user as committer
+   -S --[no-]subrepos            recurse into subrepositories
+   -w --[no-]ignore-all-space    ignore white space when comparing lines
+   -b --[no-]ignore-space-change ignore changes in the amount of white space
+   -B --[no-]ignore-blank-lines  ignore changes whose lines are all blank
   
   (some details hidden, use --verbose to show complete help)
 
@@ -135,20 +135,20 @@
   
   options ([+] can be repeated):
   
-   -e --edit                invoke editor on commit messages
-   -g --git                 use git extended diff format
-   -U --currentuser         add "From: <current user>" to patch
-   -u --user USER           add "From: <USER>" to patch
-   -D --currentdate         add "Date: <current date>" to patch
-   -d --date DATE           add "Date: <DATE>" to patch
-   -I --include PATTERN [+] include names matching the given patterns
-   -X --exclude PATTERN [+] exclude names matching the given patterns
-   -m --message TEXT        use text as commit message
-   -l --logfile FILE        read commit message from file
-   -w --ignore-all-space    ignore white space when comparing lines
-   -b --ignore-space-change ignore changes in the amount of white space
-   -B --ignore-blank-lines  ignore changes whose lines are all blank
-      --mq                  operate on patch repository
+   -e --[no-]edit                invoke editor on commit messages
+   -g --[no-]git                 use git extended diff format
+   -U --[no-]currentuser         add "From: <current user>" to patch
+   -u --user USER                add "From: <USER>" to patch
+   -D --[no-]currentdate         add "Date: <current date>" to patch
+   -d --date DATE                add "Date: <DATE>" to patch
+   -I --include PATTERN [+]      include names matching the given patterns
+   -X --exclude PATTERN [+]      exclude names matching the given patterns
+   -m --message TEXT             use text as commit message
+   -l --logfile FILE             read commit message from file
+   -w --[no-]ignore-all-space    ignore white space when comparing lines
+   -b --[no-]ignore-space-change ignore changes in the amount of white space
+   -B --[no-]ignore-blank-lines  ignore changes whose lines are all blank
+      --[no-]mq                  operate on patch repository
   
   (some details hidden, use --verbose to show complete help)
 
diff --git a/tests/test-record.t b/tests/test-record.t
index ff17dff99295e0781b3f147da2c5e5b14d3436e4_dGVzdHMvdGVzdC1yZWNvcmQudA==..f3c4edfd35e1d7b469d518da38424ddb27b3d0f8_dGVzdHMvdGVzdC1yZWNvcmQudA== 100644
--- a/tests/test-record.t
+++ b/tests/test-record.t
@@ -45,22 +45,22 @@
   
   options ([+] can be repeated):
   
-   -A --addremove           mark new/missing files as added/removed before
-                            committing
-      --close-branch        mark a branch head as closed
-      --amend               amend the parent of the working directory
-   -s --secret              use the secret phase for committing
-   -e --edit                invoke editor on commit messages
-   -I --include PATTERN [+] include names matching the given patterns
-   -X --exclude PATTERN [+] exclude names matching the given patterns
-   -m --message TEXT        use text as commit message
-   -l --logfile FILE        read commit message from file
-   -d --date DATE           record the specified date as commit date
-   -u --user USER           record the specified user as committer
-   -S --subrepos            recurse into subrepositories
-   -w --ignore-all-space    ignore white space when comparing lines
-   -b --ignore-space-change ignore changes in the amount of white space
-   -B --ignore-blank-lines  ignore changes whose lines are all blank
+   -A --[no-]addremove           mark new/missing files as added/removed before
+                                 committing
+      --[no-]close-branch        mark a branch head as closed
+      --[no-]amend               amend the parent of the working directory
+   -s --[no-]secret              use the secret phase for committing
+   -e --[no-]edit                invoke editor on commit messages
+   -I --include PATTERN [+]      include names matching the given patterns
+   -X --exclude PATTERN [+]      exclude names matching the given patterns
+   -m --message TEXT             use text as commit message
+   -l --logfile FILE             read commit message from file
+   -d --date DATE                record the specified date as commit date
+   -u --user USER                record the specified user as committer
+   -S --[no-]subrepos            recurse into subrepositories
+   -w --[no-]ignore-all-space    ignore white space when comparing lines
+   -b --[no-]ignore-space-change ignore changes in the amount of white space
+   -B --[no-]ignore-blank-lines  ignore changes whose lines are all blank
   
   (some details hidden, use --verbose to show complete help)
 
diff --git a/tests/test-shelve.t b/tests/test-shelve.t
index ff17dff99295e0781b3f147da2c5e5b14d3436e4_dGVzdHMvdGVzdC1zaGVsdmUudA==..f3c4edfd35e1d7b469d518da38424ddb27b3d0f8_dGVzdHMvdGVzdC1zaGVsdmUudA== 100644
--- a/tests/test-shelve.t
+++ b/tests/test-shelve.t
@@ -58,5 +58,5 @@
   
   options ([+] can be repeated):
   
-   -A --addremove           mark new/missing files as added/removed before
+   -A --[no-]addremove      mark new/missing files as added/removed before
                             shelving
@@ -62,4 +62,4 @@
                             shelving
-   -u --unknown             store unknown files in the shelve
-      --cleanup             delete all shelved changes
+   -u --[no-]unknown        store unknown files in the shelve
+      --[no-]cleanup        delete all shelved changes
       --date DATE           shelve with the specified commit date
@@ -65,6 +65,6 @@
       --date DATE           shelve with the specified commit date
-   -d --delete              delete the named shelved change(s)
-   -e --edit                invoke editor on commit messages
-   -l --list                list current shelves
+   -d --[no-]delete         delete the named shelved change(s)
+   -e --[no-]edit           invoke editor on commit messages
+   -l --[no-]list           list current shelves
    -m --message TEXT        use text as shelve message
    -n --name NAME           use the given name for the shelved commit
@@ -69,7 +69,7 @@
    -m --message TEXT        use text as shelve message
    -n --name NAME           use the given name for the shelved commit
-   -p --patch               show patch
-   -i --interactive         interactive mode, only works while creating a shelve
-      --stat                output diffstat-style summary of changes
+   -p --[no-]patch          show patch
+   -i --[no-]interactive    interactive mode, only works while creating a shelve
+      --[no-]stat           output diffstat-style summary of changes
    -I --include PATTERN [+] include names matching the given patterns
    -X --exclude PATTERN [+] exclude names matching the given patterns
@@ -74,6 +74,6 @@
    -I --include PATTERN [+] include names matching the given patterns
    -X --exclude PATTERN [+] exclude names matching the given patterns
-      --mq                  operate on patch repository
+      --[no-]mq             operate on patch repository
   
   (some details hidden, use --verbose to show complete help)
 
diff --git a/tests/test-strip.t b/tests/test-strip.t
index ff17dff99295e0781b3f147da2c5e5b14d3436e4_dGVzdHMvdGVzdC1zdHJpcC50..f3c4edfd35e1d7b469d518da38424ddb27b3d0f8_dGVzdHMvdGVzdC1zdHJpcC50 100644
--- a/tests/test-strip.t
+++ b/tests/test-strip.t
@@ -710,5 +710,5 @@
   
    -r --rev REV [+]        strip specified revision (optional, can specify
                            revisions without this option)
-   -f --force              force removal of changesets, discard uncommitted
+   -f --[no-]force         force removal of changesets, discard uncommitted
                            changes (no backup)
@@ -714,4 +714,4 @@
                            changes (no backup)
-      --no-backup          no backups
-   -k --keep               do not modify working directory during strip
+      --[no-]backup        no backups
+   -k --[no-]keep          do not modify working directory during strip
    -B --bookmark VALUE [+] remove revs only reachable from given bookmark
@@ -717,5 +717,5 @@
    -B --bookmark VALUE [+] remove revs only reachable from given bookmark
-      --mq                 operate on patch repository
+      --[no-]mq            operate on patch repository
   
   (use 'hg strip -h' to show more help)
   [255]