xref: /plan9/sys/src/cmd/htmlroff/t6.c (revision 0c547597109109560d53d0e274a258f0150779c4)
1426d2b71SDavid du Colombier #include "a.h"
2426d2b71SDavid du Colombier 
3426d2b71SDavid du Colombier /*
4426d2b71SDavid du Colombier  * Section 6 - line length and indenting.
5426d2b71SDavid du Colombier  */
6426d2b71SDavid du Colombier 
7426d2b71SDavid du Colombier /* set line length */
8426d2b71SDavid du Colombier void
ll(int v)9426d2b71SDavid du Colombier ll(int v)
10426d2b71SDavid du Colombier {
11426d2b71SDavid du Colombier 	if(v == 0)
12426d2b71SDavid du Colombier 		v = getnr(L(".l0"));
13426d2b71SDavid du Colombier 	nr(L(".l0"), getnr(L(".l")));
14426d2b71SDavid du Colombier 	nr(L(".l"), v);
15426d2b71SDavid du Colombier }
16426d2b71SDavid du Colombier void
r_ll(int argc,Rune ** argv)17426d2b71SDavid du Colombier r_ll(int argc, Rune **argv)
18426d2b71SDavid du Colombier {
19426d2b71SDavid du Colombier 	if(argc < 2)
20426d2b71SDavid du Colombier 		ll(0);
21426d2b71SDavid du Colombier 	else if(argv[1][0] == '+')
22426d2b71SDavid du Colombier 		ll(getnr(L(".l"))+evalscale(argv[1]+1, 'v'));
23426d2b71SDavid du Colombier 	else if(argv[1][0] == '-')
24426d2b71SDavid du Colombier 		ll(getnr(L(".l"))-evalscale(argv[1]+1, 'v'));
25426d2b71SDavid du Colombier 	else
26426d2b71SDavid du Colombier 		ll(evalscale(argv[1], 'm'));
27426d2b71SDavid du Colombier 	if(argc > 2)
28426d2b71SDavid du Colombier 		warn("extra arguments to .ll");
29426d2b71SDavid du Colombier }
30426d2b71SDavid du Colombier 
31426d2b71SDavid du Colombier void
in(int v)32426d2b71SDavid du Colombier in(int v)
33426d2b71SDavid du Colombier {
34426d2b71SDavid du Colombier 	nr(L(".i0"), getnr(L(".i")));
35426d2b71SDavid du Colombier 	nr(L(".i"), v);
36*0c547597SDavid du Colombier 	nr(L(".ti"), 0);
37426d2b71SDavid du Colombier 	/* XXX */
38426d2b71SDavid du Colombier }
39426d2b71SDavid du Colombier void
r_in(int argc,Rune ** argv)40426d2b71SDavid du Colombier r_in(int argc, Rune **argv)
41426d2b71SDavid du Colombier {
42*0c547597SDavid du Colombier 	br();
43426d2b71SDavid du Colombier 	if(argc < 2)
44426d2b71SDavid du Colombier 		in(getnr(L(".i0")));
45426d2b71SDavid du Colombier 	else if(argv[1][0] == '+')
46426d2b71SDavid du Colombier 		in(getnr(L(".i"))+evalscale(argv[1]+1, 'm'));
47426d2b71SDavid du Colombier 	else if(argv[1][0] == '-')
48426d2b71SDavid du Colombier 		in(getnr(L(".i"))-evalscale(argv[1]+1, 'm'));
49426d2b71SDavid du Colombier 	else
50426d2b71SDavid du Colombier 		in(evalscale(argv[1], 'm'));
51426d2b71SDavid du Colombier 	if(argc > 3)
52426d2b71SDavid du Colombier 		warn("extra arguments to .in");
53426d2b71SDavid du Colombier }
54426d2b71SDavid du Colombier 
55426d2b71SDavid du Colombier void
ti(int v)56426d2b71SDavid du Colombier ti(int v)
57426d2b71SDavid du Colombier {
58426d2b71SDavid du Colombier 	nr(L(".ti"), v);
59426d2b71SDavid du Colombier }
60426d2b71SDavid du Colombier void
r_ti(int argc,Rune ** argv)61426d2b71SDavid du Colombier r_ti(int argc, Rune **argv)
62426d2b71SDavid du Colombier {
63426d2b71SDavid du Colombier 	USED(argc);
64*0c547597SDavid du Colombier 	br();
65426d2b71SDavid du Colombier 	ti(evalscale(argv[1], 'm'));
66426d2b71SDavid du Colombier }
67426d2b71SDavid du Colombier 
68426d2b71SDavid du Colombier void
t6init(void)69426d2b71SDavid du Colombier t6init(void)
70426d2b71SDavid du Colombier {
71426d2b71SDavid du Colombier 	addreq(L("ll"), r_ll, -1);
72426d2b71SDavid du Colombier 	addreq(L("in"), r_in, -1);
73426d2b71SDavid du Colombier 	addreq(L("ti"), r_ti, 1);
74426d2b71SDavid du Colombier 
75426d2b71SDavid du Colombier 	nr(L(".l"), eval(L("6.5i")));
76426d2b71SDavid du Colombier }
77426d2b71SDavid du Colombier 
78