]> git.cameronkatri.com Git - mandoc.git/blobdiff - TODO
Reduce the amount of code by moving the three copies of the ohash
[mandoc.git] / TODO
diff --git a/TODO b/TODO
index 07415ae9c7809502eaa987302bf2f8be4e93cd06..7be673985b5ad2f9ff7f100411227b87e803f33c 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,6 +1,6 @@
 ************************************************************************
 * Official mandoc TODO.
-* $Id: TODO,v 1.191 2014/12/02 10:41:12 schwarze Exp $
+* $Id: TODO,v 1.214 2015/09/29 18:45:36 schwarze Exp $
 ************************************************************************
 
 Many issues are annotated for difficulty as follows:
@@ -60,54 +60,71 @@ are mere guesses, and some may be wrong.
 - .fc (field control)
   found by naddy@ in xloadimage(1)
   loc **  exist ***  algo *  size *  imp *
-  
+
 - .nr third argument (auto-increment step size, requires \n+)
   found by bentley@ in sbcl(1)  Mon, 9 Dec 2013 18:36:57 -0700
   loc *  exist *  algo *  size *  imp **
 
 - .ns (no-space mode) occurs in xine-config(1)
+  when implementing this, also let .TH set it
   reported by brad@  Sat, 15 Jan 2011 15:45:23 -0500
   loc ***  exist ***  algo ***  size **  imp *
 
-- .ta (tab settings) occurs in ircbug(1) and probably gnats(1)
-  reported by brad@  Sat, 15 Jan 2011 15:50:51 -0500
+- .ta (tab settings)
+  #1 most important issue naddy@ Mon, 16 Feb 2015 20:59:17 +0100
+  ircbug(1) gnats(1) reported by brad@  Sat, 15 Jan 2011 15:50:51 -0500
   also Tcl_NewStringObj(3) via wiz@  Wed, 5 Mar 2014 22:27:43 +0100
   also posix2time(3) Carsten Kunze  Mon, 1 Dec 2014 13:03:10 +0100
   loc **  exist ***  algo **  size **  imp ***
 
 - .ti (temporary indent)
-  found by naddy@ in xloadimage(1)
+  found by naddy@ in xloadimage(1) [devel/libvstr] vstr(3)
   found by bentley@ in nmh(1)  Mon, 23 Apr 2012 13:38:28 -0600
   loc **  exist **  algo **  size *  imp ** (parser reorg helps a lot)
 
-- .while and .shift 
+- .while and .shift
   found by jca@ in ratpoison(1)  Sun, 30 Jun 2013 12:01:09 +0200
   loc *  exist **  algo **  size **  imp **
 
 - \h horizontal move
-  found in cclive(1) DocBook output
-  Anthony J. Bentley on discuss@  Sat, 21 Sep 2013 22:29:34 -0600
-  loc **  exist **  algo **  size *  imp ** (parser reorg helps a lot)
+  #2 most important issue naddy@  Mon, 16 Feb 2015 20:59:17 +0100
+  found in cclive(1) nasm(1) bogofilter(1) asciidoc/DocBook output
+  bentley@ on discuss@  Sat, 21 Sep 2013 22:29:34 -0600
+  naddy@  Thu, 4 Dec 2014 16:26:41 +0100
+  loc **  exist **  algo **  size *  imp *** (parser reorg helps a lot)
 
 - \n+ and \n- numerical register increment and decrement
   found by bentley@ in sbcl(1)  Mon, 9 Dec 2013 18:36:57 -0700
   loc *  exist *  algo *  size *  imp **
 
+- \n(.$ macro argument count number register; ocserv(8) by autogen
+  found by sthen@  Thu, 19 Feb 2015 22:03:01 +0000
+  loc *  exist **  algo *  size *  imp **
+
 - \w'' improve width measurements
   would not be very useful without an expression parser, see below
   needed for Tcl_NewStringObj(3) via wiz@  Wed, 5 Mar 2014 22:27:43 +0100
   loc **  exist ***  algo ***  size *  imp ***
 
+- \\ in high-level macro arguments
+  Currently, \\ is expanded in two situations:
+  1) macro and string definition (roff.c setstrn())
+  2) macro argument parsing (mandoc.c mandoc_getarg())
+  For user defined macros, the second happens in time because of ROFF_REPARSE.
+  But for standard high-level macros, it only happens after entering the
+  high level parsers, which is too late because the code doesn't get
+  back to roff.c roff_res() from that point.  Because this requires
+  distinguishing requests, user-defined macros and standard macros
+  on the roff_res() level, it is hard to solve without the parser reorg.
+  Found by naddy@ in devel/cutils cobfusc(1)  Mon, 16 Feb 2015 19:10:52 +0100
+  loc ***  exist ***  algo ***  size **  imp *
+
 - using undefined strings or macros defines them to be empty
   wl@  Mon, 14 Nov 2011 14:37:01 +0000
   loc *  exist *  algo *  size *  imp *
 
 --- missing mdoc features ----------------------------------------------
 
