summaryrefslogtreecommitdiff
path: root/usr.bin/mandoc/mdoc_html.c
AgeCommit message (Collapse)Author
2017-05-05move .ll to the roff modulesIngo Schwarze
2017-05-05Move handling of the roff(7) .ft request from the man(7)Ingo Schwarze
modules to the new roff(7) modules. As a side effect, mdoc(7) now handles .ft, too. Of course, do not use that.
2017-05-04Start roff formatter modules for HTML and termininal output,Ingo Schwarze
used by both the mdoc and man formatters, with the ultimate goal of reducing code duplication between the two macro formatters. Made possible by the parser unification. Add the first formatting function (for the .br request).
2017-05-04Parser reorg:Ingo Schwarze
Generate the first node on the roff level: .br Fix some column numbers in diagnostic messages while here.
2017-04-24Continue parser unification:Ingo Schwarze
* Make enum rofft an internal interface as enum roff_tok in "roff.h". * Represent mdoc and man macros in enum roff_tok. * Make TOKEN_NONE a proper enum value and use it throughout. * Put the prologue macros first in the macro tables. * Unify mdoc_macroname[] and man_macroname[] into roff_name[].
2017-04-17Fix handling of trailing punctuation in .Lk.Ingo Schwarze
This macro is unusual in so far as trailing punction needs to remain inside the scope because it must be inside, not after the display of long URIs in terminal output mode. Improves formatting of fw_update(1), help(1), less(1), sendbug(1), acx(4), inet6(4), ipsec(4), oce(4), isakmpd.conf(5), afterboot(8), release(8), traceroute(8).
2017-03-17Fix regression in mdoc_html.c 1.150, man_html 1.87:Ingo Schwarze
For .Sh, .Ss, .SH, .SS, only write selflink if an id could be constructed. Crash reported by Raf Czlonka <rczlonka at gmail dot com>, analysis of root cause by natano@
2017-03-15Minimal support for deep linking into man(7) pages.Ingo Schwarze
As the man(7) language does not provide semantic markup, only .SH, .SS, and .UR become anchors for now.
2017-03-14Slightly increase widths calculated from string lengths (mainlyIngo Schwarze
for .Bl -tag lists and SYNOPSIS .Nm blocks), such that the text still fits even if it is printed in bold font. This is an ugly band aid - but implementing font-dependent width measurements would be a major project and even more difficult for HTML than for PostScript. Issue reported by Jan Stary <hans at stare dot cz>.
2017-03-13Port ctags-style, less(1) :t internal searching from terminal outputIngo Schwarze
to HTML output. For certain macros appearing at the beginning of .It heads, write HTML id="..." attributes such that deep linking works. Write HTML <a> attributes such that you can easily copy out link targets with the mouse. Try: http://man.openbsd.org/vmctl.8#create Feature suggested by <guettliml at Thomas dash Guettler dot de>, some details of the design and implementation by me.
2017-03-13Print title="..." in addition to id="..." attributes for macro keysIngo Schwarze
that can be searched for by apropos(1), such that you see the semantic function in a tooltip when hovering with the mouse.
2017-03-03remove a few redundant conditions that jsg@ found with cppcheckIngo Schwarze
2017-02-22Handle an odd edge case where .It is preceded by .Sm.Ingo Schwarze
NULL dereference in man.cgi reported by Gabriel Guzman <gabe at guzman dash nunez dot com> on misc@.
2017-02-16Remove the ENDBODY_NOSPACE flag, simplifying the code.Ingo Schwarze
Comparing to groff output, it appears that all cases where it was used and made a difference actually require the opposite, ENDBODY_SPACE. I have no idea why i added it back in 2010; maybe to compensate for some other bug that has long been fixed.
2017-02-06The .Nm macro does not only use the default name when it has noIngo Schwarze
argument, but also when the first argument is a child macro. Arcane issue found in the FreeBSD cxgbetool(8) manual that Baptiste Daroussin <bapt at FreeBSD> sent me long ago for a different reason. While solving this, switch to the new technique of doing text production in the validator, reducing code duplication in the formatters, which also makes -Ttree output clearer.
2017-02-05Wrap .St content in a <span class="St">.Ingo Schwarze
Also add forgotten <span class="Ux"> to .At rendering.
2017-02-05fix font selection for .Bf without argumentIngo Schwarze
2017-02-05mark up .Ar, .Fa, .Va, .Ft, and .Vt with <var> rather than <i>;Ingo Schwarze
suggested by bentley@ long ago, but needed lots of cleanup first
2017-02-05for .Rs, use <cite>Ingo Schwarze
2017-02-05Improve <table> syntax:Ingo Schwarze
The <col> element can only appear inside <colgroup>, so use <colgroup>. The <tbody> element is optional and useless, so don't use it. Even if we would ever need <thead> or <tfoot>, <tbody> would still be optional and useless; besides, we will likely never need <thead> or <tfoot>, simply because our languages don't support such functionality.
2017-01-29eliminate one useless struct and one level of indirection;Ingo Schwarze
no functional change
2017-01-28Simplify usage of print_otag() even more:Ingo Schwarze
accept NULL to skip the attribute or format.
2017-01-28.Bl -column with zero columns is legal, so don't segfalt on it.Ingo Schwarze
Bug introduced in rev. 1.123 triggered for example in gssapi(3), analyzed and reported by Michael <Stapelberg at debian dot org>. Simplify the code a bit more while here.
2017-01-25Improve HTML formatting of .Bl -tag.Ingo Schwarze
In particular, when using the style sheet, put the body on the same line as the head for short heads, or on the next line for long heads, in a way that preserves both correct indentation and correct vertical spacing with and without -compact, and with one or more heads per body (hi, Zaphod) - eight use cases so far - and with and without -tag, and with and without -offset, 32 use cases grand total. Using many ideas from zhuk@, from <David dot Dahlberg at fkie dot fraunhofer dot de>, and from Benny Lofgren <bl dash lists at lofgren dot biz>, and a few of my own. This is an excellent demonstration that CSS is an extremely hostile language, much more trapful and much harder to use than, say, C. When matthew@ reported this in July 2014 (!), it was already a known issue, and i no longer remember for how long. My first serious attempt at fixing it (in November 2015) failed miserably. I'd love to see simplifications of both the generated HTML code and of the style sheet, but without breaking any of the 32 use cases, please.
2017-01-21Avoid writing constant style attributes over and over again.Ingo Schwarze
Move them to the style sheet.
2017-01-21clean up the remaining class attributesIngo Schwarze
2017-01-20Standardize class attributes for semantic macros.Ingo Schwarze
Correct markup for .Va and iprove markup for .Dv, .Er, .Ev while here.
2017-01-20standardize .Rs class attributesIngo Schwarze
2017-01-20standardize .Bl and .It class attributesIngo Schwarze
2017-01-19clean up markup of .Bd, .D1, .Dl, .Li, and .Ql;Ingo Schwarze
in particular, stop abuse of <blockquote>
2017-01-19clean up .Sx and .Xr HTML markupIngo Schwarze
2017-01-19Clean up CSS rules for sections and paragraphs.Ingo Schwarze
Start using real macro names for CSS classes.
2017-01-19Start cleanup: trim useless HTML comments and <div> elementsIngo Schwarze
on the <html> and <body> levels.
2017-01-19Implement line breaking of the generated HTML code at space charactersIngo Schwarze
in filled text. This does not affect HTML semantics, but makes the HTML code even more humanly readable. While here, - collapse multiple consecutive space characters in filled text - and insert a blank between style entries.
2017-01-18Make HTML output more human readable by overhauling line break logicIngo Schwarze
around tags and by introducing some simple indentation. No change of HTML semantics intended.
2017-01-17Completely delete the buf field of struct html and all the buf*()Ingo Schwarze
interfaces. Such a static buffer was a bad idea in the first place, causing unfixable truncation that was only prevented by triggering an assertion failure. Instead, let the small number of remaining users allocate and free their own, temporary dynamic buffers, or for the case of .Xr and .In, pass the original data to be assembled in print_otag().
2017-01-17Simplify the usage of print_otag() by making it accept a variableIngo Schwarze
number of arguments. Delete struct htmlpair and all the PAIR_*() macros. Delete enum htmlattr, handle that in print_otag() instead. Minus 190 lines of code; no functional change except better ordering of attributes (class before style) in three cases.
2017-01-11Do text production for .Bt, .Ex, .Rv, .Ud at the validation stageIngo Schwarze
rather than in the formatters. Use NODE_NOSRC flag for .Lb and NODE_NOSRC and NODE_NOPRT for .St. Results in a more rigorous syntax tree and in 135 lines less code. This work was triggered by a question from Abhinav Upadhyay <er dot abhinav dot upadhyay at gmail dot com> (NetBSD) on discuss@.
2017-01-10Use new NODE_NOSRC and NODE_NOPRT flags for .Bx and .At.Ingo Schwarze
More rigorous AST and 40 lines less code.
2017-01-10For the .Ux/.Ox family of macros, do text production at the validationIngo Schwarze
stage rather than in each and every individual formatter, using the new NODE_NOSRC flag. More rigorous and also ten lines less code.
2017-01-10unify names of AST node flags; no change of cpp outputIngo Schwarze
2017-01-10Introduce flags NODE_NOSRC and NODE_NOPRT for AST nodes.Ingo Schwarze
Use them to mark generated nodes and nodes that shall not produce output. Let -Ttree output mode display these new flags. Use NODE_NOSRC for .Ar, .Mt, and .Pa default arguments. Use NODE_NOPRT for .Dd, .Dt, and .Os. These will help to make handling of text production macros more rigorous.
2017-01-09The .No macro is not supposed to produce fixed-width font, it is notIngo Schwarze
the same as .Li, so don't use <code>. Bug reported by <Anton dot Lindqvist at gmail dot com> on tech@.
2017-01-08Indentation must be measured in units of the surrounding text,Ingo Schwarze
not in units of the contained text. Consequently, "display" and "lit" class tags must not be on the same element: First, "display" must set up the indentation, still using the outer units, and only after that, "lit" may change the font. This fixes .Bd -literal which got the wrong indentation. Bug reported by tb@.
2016-01-08Delete the redundant "nchild" member of struct roff_node, replacingIngo Schwarze
most uses by one, a few by two pointer checks, and only one by a tiny loop - not only making data smaller, but code shorter as well. This gets rid of an implicit invariant that confused both static analysis tools and human auditors. No functional change.
2015-12-25Generate simpler in-page links: just replace spaces with underscores.Anthony J. Bentley
So http://example.com/OpenBSD-current/man1/ls.1#x546865204c6f6e6720466f726d6174 becomes http://example.com/OpenBSD-current/man1/ls.1#The_Long_Format ok schwarze@
2015-10-12To make the code more readable, delete 283 /* FALLTHROUGH */ commentsIngo Schwarze
that were right between two adjacent case statement. Keep only those 24 where the first case actually executes some code before falling through to the next case.
2015-10-06modernize style: "return" is not a function; ok cmp(1)Ingo Schwarze
2015-09-26/* NOTREACHED */ after abort() is silly, delete itIngo Schwarze
2015-09-26resolve code duplication and do style cleanup in mdoc_nm_pre(),Ingo Schwarze
no functional change