diff options
-rw-r--r-- | man.7 | 26 | ||||
-rw-r--r-- | man_term.c | 37 |
2 files changed, 56 insertions, 7 deletions
@@ -262,7 +262,7 @@ and This section is a canonical reference to all macros, arranged alphabetically. For the scoping of individual macros, see .Sx MACRO SYNTAX . -.Bl -tag -width Ds -offset indent +.Bl -tag -width Ds .It \&B Text is rendered in bold face. .It \&BI @@ -281,6 +281,8 @@ render in italics. Whitespace between arguments is omitted in output. Text is rendered alternately in bold face and roman (the default font). Whitespace between arguments is omitted in output. .It \&HP +Begin a paragraph whose initial output line is left-justified, but +subsequent output lines are indented. .\" TODO. .It \&I Text is rendered in italics. @@ -363,9 +365,23 @@ macro. .El .\" SECTION .Sh COMPATIBILITY -See -.Xr mdoc 7 -for groff compatibility notes. +This section documents compatibility with other roff implementations, at +this time limited to +.Xr groff 1 . +.Bl -hyphen +.It +In quoted literals, groff allowed pair-wise double-quotes to produce a +standalone double-quote in formatted output. This idiosyncratic +behaviour is no longer applicable. +.It +The +.Sq \&sp +macro does not accept negative numbers. +.It +Blocks of whitespace are stripped from both macro and free-form text +lines (except when in literal mode), while groff would retain whitespace +in free-form text lines. +.El .\" SECTION .Sh SEE ALSO .Xr mandoc 1 , @@ -374,7 +390,7 @@ for groff compatibility notes. .Sh AUTHORS The .Nm -utility was written by +reference was written by .An Kristaps Dzonsons Aq kristaps@kth.se . .\" SECTION .Sh CAVEATS @@ -66,6 +66,7 @@ static int pre_sp(DECL_ARGS); static void post_B(DECL_ARGS); static void post_I(DECL_ARGS); +static void post_HP(DECL_ARGS); static void post_SH(DECL_ARGS); static void post_SS(DECL_ARGS); static void post_i(DECL_ARGS); @@ -80,7 +81,7 @@ static const struct termact termacts[MAN_MAX] = { { pre_PP, NULL }, /* PP */ { pre_PP, NULL }, /* P */ { pre_IP, NULL }, /* IP */ - { pre_HP, NULL }, /* HP */ + { pre_HP, post_HP }, /* HP */ { NULL, NULL }, /* SM */ { pre_B, post_B }, /* SB */ { pre_BI, NULL }, /* BI */ @@ -407,12 +408,44 @@ static int pre_HP(DECL_ARGS) { - /* TODO */ + switch (n->type) { + case (MAN_BLOCK): + fmt_block_vspace(p, n); + break; + case (MAN_BODY): + p->flags |= TERMP_NOBREAK; + p->flags |= TERMP_TWOSPACE; + p->offset = INDENT; + p->rmargin = INDENT * 2; + break; + default: + return(0); + } + return(1); } /* ARGSUSED */ +static void +post_HP(DECL_ARGS) +{ + + switch (n->type) { + case (MAN_BODY): + term_flushln(p); + p->flags &= ~TERMP_NOBREAK; + p->flags &= ~TERMP_TWOSPACE; + p->offset = INDENT; + p->rmargin = p->maxrmargin; + break; + default: + break; + } +} + + +/* ARGSUSED */ static int pre_PP(DECL_ARGS) { |