-- fix bad block nesting involving multiple identical explicit blocks
-  see the OpenBSD mdoc_macro.c 1.47 commit message
-  loc *  exist ***  algo ***  size *  imp **
-
 - .Bl -column .Xo support is missing
   ultimate goal:
   restore .Xr and .Dv to
@@ -121,13 +138,6 @@ are mere guesses, and some may be wrong.
   from jmc@  Wed, 14 Jul 2010 18:10:32 +0100
   loc *  exist ***  algo ***  size **  imp **
 
-- \\ is now implemented correctly
-  * when defining strings and macros using .ds and .de
-  * when parsing roff(7) and man(7) macro arguments
-  It does not yet work in mdoc(7) macro arguments
-  because libmdoc does not yet use mandoc_getarg().
-  Also check what happens in plain text, it must be identical to \e.
-
 - .Bd -centered implies -filled, not -unfilled, which is not
   easy to implement; it requires code similar to .ce, which
   we don't have either.
@@ -168,12 +178,6 @@ are mere guesses, and some may be wrong.
   is not safe, e.g. `.Bl -column .It Pf a b .' gives "ab."
   but should give "ab ."
 
-- set a meaningful default if no `Bl' list type is assigned
-  loc *  exist *  algo *  size *  imp **  (already done?)
-
-- have a blank `It' head for `Bl -tag' not puke
-  loc *  exist *  algo *  size *  imp **  (already done?)
-
 - check whether it is correct that `D1' uses INDENT+1;
   does it need its own constant?
   loc *  exist **  algo **  size *  imp **
@@ -204,6 +208,26 @@ are mere guesses, and some may be wrong.
 
 --- missing tbl features -----------------------------------------------
 
+- horizontal lines in the layout still consume data cells
+  and can be mixed with actual data on the same table line
+  synaptics(4) found by tedu@  Mon, 17 Aug 2015 21:17:42 -0400
+  loc **  exist **  algo **  size **  imp ***
+
+- the "w" layout option is ignored
+  synaptics(4) found by tedu@  Mon, 17 Aug 2015 21:17:42 -0400
+  loc *  exist *  algo *  size *  imp **
+
+- the "s" layout column specifier is used for placement of data
+  into columns, but ignored during column width calculations
+  synaptics(4) found by tedu@  Mon, 17 Aug 2015 21:17:42 -0400
+  loc *  exist **  algo ***  size *  imp **
+
+- support mdoc(7) and man(7) macros inside tbl(7) code;
+  probably requires the parser reorg and letting tbl(7)
+  use roff_node such that macro sets can mix;
+  informed by bapt@ that FreeBSD needs this.
+  loc ***  exist **  algo ***  size **  imp ***
+
 - look at the POSIX manuals in the books/man-pages-posix port,
   they use some unsupported tbl(7) features.
   loc *  exist **  algo **  size **  imp ***
@@ -213,13 +237,13 @@ are mere guesses, and some may be wrong.
   suggested by bentley@  Tue, 14 Oct 2014 04:10:55 -0600
   loc *  exist **  algo *  size *  imp **
 
-- allow standalone `.' to be interpreted as an end-of-layout
-  delimiter instead of being thrown away as a no-op roff line
-  reported by Yuri Pankov, Wed 18 May 2011 11:34:59 CEST
-  loc **  exist **  algo **  size *  imp **
-
 --- missing eqn features -----------------------------------------------
 
+- In a matrix, break the output line after each matrix line.
+  Found in the discussion at CDBUG 2015.
+  Suggested by Avi Weinstock.
+  loc *  exist *  algo *  size *  imp **
+
 - The "size" keyword is parsed, but ignored by the formatter.
   loc *  exist *  algo *  size *  imp *
 
@@ -237,13 +261,9 @@ are mere guesses, and some may be wrong.
   Werner LEMBERG on groff at gnu dot org  Sun, 10 Nov 2013 12:47:46
   loc **  exist **  algo *  size *  imp *
 
