ref: 3f75e6b03cac20d823466414ad8d72dc02232e26
parent: efde0d26267c0cc73323abd95d5fa5357383ecf1
author: Ali Gholami Rudi <ali@rudi.ir>
date: Thu Jul 25 12:10:18 EDT 2013
ren: add .it
--- a/reg.c
+++ b/reg.c
@@ -29,6 +29,7 @@
"ln", ".f", ".i", ".j", ".l",
".L", ".nI", ".nm", ".nM", ".nn",
".nS", ".m", ".s", ".u", ".v",
+ ".it", ".itn",
"\0c", "\0f", "\0h", "\0i", "\0l",
"\0L", "\0n", "\0m", "\0p", "\0s",
"\0t", "\0T", "\0v",
--- a/ren.c
+++ b/ren.c
@@ -935,6 +935,8 @@
}
if (c == '\n' || ren_nl) /* end or start of input line */
n_lb = f_hpos();
+ if (c == '\n' && n_it && --n_itn == 0)
+ trap_exec(n_it);
if (c == '\n' && !wb_part(wb))
n_ce = MAX(0, n_ce - 1);
if (c != ' ') {--- a/roff.h
+++ b/roff.h
@@ -332,6 +332,8 @@
#define n_f (*nreg(REG('.', 'f'))) #define n_h (*nreg(REG('.', 'h'))) #define n_i (*nreg(REG('.', 'i')))+#define n_it (*nreg(map(".it"))) /* .it trap macro */+#define n_itn (*nreg(map(".itn"))) /* .it lines left */ #define n_j (*nreg(REG('.', 'j'))) #define n_l (*nreg(REG('.', 'l'))) #define n_L (*nreg(REG('.', 'L')))--- a/tr.c
+++ b/tr.c
@@ -481,6 +481,16 @@
dev_setbd(dev_pos(args[1]), args[2] ? eval(args[2], 'u') : 0);
}
+static void tr_it(char **args)
+{+ if (args[2]) {+ n_it = map(args[2]);
+ n_itn = eval(args[1], 0);
+ } else {+ n_it = 0;
+ }
+}
+
static char *arg_regname(char *s, int len)
{char *e = n_cp ? s + 2 : s + len;
@@ -687,6 +697,7 @@
{"if", tr_if, mkargs_null}, {"ig", tr_ig}, {"in", tr_in},+ {"it", tr_it}, {"kn", tr_kn}, {"lg", tr_lg}, {"ll", tr_ll},--
⑨