[BACK]Return to basic.in CVS log [TXT][DIR] Up to [cvsweb.bsd.lv] / mandoc / regress / roff / shift

File: [cvsweb.bsd.lv] / mandoc / regress / roff / shift / basic.in (download)

Revision 1.1, Thu Aug 23 14:29:42 2018 UTC (6 years ago) by schwarze
Branch: MAIN
CVS Tags: VERSION_1_14_6, VERSION_1_14_5, HEAD

Implement the roff(7) .shift and .return requests,
for example used by groff_hdtbl(7) and groff_mom(7).

Also correctly interpolate arguments during nested macro execution
even after .shift and .return, implemented using a stack of argument
arrays.

Note that only read.c, but not roff.c can detect the end of a macro
execution, and the existence of .shift implies that arguments cannot
be interpolated up front, so unfortunately, this includes a partial
revert of roff.c rev. 1.337, moving argument interpolation back into
the function roff_res().

.\" $OpenBSD: basic.in,v 1.1 2018/08/23 14:16:12 schwarze Exp $
.TH SHIFT_BASIC 1 "August 23, 2018"
.SH NAME
.B shift-basic
\(en the shift request
.SH DESCRIPTION
.de showargs
original arguments:
.BI \\$@
.PP
.shift 2
after shift 2:
.BI \\$@
.PP
.shift
after shift without argument:
.BI \\$@
.PP
.shift 0
after shift 0:
.BI \\$@
..
.de useargs
<\\$*>
..
.showargs one two three four five
.PP
expand to less than three bytes:
.useargs 1
.PP
expand to exactly three bytes:
.useargs x y
.PP
expand to more than three bytes:
.useargs "a longer argument..." "and another"