components/mercurial/patches/hgmanpage.patch
author Danek Duvall <danek.duvall@oracle.com>
Mon, 13 Jan 2014 12:44:59 -0800
changeset 1637 54bd5ac8db85
child 7831 d0adeff33adb
permissions -rw-r--r--
18050227 mercurial 2.8.2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1637
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     1
rst2man does a poor job of creating man pages that can be read on Solaris.
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     2
Some of the changes in this patch make the Solaris *roff tools do the right
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     3
thing:
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     4
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     5
  - Getting rid of the rst2man header before the SYNOPSIS
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     6
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     7
  - Changing "\(aq" to "'", and making sure that single quotes don't start
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     8
    a line (at least in a couple of places where it's not safe)
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     9
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    10
  - Changing ".ft C" and ".ft P" to simply ".ft"
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    11
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    12
  - Removing "\%" and "\:"
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    13
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    14
Groff also seems to have as much trouble with the .INDENT/.UNINDENT macros
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    15
as Solaris *roff, de-indenting paragraphs that shouldn't be, so we use
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    16
.RS/.RE instead.  It's not as fancy, but seems to do the job.
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    17
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    18
Applying this patch has no effect in the normal userland build (it can't
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    19
run automatically until docutils is delivered), but it enables a "gmake
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    20
patches/manpage.patch" to regenerate the manpages with the updated text
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    21
(found in rst.patch) with the patched hgmanpage.py, and updates the
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    22
manpage.patch file.
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    23
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    24
--- mercurial-2.7/doc/hgmanpage.py	Thu Aug  1 20:37:39 2013
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    25
+++ mercurial-2.7/doc/hgmanpage.py	Mon Aug 19 14:40:04 2013
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    26
@@ -197,6 +197,7 @@
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    27
         self._in_docinfo = None
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    28
         self._active_table = None
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    29
         self._in_literal = False
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    30
+        self._in_literal_inline = False
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    31
         self.header_written = 0
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    32
         self._line_block = 0
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    33
         self.authors = []
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    34
@@ -212,15 +213,15 @@
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    35
         # ``B`` bold, ``I`` italic, ``R`` roman should be available.
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    36
         # Hopefully ``C`` courier too.
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    37
         self.defs = {
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    38
-                'indent' : ('.INDENT %.1f\n', '.UNINDENT\n'),
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    39
+                'indent' : ('.RS %d\n', '.RE\n'),
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    40
                 'definition_list_item' : ('.TP', ''),
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    41
                 'field_name' : ('.TP\n.B ', '\n'),
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    42
                 'literal' : ('\\fB', '\\fP'),
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    43
-                'literal_block' : ('.sp\n.nf\n.ft C\n', '\n.ft P\n.fi\n'),
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    44
+                'literal_block' : ('.sp\n.nf\n.ft\n', '\n.ft\n.fi\n'),
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    45
 
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    46
                 'option_list_item' : ('.TP\n', ''),
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    47
 
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    48
-                'reference' : (r'\%', r'\:'),
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    49
+                'reference' : (r'', r''),
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    50
                 'emphasis': ('\\fI', '\\fP'),
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    51
                 'strong' : ('\\fB', '\\fP'),
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    52
                 'term' : ('\n.B ', '\n'),
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    53
@@ -267,6 +268,7 @@
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    54
                     self.body[i - 2][:4] == '.TP\n'):
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    55
                     self.body[i] = '.\n'
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    56
                 elif (self.body[i - 1] == '\n' and
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    57
+                    self.body[i - 2] and
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    58
                     self.body[i - 2][0] != '.' and
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    59
                     (self.body[i - 3][:7] == '.TP\n.B '
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    60
                         or self.body[i - 3][:4] == '\n.B ')
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    61
@@ -284,7 +286,6 @@
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    62
         text = text.replace('\\','\\e')
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    63
         replace_pairs = [
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    64
             (u'-', ur'\-'),
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    65
-            (u'\'', ur'\(aq'),
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    66
             (u'ยด', ur'\''),
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    67
             (u'`', ur'\(ga'),
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    68
             ]
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    69
@@ -297,6 +298,15 @@
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    70
             if text[0] == '.':
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    71
                 text = '\\&' + text
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    72
             text = text.replace('\n.', '\n\\&.')
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    73
+        # We need to do the same thing for the inline literals, too
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    74
+        if self._in_literal_inline and text[0] == '.':
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    75
+            if self.body[-2].endswith('\n') and \
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    76
+              self.body[-1] == self.defs['literal'][0]:
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    77
+                  self.body.append('\\&')
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    78
+        # Single quotes starting a line are harmful, too.
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    79
+        if text[0] == "'":
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    80
+                text = '\\&' + text
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    81
+        text = text.replace("\n'", "\n\\&'")
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    82
         self.body.append(text)
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    83
 
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    84
     def depart_Text(self, node):
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    85
@@ -381,7 +391,6 @@
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    86
         if self.header_written:
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    87
             return
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    88
         self.body.append(self.header())
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    89
-        self.body.append(MACRO_DEF)
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    90
         self.header_written = 1
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    91
 
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    92
     def visit_address(self, node):
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    93
@@ -795,8 +804,10 @@
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    94
 
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    95
     def visit_literal(self, node):
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    96
         self.body.append(self.defs['literal'][0])
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    97
+        self._in_literal_inline = True
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    98
 
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    99
     def depart_literal(self, node):
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   100
+        self._in_literal_inline = False
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   101
         self.body.append(self.defs['literal'][1])
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   102
 
54bd5ac8db85 18050227 mercurial 2.8.2
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   103
     def visit_literal_block(self, node):