]> git.cameronkatri.com Git - mandoc.git/blob - TODO
jca@ found .as .shift .while in ratpoison(1)
[mandoc.git] / TODO
1 ************************************************************************
2 * Official mandoc TODO.
3 * $Id: TODO,v 1.154 2013/07/14 11:57:38 schwarze Exp $
4 ************************************************************************
5
6 ************************************************************************
7 * crashes
8 ************************************************************************
9
10 None known right now.
11
12 ************************************************************************
13 * missing features
14 ************************************************************************
15
16 --- missing roff features ----------------------------------------------
17
18 - roff.c should treat \n(.H>23 and \n(.V>19 in the pod2man(1)
19 preamble as true, see for example AUTHORS in MooseX::Getopt.3p
20 reported by Andreas Voegele <mail at andreasvoegele dot com>
21 Tue, 22 Nov 2011 15:34:47 +0100 on ports@
22
23 - .ad (adjust margins)
24 .ad l -- adjust left margin only (flush left)
25 .ad r -- adjust right margin only (flush right)
26 .ad c -- center text on line
27 .ad b -- adjust both margins (alias: .ad n)
28 .na -- temporarily disable adjustment without changing the mode
29 .ad -- re-enable adjustment without changing the mode
30 Adjustment mode is ignored while in no-fill mode (.nf).
31
32 - .as (append to string)
33 found by jca@ in ratpoison(1) Sun, 30 Jun 2013 12:01:09 +0200
34
35 - .ce (center N lines)
36 found by naddy@ in xloadimage(1)
37 found by Juan Francisco Cantero Hurtado <iam at juanfra dot info>
38 in lang/racket(1) Thu, 20 Jun 2013 03:19:11 +0200
39
40 - .fc (field control)
41 found by naddy@ in xloadimage(1)
42
43 - .ns (no-space mode) occurs in xine-config(1)
44 reported by brad@ Sat, 15 Jan 2011 15:45:23 -0500
45
46 - .ta (tab settings) occurs in ircbug(1) and probably gnats(1)
47 reported by brad@ Sat, 15 Jan 2011 15:50:51 -0500
48
49 - .ti (temporary indent)
50 found by naddy@ in xloadimage(1)
51 found by bentley@ in nmh(1) Mon, 23 Apr 2012 13:38:28 -0600
52
53 - .while and .shift
54 found by jca@ in ratpoison(1) Sun, 30 Jun 2013 12:01:09 +0200
55
56 - \c (interrupted text) should prevent the line break
57 even inside .Bd literal; that occurs in chat(8)
58
59 - using undefined strings or macros defines them to be empty
60 wl@ Mon, 14 Nov 2011 14:37:01 +0000
61
62 --- missing mdoc features ----------------------------------------------
63
64 - fix bad block nesting involving multiple identical explicit blocks
65 see the OpenBSD mdoc_macro.c 1.47 commit message
66
67 - .Bl -column .Xo support is missing
68 ultimate goal:
69 restore .Xr and .Dv to
70 lib/libc/compat-43/sigvec.3
71 lib/libc/gen/signal.3
72 lib/libc/sys/sigaction.2
73
74 - edge case: decide how to deal with blk_full bad nesting, e.g.
75 .Sh .Nm .Bk .Nm .Ek .Sh found by jmc@ in ssh-keygen(1)
76 from jmc@ Wed, 14 Jul 2010 18:10:32 +0100
77
78 - \\ is now implemented correctly
79 * when defining strings and macros using .ds and .de
80 * when parsing roff(7) and man(7) macro arguments
81 It does not yet work in mdoc(7) macro arguments
82 because libmdoc does not yet use mandoc_getarg().
83 Also check what happens in plain text, it must be identical to \e.
84
85 - .Bd -filled should not be the same as .Bd -ragged, but align both
86 the left and right margin. In groff, it is implemented in terms
87 of .ad b, which we don't have either. Found in cksum(1).
88
89 - implement blank `Bl -column', such as
90 .Bl -column
91 .It foo Ta bar
92 .El
93
94 - explicitly disallow nested `Bl -column', which would clobber internal
95 flags defined for struct mdoc_macro
96
97 - In .Bl -column .It, the end of the line probably has to be regarded
98 as an implicit .Ta, if there could be one, see the following mildly
99 ugly code from login.conf(5):
100 .Bl -column minpasswordlen program xetcxmotd
101 .It path Ta path Ta value of Dv _PATH_DEFPATH
102 .br
103 Default search path.
104 reported by Michal Mazurek <akfaew at jasminek dot net>
105 via jmc@ Thu, 7 Apr 2011 16:00:53 +0059
106
107 - inside `.Bl -column' phrases, punctuation is handled like normal
108 text, e.g. `.Bl -column .It Fl x . Ta ...' should give "-x -."
109
110 - inside `.Bl -column' phrases, TERMP_IGNDELIM handling by `Pf'
111 is not safe, e.g. `.Bl -column .It Pf a b .' gives "ab."
112 but should give "ab ."
113
114 - set a meaningful default if no `Bl' list type is assigned
115
116 - have a blank `It' head for `Bl -tag' not puke
117
118 - prohibit `Nm' from having non-text HEAD children
119 (e.g., NetBSD mDNSShared/dns-sd.1)
120 (mdoc_html.c and mdoc_term.c `Nm' handlers can be slightly simplified)
121
122 - When there is free text in the SYNOPSIS and that free text contains
123 the .Nm macro, groff somehow understands to treat the .Nm as an in-line
124 macro, while mandoc treats it as a block macro and breaks the line.
125 No idea how the logic for distinguishing in-line and block instances
126 should be, needs investigation.
127 uqs@ Thu, 2 Jun 2011 11:03:51 +0200
128 uqs@ Thu, 2 Jun 2011 11:33:35 +0200
129
130 --- missing man features -----------------------------------------------
131
132 - groff an-ext.tmac macros (.UR, .UE) occur in xine(5)
133 reported by brad@ Sat, 15 Jan 2011 15:45:23 -0500
134 also occur in freeciv-client(6) freeciv-server(6) freeciv-modpack(6)
135 reported by bentley@ Tue, 30 Oct 2012 01:05:57 -0600
136
137 - -T[x]html doesn't stipulate non-collapsing spaces in literal mode
138
139 --- missing tbl features -----------------------------------------------
140
141 - implement basic non-parametric .de to support e.g. sox(1)
142 reported by naddy@ Sat, 16 Oct 2010 23:51:57 +0200
143 *** sox(1) still doesn't work, tbl(1) errors need investigation
144
145 - allow standalone `.' to be interpreted as an end-of-layout
146 delimiter instead of being thrown away as a no-op roff line
147 reported by Yuri Pankov, Wed 18 May 2011 11:34:59 CEST
148
149 --- missing misc features ----------------------------------------------
150
151 - The whatis(1) utility looks for whole words in Nm.
152 If the file name of a page does not agree with the contents of any
153 of its Nm macros (e.g. pool(9)), add the file name as an Nm entry
154 to the mandoc.db as well, such that whatis(1) finds it.
155 If there is a page with a file name that does not appear as a substring
156 neither in Nm nor in Nd, the same fix would allow finding that page
157 with apropos(1) using the file name as a key, as well.
158 Issue reported by tedu@ Fri, 05 Jul 2013 21:15:23 -0400
159
160 - clean up escape sequence handling, creating three classes:
161 (1) fully implemented, or parsed and ignored without loss of content
162 (2) unimplemented, potentially causing loss of content
163 or serious mangling of formatting (e.g. \n) -> ERROR
164 see textproc/mgdiff(1) for nice examples
165 (3) undefined, just output the character -> perhaps WARNING
166
167 - look at pages generated from reStructeredText, e.g. devel/mercurial hg(1)
168 These are a weird mixture of man(7) and custom autogenerated low-level
169 roff stuff. Figure out to what extent we can cope.
170 For details, see http://docutils.sourceforge.net/rst.html
171 noted by stsp@ Sat, 24 Apr 2010 09:17:55 +0200
172 reminded by nicm@ Mon, 3 May 2010 09:52:41 +0100
173
174 - check compatibility with Plan9:
175 http://swtch.com/usr/local/plan9/tmac/tmac.an
176 http://swtch.com/plan9port/man/man7/man.html
177 "Anthony J. Bentley" <anthonyjbentley@gmail.com> 28 Dec 2010 21:58:40 -0700
178
179 ************************************************************************
180 * formatting issues: ugly output
181 ************************************************************************
182
183 - a column list with blank `Ta' cells triggers a spurrious
184 start-with-whitespace printing of a newline
185
186 - double quotes inside double quotes are escaped by doubling them
187 implement this in mdoc(7), too
188 so far, we only have it in roff(7) and man(7)
189 reminded by millert@ Thu, 09 Dec 2010 17:29:52 -0500
190
191 - In .Bl -column,
192 .It Em Authentication<tab>Key Length
193 ought to render "Key Length" with emphasis, too,
194 see OpenBSD iked.conf(5).
195 reported again Nicolas Joly via wiz@ Wed, 12 Oct 2011 00:20:00 +0200
196
197 - empty phrases in .Bl column produce too few blanks
198 try e.g. .Bl -column It Ta Ta
199 reported by millert Fri, 02 Apr 2010 16:13:46 -0400
200
201 - .%T can have trailing punctuation. Currently, it puts the trailing
202 punctuation into a trailing MDOC_TEXT element inside its own scope.
203 That element should rather be outside its scope, such that the
204 punctuation does not get underlines. This is not trivial to
205 implement because .%T then needs some features of in_line_eoln() -
206 slurp all arguments into one single text element - and one feature
207 of in_line() - put trailing punctuation out of scope.
208 Found in mount_nfs(8) and exports(5), search for "Appendix".
209
210 - Trailing punctuation after .%T triggers EOS spacing, at least
211 outside .Rs (eek!). Simply setting ARGSFL_DELIM for .%T is not
212 the right solution, it sends mandoc into an endless loop.
213 reported by Nicolas Joly Sat, 17 Nov 2012 11:49:54 +0100
214
215 - in enclosures, mandoc sometimes fancies a bogus end of sentence
216 reminded by jmc@ Thu, 23 Sep 2010 18:13:39 +0059
217
218 - formatting /usr/local/man/man1/latex2man.1 with groff and mandoc
219 reveals lots of bugs both in groff and mandoc...
220 reported by bentley@ Wed, 22 May 2013 23:49:30 -0600
221
222 ************************************************************************
223 * formatting issues: gratuitous differences
224 ************************************************************************
225
226 - .Rv (and probably .Ex) print different text if an `Nm' has been named
227 or not (run a manual without `Nm blah' to see this). I'm not sure
228 that this exists in the wild, but it's still an error.
229
230 - In .Bl -bullet, the groff bullet is "+\b+\bo\bo", the mandoc bullet
231 is just "o\bo".
232 see for example OpenBSD ksh(1)
233
234 - .Pp between two .It in .Bl -column should produce one,
235 not two blank lines, see e.g. login.conf(5).
236 reported by jmc@ Sun, 17 Apr 2011 14:04:58 +0059
237 reported again by sthen@ Wed, 18 Jan 2012 02:09:39 +0000 (UTC)
238
239 - If the *first* line after .It is .Pp, break the line right after
240 the tag, do not pad with space characters before breaking.
241 See the description of the a, c, and i commands in sed(1).
242
243 - If the first line after .It is .D1, do not assert a blank line
244 in between, see for example tmux(1).
245 reported by nicm@ 13 Jan 2011 00:18:57 +0000
246
247 - Trailing punctuation after .It should trigger EOS spacing.
248 reported by Nicolas Joly Sat, 17 Nov 2012 11:49:54 +0100
249 Probably, this should be fixed somewhere in termp_it_pre(), not sure.
250
251 - .Nx 1.0a
252 should be "NetBSD 1.0A", not "NetBSD 1.0a",
253 see OpenBSD ccdconfig(8).
254
255 - In .Bl -tag, if a tag exceeds the right margin and must be continued
256 on the next line, it must be indented by -width, not width+1;
257 see "rule block|pass" in OpenBSD ifconfig(8).
258
259 - When the -width string contains macros, the macros must be rendered
260 before measuring the width, for example
261 .Bl -tag -width ".Dv message"
262 in magic(5), located in src/usr.bin/file, is the same
263 as -width 7n, not -width 11n.
264 The same applies to .Bl -column column widths;
265 reported again by Nicolas Joly Thu, 1 Mar 2012 13:41:26 +0100 via wiz@ 5 Mar
266
267 - The \& zero-width character counts as output.
268 That is, when it is alone on a line between two .Pp,
269 we want three blank lines, not two as in mandoc.
270
271 - When .Fn arguments exceed one output line, all but the first
272 should be indented, see e.g. rpc(3);
273 reported by jmc@ on discuss@ Fri, 29 Oct 2010 13:48:33 +0100
274 reported again by Nicolas Joly via wiz@ Sun, 18 Sep 2011 18:24:40 +0200
275 Also, we don't want to break the line within the argument of:
276 .Fa "chtype tl"
277
278 - Header lines of excessive length:
279 Port OpenBSD man_term.c rev. 1.25 to mdoc_term.c
280 and document it in mdoc(7) and man(7) COMPATIBILITY
281 found while talking to Chris Bennett
282
283 - trailing whitespace must be ignored even when followed by a font escape,
284 see for example
285 makes
286 \fBdig \fR
287 operate in batch mode
288 in dig(1).
289
290 ************************************************************************
291 * performance issues
292 ************************************************************************
293
294 Several areas can be cleaned up to make mandoc even faster. These are
295
296 - improve hashing mechanism for macros (quite important: performance)
297
298 - improve hashing mechanism for characters (not as important)
299
300 - the PDF file is HUGE: this can be reduced by using relative offsets
301
302 - instead of re-initialising the roff predefined-strings set before each
303 parse, create a read-only version the first time and copy it
304
305 ************************************************************************
306 * structural issues
307 ************************************************************************
308
309 - We use the input line number at several places to distinguish
310 same-line from different-line input. That plainly doesn't work
311 with user-defined macros, leading to random breakage.
312
313 - Find better ways to prevent endless loops
314 in roff(7) macro and string expansion.
315
316 - Finish cleanup of date handling.
317 Decide which formats should be recognized where.
318 Update both mdoc(7) and man(7) documentation.
319 Triggered by Tim van der Molen Tue, 22 Feb 2011 20:30:45 +0100