1 ************************************************************************
2 * Official mandoc TODO.
3 * $Id: TODO,v 1.77 2011/01/12 15:50:42 kristaps Exp $
4 ************************************************************************
6 ************************************************************************
8 ************************************************************************
10 - the roff parser doesn't tolerate additional characters between
11 a macro and the \} terminating a conditional block, e.g.
14 reported by ulrich spoerlein Tue, 19 Oct 2010 20:39:50 +0200
16 ************************************************************************
18 ************************************************************************
20 ************************************************************************
22 ************************************************************************
24 - pod2man expects `tr' to be implemented for \*(-- to work
26 - implement `rm' - it is easy to do and used in the pod2man preamble
27 reminded by brad@ Sun, Jan 09, 2011 at 09:45:58PM -0500
29 - fix bad block nesting involving multiple identical explicit blocks
30 see the OpenBSD mdoc_macro.c 1.47 commit message
32 - .Bl -column .Xo support is missing
34 restore .Xr and .Dv to
35 lib/libc/compat-43/sigvec.3
37 lib/libc/sys/sigaction.2
39 - edge case: decide how to deal with blk_full bad nesting, e.g.
40 .Sh .Nm .Bk .Nm .Ek .Sh found by jmc@ in ssh-keygen(1)
41 from jmc@ Wed, 14 Jul 2010 18:10:32 +0100
43 - \\ is now implemented correctly
44 * when defining strings and macros using .ds and .de
45 * when parsing roff(7) and man(7) macro arguments
46 It does not yet work in mdoc(7) macro arguments
47 because libmdoc does not yet use mandoc_getarg().
48 Also check what happens in plain text, it must be identical to \e.
50 - implement basic non-parametric .de to support e.g. sox(1)
51 reported by naddy@ Sat, 16 Oct 2010 23:51:57 +0200
52 *** sox(1) still doesn't work, tbl(1) errors need investigation
54 - clean up escape sequence handling, creating three classes:
55 (1) fully implemented, or parsed and ignored without loss of content
56 (2) unimplemented, potentially causing loss of content
57 or serious mangling of formatting (e.g. \n) -> ERROR
58 see textproc/mgdiff(1) for nice examples
59 (3) undefined, just output the character -> perhaps WARNING
61 - look at pages generated from reStructeredText, e.g. devel/mercurial hg(1)
62 These are a weird mixture of man(7) and custom autogenerated low-level
63 roff stuff. Figure out to what extent we can cope.
64 noted by stsp@ Sat, 24 Apr 2010 09:17:55 +0200
65 reminded by nicm@ Mon, 3 May 2010 09:52:41 +0100
67 - implement blank `Bl -column', such as
72 - explicitly disallow nested `Bl -column', which would clobber internal
73 flags defined for struct mdoc_macro
75 - inside `.Bl -column' phrases, punctuation is handled like normal
76 text, e.g. `.Bl -column .It Fl x . Ta ...' should give "-x -."
78 - inside `.Bl -column' phrases, TERMP_IGNDELIM handling by `Pf'
79 is not safe, e.g. `.Bl -column .It Pf a b .' gives "ab."
80 but should give "ab ."
82 - set a meaningful default if no `Bl' list type is assigned
84 - have a blank `It' head for `Bl -tag' not puke
86 - prohibit `Nm' from having non-text HEAD children
87 (e.g., NetBSD mDNSShared/dns-sd.1)
88 (mdoc_html.c and mdoc_term.c `Nm' handlers can be slightly simplified)
90 - xloadimage(1) wants .ti (temporary indent), rep by naddy@
92 - bashbug(1) complains "line scope broken" after
95 should either just work or be a warning
98 - check compatibility with Plan9:
99 http://swtch.com/usr/local/plan9/tmac/tmac.an
100 http://swtch.com/plan9port/man/man7/man.html
101 "Anthony J. Bentley" <anthonyjbentley@gmail.com> 28 Dec 2010 21:58:40 -0700
103 ************************************************************************
104 * formatting issues: ugly output
105 ************************************************************************
107 - double quotes inside double quotes are escaped by doubling them
108 implement this in mdoc(7), too
109 so far, we only have it in roff(7) and man(7)
110 reminded by millert@ Thu, 09 Dec 2010 17:29:52 -0500
112 - perl(1) SYNOPSIS looks bad; reported by deraadt@
113 1) man(7) seems to need SYNOPSIS .Nm blocks, too
116 .It Em Authentication<tab>Key Length
117 ought to render "Key Length" with emphasis, too,
118 see OpenBSD iked.conf(5).
120 - empty phrases in .Bl column produce too few blanks
121 try e.g. .Bl -column It Ta Ta
122 reported by millert Fri, 02 Apr 2010 16:13:46 -0400
124 - in enclosures, mandoc sometimes fancies a bogus end of sentence
125 reminded by jmc@ Thu, 23 Sep 2010 18:13:39 +0059
127 ************************************************************************
128 * formatting issues: gratuitious differences
129 ************************************************************************
131 - .Rv (and probably .Ex) print different text if an `Nm' has been named
132 or not (run a manual without `Nm blah' to see this). I'm not sure
133 that this exists in the wild, but it's still an error.
135 - In .Bl -bullet, the groff bullet is "+\b+\bo\bo", the mandoc bullet
137 see for example OpenBSD ksh(1)
139 - The characters "|" and "\*(Ba" should never be bold,
140 not even in the middle of a word, e.g. ".Cm b\*(Bac" in
141 "mknod [-m mode] name b|c major minor"
144 - A bogus .Pp between two .It must not produce a double blank line,
145 see between -R and -r in OpenBSD rm(1), before "update" in mount(8),
146 or in DIAGNOSTICS in init(8).
147 Also have `It' complain if `Pp' is invoked at certain times (not
151 should be "NetBSD 1.0A", not "NetBSD 1.0a",
152 see OpenBSD ccdconfig(8).
154 - In .Bl -tag, if a tag exceeds the right margin and must be continued
155 on the next line, it must be indented by -width, not width+1;
156 see "rule block|pass" in OpenBSD ifconfig(8).
158 - The \& zero-width character counts as output.
159 That is, when it is alone on a line between two .Pp,
160 we want three blank lines, not two as in mandoc.
162 - When .Fn arguments exceed one output line, all but the first
163 should be indented, see e.g. rpc(3);
164 reported by jmc@ on discuss@ Fri, 29 Oct 2010 13:48:33 +0100
166 - Header lines of excessive length:
167 Port OpenBSD man_term.c rev. 1.25 to mdoc_term.c
168 and document it in mdoc(7) and man(7) COMPATIBILITY
169 found while talking to Chris Bennett
171 ************************************************************************
172 * error reporting issues
173 ************************************************************************
175 - downgrade "ERROR: macro requires body argument(s)" to WARNING
176 for the typical man(7) cases, it keeps confusing people
177 reminded by brad@ Sun, Jan 09, 2011 at 09:45:58PM -0500
179 ************************************************************************
181 ************************************************************************
183 Several areas can be cleaned up to make mandoc even faster. These are
185 - improve hashing mechanism for macros (quite important: performance)
187 - improve hashing mechanism for characters (not as important)
189 - the PDF file is HUGE: this can be reduced by using relative offsets
191 ************************************************************************
193 ************************************************************************
195 - Find better ways to prevent endless loops
196 in roff(7) macro and string expansion.