xref: /plan9/sys/src/cmd/htmlroff/t6.c (revision 499069debb03e99ea217d35fd87fb49e96918a92)
1 #include "a.h"
2 
3 /*
4  * Section 6 - line length and indenting.
5  */
6 
7 /* set line length */
8 void
9 ll(int v)
10 {
11 	if(v == 0)
12 		v = getnr(L(".l0"));
13 	nr(L(".l0"), getnr(L(".l")));
14 	nr(L(".l"), v);
15 }
16 void
17 r_ll(int argc, Rune **argv)
18 {
19 	if(argc < 2)
20 		ll(0);
21 	else if(argv[1][0] == '+')
22 		ll(getnr(L(".l"))+evalscale(argv[1]+1, 'v'));
23 	else if(argv[1][0] == '-')
24 		ll(getnr(L(".l"))-evalscale(argv[1]+1, 'v'));
25 	else
26 		ll(evalscale(argv[1], 'm'));
27 	if(argc > 2)
28 		warn("extra arguments to .ll");
29 }
30 
31 void
32 in(int v)
33 {
34 	nr(L(".i0"), getnr(L(".i")));
35 	nr(L(".i"), v);
36 	/* XXX */
37 }
38 void
39 r_in(int argc, Rune **argv)
40 {
41 	if(argc < 2)
42 		in(getnr(L(".i0")));
43 	else if(argv[1][0] == '+')
44 		in(getnr(L(".i"))+evalscale(argv[1]+1, 'm'));
45 	else if(argv[1][0] == '-')
46 		in(getnr(L(".i"))-evalscale(argv[1]+1, 'm'));
47 	else
48 		in(evalscale(argv[1], 'm'));
49 	if(argc > 3)
50 		warn("extra arguments to .in");
51 }
52 
53 void
54 ti(int v)
55 {
56 	nr(L(".ti"), v);
57 }
58 void
59 r_ti(int argc, Rune **argv)
60 {
61 	USED(argc);
62 	ti(evalscale(argv[1], 'm'));
63 }
64 
65 void
66 t6init(void)
67 {
68 	addreq(L("ll"), r_ll, -1);
69 	addreq(L("in"), r_in, -1);
70 	addreq(L("ti"), r_ti, 1);
71 
72 	nr(L(".l"), eval(L("6.5i")));
73 }
74 
75