summaryrefslogtreecommitdiffstats
path: root/TODO
blob: 073340598202dbfd9de23c29761e685a9db89c33 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
************************************************************************
* missing features
************************************************************************

- explicit blocks with missing end macro should be implicitely closed
  at the end of the enclosing block, e.g. .Bl It (El) Sh
  reminded by stsp@  in net/pptp pptp.8  Fri, 23 Apr 2010 20:32:39 +0200

- fix bad block nesting involving multiple identical explicit blocks
  see the OpenBSD mdoc_macro.c 1.47 commit message

- we need real .ds; for example, terminfo.3 has
  .ds n 5
  and then later
  \fBterminfo\fR(\*n)
  reported orally by halex@ during c2k10

- \*(Pu is not implemented, but used in mdoc.samples
  implementing .ds would solve this as well
  reminded by jmc@, last on Sun, 27 Jun 2010 15:29:18 +0100

- .Bl -column .Xo support is missing
  ultimate goal:
  restore .Xr and .Dv to
  lib/libc/compat-43/sigvec.3
  lib/libc/gen/signal.3
  lib/libc/sys/sigaction.2

- implement \\
  in plain text, identical to \e
  as a macro argument, identical to \ i.e. escaping the next character
  We do not have macro definitions yet; if we implement them,
  \\ must behave in a macro def like in a macro argument,
  and when using the macro, it must expand yet again.

- look at bsd.lv tbl(1)
  from kristaps@  Fri, 11 Sep 2009 17:10:53 +0200
  also look at the mail from Thomas Klausner wiz at NetBSD
    on Wed, 2 Jun 2010 11:01:29 +0200

- look at pages generated from reStructeredText, e.g. devel/mercurial hg(1)
  These are a weird mixture of man(7) and custom autogenerated low-level
  roff stuff.  Figure out to what extent we can cope.
  noted by stsp@  Sat, 24 Apr 2010 09:17:55 +0200
  reminded by nicm@  Mon, 3 May 2010 09:52:41 +0100

- implement blank `Bl -column', such as
  .Bl -column
  .It foo Ta bar
  .El

- explicitly disallow nested `Bl -column', which would clobber internal
  flags defined for struct mdoc_macro

- set a meaningful default if no `Bl' list type is assigned

- have a blank `It' head for `Bl -tag' not puke

- ignore horrendous m[] font colouring
  reported by J.C. Roberts
  
************************************************************************
* formatting issues: ugly output
************************************************************************

- outside list context, text following .Sm off
  seems to follow without a blank (TERM_NOBLANK reset late?) e.g.
        .Sm off
        .Xo
        .Op Ar bind_address No /
        .Ar port
        .Xc
        .Sm on
        or by enclosing
  reported by jmc Tue, 13 Apr 2010 08:48:14 +0100

- URGENT, this is making many kernel manuals look bad:
  .Ft/.Fn should MAYBE behave in custom section like in SYNOPSIS?
  autoconf.9:
    .Sh DIRECT CONFIGURATION
    .nr nS 1
    .Ft "struct device *"
    .Fn config_found_sm "struct device *parent"
  groff:
    DIRECT CONFIGURATION
      struct device *
      config_found_sm(struct device *parent, ...
  reported by sthen  Tue, 20 Apr 2010 13:42:51 +0100

- indentation got lost in SYNOPSIS, e.g.
   SYNOPSIS
        date [-ajnu] [-d dst] [-r seconds] [-t minutes_west] [+format]
  -          [[[[[[cc]yy]mm]dd]HH]MM[.SS]]
  +     [[[[[[cc]yy]mm]dd]HH]MM[.SS]]
  reminded by Ludo Smissaert  Mon, 10 May 2010 12:15:11 +0200

- empty phrases in .Bl column produce too few blanks
  try e.g. .Bl -column It Ta Ta
  reported by millert Fri, 02 Apr 2010 16:13:46 -0400

************************************************************************
* formatting issues: gratuitious differences
************************************************************************

- FIXED OpenBSD mdoc.c 1.52 schwarze 16.5.10
  lines containing blank characters, and nothing else,
  in literal context (.Bd -literal):
  groff outputs just blank lines "\n"
  mandoc outputs blanks to the left margin,
  then the number of balnks minus one
  NEEDS MERGING TO bsd.lv


************************************************************************
* parser errors without any effect on formatting
************************************************************************

- OpenBSD::PackageName(3p) has "if (block) 90:1" in the parse tree

************************************************************************
* performance issues
************************************************************************

Several areas can be cleaned up to make mandoc even faster.  These are 

- improve caching mechanism to handle other per-element arguments so
  that they need not be recalculated between front- and back-ends (also
  reduces code size and complexity):
    `Bl -column' pointer
    `Bf' font type

- improve hashing mechanism for macros (quite important: performance)

- improve hashing mechanism for characters (not as important)