-- When makewhatis(8) encounters a FATAL parse error,
-  it silently treats the file as formatted, which makes no sense
-  at all for paths like man1/foo.1 - and which also contradicts
-  what the manual says at the end of the description.
-  The end result will be ENOENT for file names returned
-  by mansearch() in manpage.file.
-  loc *  exist *  algo *  size *  imp **
+- change the default PAGER to more -Es and use the pager
+  even for apropos title line output; req by bapt@
+  loc *  exist *  algo *  size *  imp ***
 
 - makewhatis(8) for preformatted pages:
   parse the section number from the header line
@@ -265,6 +285,12 @@ are mere guesses, and some may be wrong.
 - kettenis wants base roff, ms, and me  Fri, 1 Jan 2010 22:13:15 +0100 (CET)
   loc **  exist **  algo **  size ***  imp *
 
+- Vsevolod Stakhov (FreeBSD) needs either a markdown output formatter
+  for mandoc -mdoc or a markdown to mdoc converter because they
+  have to maintain manuals needed both in markdown and mdoc format.
+  Look at the libsoldout (markdown -> whatever)
+  loc *  exist *  algo *  size **  imp **
+
 --- compatibility checks -----------------------------------------------
 
 - is .Bk implemented correctly in modern groff?
@@ -299,6 +325,9 @@ are mere guesses, and some may be wrong.
   http://swtch.com/plan9port/man/man7/man.html
   "Anthony J. Bentley" <anthonyjbentley@gmail.com> 28 Dec 2010 21:58:40 -0700
 
+- check compatibility with COHERENT troff:
+  http://www.nesssoftware.com/home/mwc/source.php
+
 - check compatibility with the man(7) formatter
   https://raw.githubusercontent.com/rofl0r/hardcore-utils/master/man.c
 
@@ -311,9 +340,18 @@ are mere guesses, and some may be wrong.
 * formatting issues: ugly output
 ************************************************************************
 
-- a column list with blank `Ta' cells triggers a spurrious
+- revisit empty in-line macros
+  look at the difference between "Em x Em ." and "Sq x Em ."
+  Carsten Kunze  Fri, 12 Dec 2014 00:15:41 +0100
+  loc *** exist *** algo *** size * imp **
+
+- a column list with blank `Ta' cells triggers a spurious
   start-with-whitespace printing of a newline
 
+- In .Bl -column, .It a<tab>"b<tab>c"
+  shows the quotes in groff, but not in mandoc
+  loc * exist *** algo ** size * imp **
+
 - In .Bl -column,
   .It Em Authentication<tab>Key Length
   ought to render "Key Length" with emphasis, too,
@@ -350,6 +388,10 @@ are mere guesses, and some may be wrong.
   reminded by jmc@  Thu, 23 Sep 2010 18:13:39 +0059
   loc *  exist **  algo ***  size *  imp ***
 
+- a line starting with "\fB something" counts as starting with whitespace
+  and triggers a line break; found in audio/normalize-mp3(1)
+  loc **  exist *  algo **  size *  imp **
+
 - formatting /usr/local/man/man1/latex2man.1 with groff and mandoc
   reveals lots of bugs both in groff and mandoc...
   reported by bentley@  Wed, 22 May 2013 23:49:30 -0600
@@ -374,6 +416,12 @@ are mere guesses, and some may be wrong.
   see also matthew@  Fri, 18 Jul 2014 19:25:12 -0700
   loc *  exist *  algo **  size *  imp ***
 
+- .Bf at the beginning of a paragraph inserts a bogus 1ex horizontal
+  space, see for example random(3).  Introduced in
+  http://mdocml.bsd.lv/cgi-bin/cvsweb/mdoc_html.c.diff?r1=1.91&r2=1.92
+  reported by deraadt@ Mon, 28 Sep 2015 20:14:13 -0600 (MDT)
+  loc **  exist **  algo **  size *  imp *
+
 - jsg on icb, Nov 3, 2014:
   try to guess Xr in man(7) for hyperlinking
 
@@ -387,6 +435,10 @@ are mere guesses, and some may be wrong.
 - consider whether <var> can be used for Ar Dv Er Ev Fa Va.
   from bentley@  Wed, 13 Aug 2014 09:17:55 -0600
 
+- generate <img> tags in HTML
+  idea from florian@  Tue, 7 Apr 2015 00:26:28 +0000
+  may be possible to implement with .Lk img://something.png alt_text
+
 - check https://github.com/trentm/mdocml
 
 ************************************************************************
