Blame


1 c42a1d3d 2006-02-21 devnull #include "a.h"
2 c42a1d3d 2006-02-21 devnull
3 c42a1d3d 2006-02-21 devnull /*
4 c42a1d3d 2006-02-21 devnull * 4 - Text filling, centering, and adjusting.
5 c42a1d3d 2006-02-21 devnull * "\ " - unbreakable space
6 c42a1d3d 2006-02-21 devnull * .n register - length of last line
7 c42a1d3d 2006-02-21 devnull * nl register - text baseline position on this page
8 c42a1d3d 2006-02-21 devnull * .h register - baseline high water mark
9 c42a1d3d 2006-02-21 devnull * .k register - current horizontal output position
10 c42a1d3d 2006-02-21 devnull * \p - cause break at end of word, justify
11 c42a1d3d 2006-02-21 devnull * \& - non-printing zero-width filler
12 c42a1d3d 2006-02-21 devnull * tr - output translation
13 c42a1d3d 2006-02-21 devnull * \c - break (but don't) input line in .nf mode
14 c42a1d3d 2006-02-21 devnull * \c - break (but don't) word in .fi mode
15 c42a1d3d 2006-02-21 devnull */
16 c42a1d3d 2006-02-21 devnull
17 c42a1d3d 2006-02-21 devnull int
18 c42a1d3d 2006-02-21 devnull e_space(void)
19 c42a1d3d 2006-02-21 devnull {
20 c42a1d3d 2006-02-21 devnull return 0xA0; /* non-breaking space */
21 c42a1d3d 2006-02-21 devnull }
22 c42a1d3d 2006-02-21 devnull
23 c42a1d3d 2006-02-21 devnull int
24 c42a1d3d 2006-02-21 devnull e_amp(void)
25 c42a1d3d 2006-02-21 devnull {
26 c42a1d3d 2006-02-21 devnull return Uempty;
27 c42a1d3d 2006-02-21 devnull }
28 c42a1d3d 2006-02-21 devnull
29 c42a1d3d 2006-02-21 devnull int
30 c42a1d3d 2006-02-21 devnull e_c(void)
31 c42a1d3d 2006-02-21 devnull {
32 c42a1d3d 2006-02-21 devnull getrune();
33 c42a1d3d 2006-02-21 devnull bol = 1;
34 c42a1d3d 2006-02-21 devnull return 0;
35 c42a1d3d 2006-02-21 devnull }
36 c42a1d3d 2006-02-21 devnull
37 c42a1d3d 2006-02-21 devnull void
38 c42a1d3d 2006-02-21 devnull r_br(int argc, Rune **argv)
39 c42a1d3d 2006-02-21 devnull {
40 c42a1d3d 2006-02-21 devnull USED(argc);
41 c42a1d3d 2006-02-21 devnull USED(argv);
42 c42a1d3d 2006-02-21 devnull br();
43 c42a1d3d 2006-02-21 devnull }
44 c42a1d3d 2006-02-21 devnull
45 c42a1d3d 2006-02-21 devnull /* fill mode on */
46 c42a1d3d 2006-02-21 devnull void
47 c42a1d3d 2006-02-21 devnull r_fi(int argc, Rune **argv)
48 c42a1d3d 2006-02-21 devnull {
49 c42a1d3d 2006-02-21 devnull USED(argc);
50 c42a1d3d 2006-02-21 devnull USED(argv);
51 c42a1d3d 2006-02-21 devnull nr(L(".fi"), 1);
52 cbeb0b26 2006-04-01 devnull /* warn(".fi"); */
53 c42a1d3d 2006-02-21 devnull }
54 c42a1d3d 2006-02-21 devnull
55 c42a1d3d 2006-02-21 devnull /* no-fill mode */
56 c42a1d3d 2006-02-21 devnull void
57 c42a1d3d 2006-02-21 devnull r_nf(int argc, Rune **argv)
58 c42a1d3d 2006-02-21 devnull {
59 c42a1d3d 2006-02-21 devnull USED(argc);
60 c42a1d3d 2006-02-21 devnull USED(argv);
61 c42a1d3d 2006-02-21 devnull nr(L(".fi"), 0);
62 c42a1d3d 2006-02-21 devnull }
63 c42a1d3d 2006-02-21 devnull
64 c42a1d3d 2006-02-21 devnull /* adjust */
65 c42a1d3d 2006-02-21 devnull void
66 c42a1d3d 2006-02-21 devnull r_ad(int argc, Rune **argv)
67 c42a1d3d 2006-02-21 devnull {
68 c42a1d3d 2006-02-21 devnull int c, n;
69 c42a1d3d 2006-02-21 devnull
70 c42a1d3d 2006-02-21 devnull nr(L(".j"), getnr(L(".j"))|1);
71 c42a1d3d 2006-02-21 devnull if(argc < 2)
72 c42a1d3d 2006-02-21 devnull return;
73 c42a1d3d 2006-02-21 devnull c = argv[1][0];
74 c42a1d3d 2006-02-21 devnull switch(c){
75 c42a1d3d 2006-02-21 devnull default:
76 c42a1d3d 2006-02-21 devnull fprint(2, "%L: bad adjust %C\n", c);
77 c42a1d3d 2006-02-21 devnull return;
78 c42a1d3d 2006-02-21 devnull case 'r':
79 c42a1d3d 2006-02-21 devnull n = 2*2|1;
80 c42a1d3d 2006-02-21 devnull break;
81 c42a1d3d 2006-02-21 devnull case 'l':
82 c42a1d3d 2006-02-21 devnull n = 0;
83 c42a1d3d 2006-02-21 devnull break;
84 c42a1d3d 2006-02-21 devnull case 'c':
85 c42a1d3d 2006-02-21 devnull n = 1*2|1;
86 c42a1d3d 2006-02-21 devnull break;
87 c42a1d3d 2006-02-21 devnull case 'b':
88 c42a1d3d 2006-02-21 devnull case 'n':
89 c42a1d3d 2006-02-21 devnull n = 0*2|1;
90 c42a1d3d 2006-02-21 devnull break;
91 c42a1d3d 2006-02-21 devnull case '0':
92 c42a1d3d 2006-02-21 devnull case '1':
93 c42a1d3d 2006-02-21 devnull case '2':
94 c42a1d3d 2006-02-21 devnull case '3':
95 c42a1d3d 2006-02-21 devnull case '4':
96 c42a1d3d 2006-02-21 devnull case '5':
97 c42a1d3d 2006-02-21 devnull n = c-'0';
98 c42a1d3d 2006-02-21 devnull break;
99 c42a1d3d 2006-02-21 devnull }
100 c42a1d3d 2006-02-21 devnull nr(L(".j"), n);
101 c42a1d3d 2006-02-21 devnull }
102 c42a1d3d 2006-02-21 devnull
103 c42a1d3d 2006-02-21 devnull /* no adjust */
104 c42a1d3d 2006-02-21 devnull void
105 c42a1d3d 2006-02-21 devnull r_na(int argc, Rune **argv)
106 c42a1d3d 2006-02-21 devnull {
107 c42a1d3d 2006-02-21 devnull USED(argc);
108 c42a1d3d 2006-02-21 devnull USED(argv);
109 c42a1d3d 2006-02-21 devnull
110 c42a1d3d 2006-02-21 devnull nr(L(".j"), getnr(L(".j"))&~1);
111 c42a1d3d 2006-02-21 devnull }
112 c42a1d3d 2006-02-21 devnull
113 c42a1d3d 2006-02-21 devnull /* center next N lines */
114 c42a1d3d 2006-02-21 devnull void
115 c42a1d3d 2006-02-21 devnull r_ce(int argc, Rune **argv)
116 c42a1d3d 2006-02-21 devnull {
117 c42a1d3d 2006-02-21 devnull if(argc < 2)
118 c42a1d3d 2006-02-21 devnull nr(L(".ce"), 1);
119 c42a1d3d 2006-02-21 devnull else
120 c42a1d3d 2006-02-21 devnull nr(L(".ce"), eval(argv[1]));
121 c42a1d3d 2006-02-21 devnull /* XXX set trap */
122 c42a1d3d 2006-02-21 devnull }
123 c42a1d3d 2006-02-21 devnull
124 c42a1d3d 2006-02-21 devnull void
125 c42a1d3d 2006-02-21 devnull t4init(void)
126 c42a1d3d 2006-02-21 devnull {
127 c42a1d3d 2006-02-21 devnull nr(L(".fi"), 1);
128 c42a1d3d 2006-02-21 devnull nr(L(".j"), 1);
129 c42a1d3d 2006-02-21 devnull
130 c42a1d3d 2006-02-21 devnull addreq(L("br"), r_br, 0);
131 c42a1d3d 2006-02-21 devnull addreq(L("fi"), r_fi, 0);
132 c42a1d3d 2006-02-21 devnull addreq(L("nf"), r_nf, 0);
133 c42a1d3d 2006-02-21 devnull addreq(L("ad"), r_ad, -1);
134 c42a1d3d 2006-02-21 devnull addreq(L("na"), r_na, 0);
135 c42a1d3d 2006-02-21 devnull addreq(L("ce"), r_ce, -1);
136 c42a1d3d 2006-02-21 devnull
137 c42a1d3d 2006-02-21 devnull addesc(' ', e_space, 0);
138 c42a1d3d 2006-02-21 devnull addesc('p', e_warn, 0);
139 c42a1d3d 2006-02-21 devnull addesc('&', e_amp, 0);
140 c42a1d3d 2006-02-21 devnull addesc('c', e_c, 0);
141 c42a1d3d 2006-02-21 devnull }
142 c42a1d3d 2006-02-21 devnull