xref: /plan9/sys/src/cmd/htmlroff/t6.c (revision 0c547597109109560d53d0e274a258f0150779c4)
1 #include "a.h"
2 
3 /*
4  * Section 6 - line length and indenting.
5  */
6 
7 /* set line length */
8 void
ll(int v)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
r_ll(int argc,Rune ** argv)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
in(int v)32 in(int v)
33 {
34 	nr(L(".i0"), getnr(L(".i")));
35 	nr(L(".i"), v);
36 	nr(L(".ti"), 0);
37 	/* XXX */
38 }
39 void
r_in(int argc,Rune ** argv)40 r_in(int argc, Rune **argv)
41 {
42 	br();
43 	if(argc < 2)
44 		in(getnr(L(".i0")));
45 	else if(argv[1][0] == '+')
46 		in(getnr(L(".i"))+evalscale(argv[1]+1, 'm'));
47 	else if(argv[1][0] == '-')
48 		in(getnr(L(".i"))-evalscale(argv[1]+1, 'm'));
49 	else
50 		in(evalscale(argv[1], 'm'));
51 	if(argc > 3)
52 		warn("extra arguments to .in");
53 }
54 
55 void
ti(int v)56 ti(int v)
57 {
58 	nr(L(".ti"), v);
59 }
60 void
r_ti(int argc,Rune ** argv)61 r_ti(int argc, Rune **argv)
62 {
63 	USED(argc);
64 	br();
65 	ti(evalscale(argv[1], 'm'));
66 }
67 
68 void
t6init(void)69 t6init(void)
70 {
71 	addreq(L("ll"), r_ll, -1);
72 	addreq(L("in"), r_in, -1);
73 	addreq(L("ti"), r_ti, 1);
74 
75 	nr(L(".l"), eval(L("6.5i")));
76 }
77 
78