@@ -399,16 +451,6 @@ are mere guesses, and some may be wrong.
   Steffen Nurpmeso  Sat, 08 Nov 2014 13:34:59 +0100
   loc *  exist **  algo **  size *  imp **
 
-- .Rv (and probably .Ex) print different text if an `Nm' has been named
-  or not (run a manual without `Nm blah' to see this).  I'm not sure
-  that this exists in the wild, but it's still an error.
-  loc *  exist *  algo *  size *  imp * (already done?)
-
-- In .Bl -bullet, the groff bullet is "+\b+\bo\bo", the mandoc bullet
-  is just "o\bo".  The problem is to not break ps/pdf when fixing.
-  see for example OpenBSD ksh(1)
-  loc **  exist **  algo **  size *  imp **
-
 - In .Bl -enum -width 0n, groff continues one the same line after
   the number, mandoc breaks the line.
   mail to kristaps@  Mon, 20 Jul 2009 02:21:39 +0200
@@ -469,18 +511,45 @@ are mere guesses, and some may be wrong.
   found while talking to Chris Bennett
   loc *  exist *  algo *  size *  imp *
 
+- Sequences of multiple man(7) paragraphs (.PP, .IP) interspersed
+  with .ps and .nf/.fi produce execessive blank lines, see libJudy
+  and graphics/dcmtk.  The parser reorg may help with this.
+
 - trailing whitespace must be ignored even when followed by a font escape,
-  see for example 
+  see for example
     makes
     \fBdig \fR
     operate in batch mode
   in dig(1).
   loc **  exist **  algo **  size *  imp **
 
+************************************************************************
+* portability
+************************************************************************
+
+- word boundaries in regular expressions for whatis(1)
+  set up config tests to use [[:<:]], \<, or nothing
+  Svyatoslav Mishyn  Wed, 17 Dec 2014 11:07:10 +0200
+  reminded by Peter Bray Fri, 03 Apr 2015 23:02:16 +1100
+  loc *  exist *  algo *  size *  imp *
+
+- systems having UTF-8 but not en_US.UTF-8
+  call locale(1) from ./configure, select a UTF-8-locale,
+  and use that for test-wchar.c and term_ascii.c
+  to Markus Waldeck  Sat, 18 Jul 2015 01:55:37 +0200
+  loc *  exist *  algo *  size *  imp *
+
 ************************************************************************
 * warning issues
 ************************************************************************
 
+- Report errors in -O suboption parsing.
+  loc *  exist *  algo *  size *  imp **
+
+- warn when .Sh or .Ss contain other macros
+  Steffen Nurpmeso, savannah.gnu.org/bugs/index.php?45034
+  loc *  exist *  algo *  size *  imp **
+
 - check that MANDOCERR_BADTAB is thrown in the right cases,
   i.e. when finding a literal tab character in fill mode,
   and possibly change the wording of the warning message
@@ -544,7 +613,7 @@ are mere guesses, and some may be wrong.
   How does SQLITE_CONFIG_PAGECACHE actually work?  Document it!
   from kristaps@  Sat, 09 Aug 2014 13:51:36 +0200
 
-Several areas can be cleaned up to make mandoc even faster.  These are 
+Several areas can be cleaned up to make mandoc even faster.  These are
 
 - improve hashing mechanism for macros (quite important: performance)
 
@@ -553,7 +622,7 @@ Several areas can be cleaned up to make mandoc even faster.  These are
 - the PDF file is HUGE: this can be reduced by using relative offsets
 
 - instead of re-initialising the roff predefined-strings set before each
-  parse, create a read-only version the first time and copy it 
+  parse, create a read-only version the first time and copy it
   loc *  exist **  algo **  size *  imp **
 
 ************************************************************************
@@ -569,7 +638,7 @@ Several areas can be cleaned up to make mandoc even faster.  These are
 
 - Find better ways to prevent endless loops
   in roff(7) macro and string expansion.
+
 - Finish cleanup of date handling.
   Decide which formats should be recognized where.
   Update both mdoc(7) and man(7) documentation.
@@ -597,3 +666,9 @@ Several areas can be cleaned up to make mandoc even faster.  These are
  - Have Mac OSX systems automatically disable -static compilation of the
    CGI: -static isn't supported.
 
+************************************************************************
+* to improve in the groff_mdoc(7) macros
+************************************************************************
+
+- use uname(1) to set doc-default-operating-system at install time
+  tobimensch  Mon, 1 Dec 2014 00:25:07 +0100