1 #include "a.h"
2
3 /*
4 * 11. Local Horizontal and Vertical Motions, and the Width Function.
5 */
6
7 int
e_0(void)8 e_0(void)
9 {
10 /* digit-width space */
11 return ' ';
12 }
13
14 int
dv(int d)15 dv(int d)
16 {
17 Rune sub[6];
18
19 d += getnr(L(".dv"));
20 nr(L(".dv"), d);
21
22 runestrcpy(sub, L("<sub>"));
23 sub[0] = Ult;
24 sub[4] = Ugt;
25 if(d < 0){
26 sub[3] = 'p';
27 ihtml(L(".dv"), sub);
28 }else if(d > 0)
29 ihtml(L(".dv"), sub);
30 else
31 ihtml(L(".dv"), nil);
32 return 0;
33 }
34
35 int
e_v(void)36 e_v(void)
37 {
38 dv(eval(getqarg()));
39 return 0;
40 }
41
42 int
e_u(void)43 e_u(void)
44 {
45 dv(eval(L("-0.5m")));
46 return 0;
47 }
48
49 int
e_d(void)50 e_d(void)
51 {
52 dv(eval(L("0.5m")));
53 return 0;
54 }
55
56 int
e_r(void)57 e_r(void)
58 {
59 dv(eval(L("-1m")));
60 return 0;
61 }
62
63 int
e_h(void)64 e_h(void)
65 {
66 getqarg();
67 return 0;
68 }
69
70 int
e_w(void)71 e_w(void)
72 {
73 Rune *a;
74 Rune buf[40];
75
76 a = getqarg();
77 runesnprint(buf, sizeof buf, "%ld", runestrlen(a));
78 pushinputstring(buf);
79 nr(L("st"), 0);
80 nr(L("sb"), 0);
81 nr(L("ct"), 0);
82 return 0;
83 }
84
85 int
e_k(void)86 e_k(void)
87 {
88 getname();
89 warn("%Ck not available", backslash);
90 return 0;
91 }
92
93 void
t11init(void)94 t11init(void)
95 {
96 addesc('|', e_nop, 0);
97 addesc('^', e_nop, 0);
98 addesc('v', e_v, 0);
99 addesc('h', e_h, 0);
100 addesc('w', e_w, 0);
101 addesc('0', e_0, 0);
102 addesc('u', e_u, 0);
103 addesc('d', e_d, 0);
104 addesc('r', e_r, 0);
105 addesc('k', e_k, 0);
106 }
107
108