URI:
       tt11.c - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       tt11.c (1274B)
       ---
            1 #include "a.h"
            2 
            3 /*
            4  * 11. Local Horizontal and Vertical Motions, and the Width Function.
            5  */
            6 
            7 int
            8 e_0(void)
            9 {
           10         /* digit-width space */
           11         return ' ';
           12 }
           13 
           14 int
           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
           36 e_v(void)
           37 {
           38         dv(eval(getqarg()));
           39         return 0;
           40 }
           41 
           42 int
           43 e_u(void)
           44 {
           45         dv(eval(L("-0.5m")));
           46         return 0;
           47 }
           48 
           49 int
           50 e_d(void)
           51 {
           52         dv(eval(L("0.5m")));
           53         return 0;
           54 }
           55 
           56 int
           57 e_r(void)
           58 {
           59         dv(eval(L("-1m")));
           60         return 0;
           61 }
           62 
           63 int
           64 e_h(void)
           65 {
           66         getqarg();
           67         return 0;
           68 }
           69 
           70 int
           71 e_w(void)
           72 {
           73         Rune *a;
           74         Rune buf[40];
           75         static Rune zero;
           76 
           77         a = getqarg();
           78         if(a == nil){
           79                 warn("no arg for \\w");
           80                 a = &zero;
           81         }
           82         runesnprint(buf, sizeof buf, "%ld", runestrlen(a));
           83         pushinputstring(buf);
           84         nr(L("st"), 0);
           85         nr(L("sb"), 0);
           86         nr(L("ct"), 0);
           87         return 0;
           88 }
           89 
           90 int
           91 e_k(void)
           92 {
           93         getname();
           94         warn("%Ck not available", backslash);
           95         return 0;
           96 }
           97 
           98 void
           99 t11init(void)
          100 {
          101         addesc('|', e_nop, 0);
          102         addesc('^', e_nop, 0);
          103         addesc('v', e_v, 0);
          104         addesc('h', e_h, 0);
          105         addesc('w', e_w, 0);
          106         addesc('0', e_0, 0);
          107         addesc('u', e_u, 0);
          108         addesc('d', e_d, 0);
          109         addesc('r', e_r, 0);
          110         addesc('k', e_k, 0);
          111 }