summaryrefslogtreecommitdiffstats
path: root/mdoc_term.c
Commit message (Collapse)AuthorAgeFilesLines
* Fix a regression that crept in in man_term.c 1.73 and mdoc_term.c 1.144.Ingo Schwarze2010-06-101-3/+2
| | | | | | | | | | | | | | | | When the title line uses special characters, mandoc will segfault. Thus, first set up the character tables, then print the header, as we always did. Found in OpenBSD /usr/src/usr.sbin/bind/bin/check/named-checkconf.8. While here, set p->tabwidth in terminal_man() for symmetry with terminal_mdoc(), as suggested by millert@ (and already committed to OpenBSD earlier). Since 5 is the default, this is not strictly required, but it is certainly clearer and more robust. "looks fine" kristaps@
* Have the standard manpage header and footer print on every page of -TpsKristaps Dzonsons2010-06-091-6/+5
| | | | | | | | | | | | | | | output. This is more tricky than you may think: we can't just call the header function out-of-state (i.e., before a flushln has occured) because we'd clobber our current state. Thus, we call at the beginning and dump the output into an auxiliary buffer. For the record, I don't think there's any other clean way to do this. The only other Way That Works is to copy-aside *all* termp state, zero it, and do the necessary headf/footf. This is just as complex, as memory needs to be alloc'd and free'd per margin. Unfortunately, this prohibits page numbering (the margin is only printed once), so I'll probably end up re-writing this down the line.
* First check-in of PostScript output. This does not change any logicKristaps Dzonsons2010-06-071-6/+14
| | | | | | within term.c, but does add a small shim over putchar() that switches on the output engine. Prints, for this initial version, only monospace and without font decorations. It's a start.
* Normalise SYNOPSIS behaviour after I gave up on following groff'sKristaps Dzonsons2010-06-071-76/+90
| | | | | | | | | | | | | | | | | | | | | inconsistent behaviour. In short: Some macros are displayed differently in the SYNOPSIS section, particularly Nm, Cd, Fd, Fn, Fo, In, Vt, and Ft. All of these macros are output on their own line. If two such dissimilar macros are pair-wise invoked (except for Ft before Fo or Fn), they are separated by a vertical space, unless in the case of Fo, Fn, and Ft, which are always separated by vertical space. Behaviour ok Jason McIntyre, ingo@. Fallout will be treated case-by-case. I had to clear out some regressions that were testing against groff's stranger behaviours: these will now break, as we don't care about such invocations. Also removed the newline for `Cd' invocation in a non-SYNOPSIS context.
* Merge a fix to avoid a regression in OpenBSD:Ingo Schwarze2010-06-061-0/+3
| | | | | | | | | | | Restore the blank line before .In in SYNOPSIS except right after .Sh or right after another .In. Even though Kristaps says SYNOPSIS blank-line handling is still very much work in progress and more is probably needed, this one is useful to keep in sync with OpenBSD. "fine" kristaps@
* Fixed -Tascii and -Thtml rendering of `Ft' and `Fo'.Kristaps Dzonsons2010-06-061-32/+32
|
* Fix following the first: `Ft' is given special treatment if specified beforeKristaps Dzonsons2010-06-041-1/+3
| | | | `Fn'.
* Fixed `Fn' newline behaviour and added some regression tests to thisKristaps Dzonsons2010-06-041-2/+9
| | | | | | | extent. Documented `Fn'. Please note the COMPATIBILITY note regarding historic groff.
* Documented `In' in full.Kristaps Dzonsons2010-06-041-17/+14
| | | | | | Fixed `In' to behave properly: it wasn't properly breaking lines, formatting, or really anything else. Noted COMPATIBILITY with OpenBSD's groff, which pukes all over `In'.
* Fixed `Fd' to format in the right way. Found when confused by what theKristaps Dzonsons2010-06-041-5/+0
| | | | | hell `Fd' is supposed to do anyway (answer: it's a historical macro and we shouldn't be doing anything with it anyway).
* De Morgan's law not being applied properly. Noted by Ulrich Spoerlein.Kristaps Dzonsons2010-06-011-1/+1
|
* Remove enum mdocargerr from phrase() (unused).Kristaps Dzonsons2010-05-311-0/+1
| | | | | | | | | | | | | | Add `Ta' macro, which is basically a NULL case everywhere but in mdoc_macro.c, where it closes out an existing `It' body scope and opens a new one, then continues parsing as in phrase() (TODO: merge these two?). Fix where scope-breaking was silently just dying instead of printing an error. Fix where trailing `Ta' or tab weren't creating a new MDOC_BODY context. We now support arbitrarily complex `It' contents for `Bl -column'.
* Migrate `Bl -column' phrases to be MDOC_BODY instead of MDOC_HEAD. ThisKristaps Dzonsons2010-05-301-16/+24
| | | | | | | | | | will make it easy for re-entrant parsing of `Ta' macros to fit in with standard closure rules. Added some more regressions for `Bl -column'. Note that one should fail, as documented in the TODO file. Recorded change of AST BNF in mdoc.3.
* Moved printing of empty word [back] into mdoc_action.c so that it's notKristaps Dzonsons2010-05-291-2/+0
| | | | mirrored across front-ends.
* Commit of patch floated on discuss@ a few days ago: if an in_line scopeKristaps Dzonsons2010-05-291-0/+2
| | | | | | | | | | has not been opened and closing punctuation is encountered AND the macro is marked as accepting no-content (or `Li'), then open an empty scope. Added regression tests for `Fl' and `Li' testing this behaviour. Also, squeeze hyph0.in tests into the last characters of each line so that groff doesn't hyphenate and break the test.
* Documented `Ud'.Kristaps Dzonsons2010-05-261-0/+4
| | | | | | | | | | | Proper EOS handling for `Rv', `Ex', `Ud', and `Bt'. Both `Bt' and `Ud' now warn about and discard line arguments (reported by Ulrich Spoerlein). Collapsed posts_xr into posts_wtext (harmless: they're the same thing). Added regressions for `Ud' and `Bt'.
* sync to OpenBSD:Ingo Schwarze2010-05-241-8/+6
| | | | | | | save the visual cursor position in term_flushln() and use that to avoid multiple blank lines in nested lists while still putting subsequent empty list tags each on their own line; "go ahead" kristaps@
* Handle literal tab characters both in literal context (.Bd -literal)Ingo Schwarze2010-05-241-0/+5
| | | | | | | | and outside. In literal context, tab stops are at each eigth column; outside, they are at each fifth column. from OpenBSD mdoc_term.c rev. 1.75; "commit" kristaps@
* fix an obvious typo in print_bvspace():Ingo Schwarze2010-05-241-1/+1
| | | | rev. 1.125 broke vertical spacing in .Bl -column
* Fix 1.125: Add missing return in termp_nm_pre.Joerg Sonnenberger2010-05-221-0/+1
|
* Increase performance by stashing the list type in struct mdoc_node.Kristaps Dzonsons2010-05-171-90/+47
| | | | | | | This will eventually be used so that mdoc_macro can known whether to dump list line arguments into the body (`Bl -column' overflowing). Remove a2list() and arg_listtype() because of this.
* Enable the unified error/warning enumeration in mandoc.h that'sKristaps Dzonsons2010-05-171-2/+6
| | | | | | | | | | | stringified in main.c. Allow `An' to handle an argument and child (with a warning). Allow `Rv' and `Ex' to work without a prior `Nm' as groff does (with a warning). Allow inconsistent column syntax to only raise a warning.
* LIBRARY can also occur in section 9.Kristaps Dzonsons2010-05-151-1/+1
| | | | | | All manual sections (unknown, 3p, 3f, etc.) correctly handled by -mdoc. Useful warning printed if unknown manual section. Checking for manual sections (e.g., LIBRARY) checks only first character, so 3p, 3f, etc. are free.
* Make the output width an option for ascii_alloc and use that to computeJoerg Sonnenberger2010-05-151-1/+1
| | | | the default margin. Hard-code 80 chars/line for now.
* Fixed bug in -Thtml -mdoc where `Lb' would line-break in LIBRARY section.Kristaps Dzonsons2010-05-131-7/+7
| | | | | Fixed assumption that parse-point == 1 equates to beginning of line (false if whitespace separates macro and control character). Fixed line-break for non-first-macro in several SYNOPSIS macros.
* Tiny EOS patch. Back-end cues front-end through flag. Front-end cues ↵Kristaps Dzonsons2010-05-121-0/+3
| | | | output engine with flag.
* -man also now has unbound margins for literal context.Kristaps Dzonsons2010-05-101-2/+2
|
* Setting maxmargin, too (for completion).Kristaps Dzonsons2010-05-091-8/+12
|
* Allow literal contexts to have unbound line lengths (from Ingo Schwarze's ↵Kristaps Dzonsons2010-05-091-22/+55
| | | | mandoc TODO by way of Jason McIntyre).
* Fixed %T: it now correctly underlines, instead of quoting (noted by Jason ↵Kristaps Dzonsons2010-04-081-21/+1
| | | | McIntyre and posted on Ingo Schwarze' mandoc-todo list).
* Allow `Bd' to accept (warn about then ignore) in-line arguments.Kristaps Dzonsons2010-04-061-2/+2
|
* Let `Bl' accept arguments on the head line with a warning (these are ignored ↵Kristaps Dzonsons2010-04-061-1/+11
| | | | in the front-end device) (noted by Theo de Raadt).
* `Fl' now correctly suppresses the trailing space if followed by macros on ↵Kristaps Dzonsons2010-04-061-2/+2
| | | | the same line.
* Merged patch by Ingo Schwarze allowing `Xr' to pass through with no ↵Kristaps Dzonsons2010-04-031-1/+4
| | | | arguments (emits warning of course).
* Integrate Ingo Schwarze's patch for mdoc_iscdelim() (tri-state for opening ↵Kristaps Dzonsons2010-03-291-1/+1
| | | | | | | | | | | and closing macro punctuation). Modify blk_part_exp() to correctly handle leading punctuation before HEAD. Significantly clean up and document blk_part_exp(). Modify blk_part_imp() for to correctly handle leading punctuation before HEAD. Significantly clean up and document blk_part_imp(). Integrate Ingo Schwarze's patch for args() (using new mdoc_iscdelim() format). Documented bad `Ec' handling for later work in mdoc_term.c/mdoc_html.c.
* Fixed two very subtle bugs in retaining overstep and maxrmargin widths ↵Kristaps Dzonsons2010-03-231-0/+3
| | | | between parse sequences.
* Fix in handling Vt in SYNOPSIS with trailing punctuation. Spotted by Joerg ↵Kristaps Dzonsons2010-01-301-2/+18
| | | | Sonnenberger.
* Fix of subtle, but significant, resetting of tags when in list mode. ↵VERSION.1.9.15-pre2Kristaps Dzonsons2010-01-011-16/+19
| | | | Pointed out by Ingo Schwarze.
* More in-code documentation and clarity re-arrangements.Kristaps Dzonsons2010-01-011-36/+65
|
* Big check-in of compatibility layer. This should work on most major ↵Kristaps Dzonsons2010-01-011-5/+4
| | | | architectures. Thanks to Joerg Sonnenberger.
* Correct handling of arbitrary column lengths, which groff handles ↵Kristaps Dzonsons2010-01-011-13/+14
| | | | differently depending on number of visible columns.
* Cleaned-up column handling to be char-compatible with groff (thanks Ingo ↵Kristaps Dzonsons2010-01-011-25/+37
| | | | | | Schwarze). Fixed assertion in exceeded rmargin by ridiculous columns.
* Documented `Fl' in mdoc.7.Kristaps Dzonsons2010-01-011-10/+0
| | | | Backed out stipulation that `Fl ""' is ignored: this is not the case in !OpenBSD groffs.
* `Fl' has each argument be in a separate scope (thanks Ingo Schwarze).Kristaps Dzonsons2010-01-011-1/+16
| | | | | Situation of `Fl [arg]* "" [arg]*' is fixed: empty arguments are ignored. Note that OpenBSD crashes when this happens. Situation of `Fl' is fixed wrt trailing whitespace.
* Basically re-wrote -Tascii font handling: instead of incrementers forKristaps Dzonsons2009-11-121-66/+78
| | | | | | | | | bold and underline, we use a stack (no cascading, no double-font-mode). Font modes with \f only affect the current stack point, as documented in mdoc.7 and man.7. While -mdoc stacks fonts with embedded macros, -man replaces them (the stack is always size 1). This works for all invocations in supported systems' manual corpora to date. It doesn't support groff's insanity with line-scoped \f as documented in mdoc.7.
* Disable metafonts when printing document footer.Kristaps Dzonsons2009-11-101-0/+3
|
* Patch on DragonFly BSD syntax (thanks Sascha Wildner).Kristaps Dzonsons2009-10-311-1/+1
| | | | Noted inclusion into DragonFly BSD (thanks Sascha Wildner).
* More lint fixes.Kristaps Dzonsons2009-10-301-1/+0
| | | | Removed err.h from inclusions (less main.c--still in progress).
* Removed dynamic allocations of header/footer data.Kristaps Dzonsons2009-10-271-23/+8
|
* bzero() -> memset() (noted by Joerg Sonnenberger).Kristaps Dzonsons2009-10-271-1/+1
|