tex: read EXINIT environment variable - neatvi - [fork] simple vi-type editor w… | |
git clone git://src.adamsgaard.dk/neatvi | |
Log | |
Files | |
Refs | |
README | |
--- | |
commit 5da6bb0629bff3c69de6f99671fde70a29ba0ca9 | |
parent 9f5b9af976acf7fb6f88d89e3ec5a6fb1c649c4a | |
Author: Ali Gholami Rudi <[email protected]> | |
Date: Sat, 27 Jun 2015 20:23:09 +0430 | |
ex: read EXINIT environment variable | |
Suggested by Peter Aronoff <[email protected]>. | |
Diffstat: | |
M ex.c | 29 ++++++++++++++++++++++------- | |
1 file changed, 22 insertions(+), 7 deletions(-) | |
--- | |
diff --git a/ex.c b/ex.c | |
t@@ -154,6 +154,14 @@ static char *ex_argeol(char *ec) | |
return s; | |
} | |
+static char *ex_line(char *s, char *ln) | |
+{ | |
+ while (*s && *s != '|' && *s != '\n') | |
+ *ln++ = *s++; | |
+ *ln = '\0'; | |
+ return *s ? s + 1 : s; | |
+} | |
+ | |
static int ex_search(char *pat) | |
{ | |
struct sbuf *kw; | |
t@@ -769,17 +777,22 @@ static struct excmd { | |
/* execute a single ex command */ | |
void ex_command(char *ln) | |
{ | |
+ char ec[EXLEN]; | |
char cmd[EXLEN]; | |
int i; | |
- ex_cmd(ln, cmd); | |
- for (i = 0; i < LEN(excmds); i++) { | |
- if (!strcmp(excmds[i].abbr, cmd) || !strcmp(excmds[i].name, cm… | |
- excmds[i].ec(ln); | |
- break; | |
+ while (*ln) { | |
+ ln = ex_line(ln, ec); | |
+ ex_cmd(ec, cmd); | |
+ for (i = 0; i < LEN(excmds); i++) { | |
+ if (!strcmp(excmds[i].abbr, cmd) || | |
+ !strcmp(excmds[i].name, cmd)) { | |
+ excmds[i].ec(ec); | |
+ break; | |
+ } | |
} | |
+ if (!xvis && !cmd[0]) | |
+ ec_print(ec); | |
} | |
- if (!xvis && !cmd[0]) | |
- ec_print(ln); | |
lbuf_modified(xb); | |
} | |
t@@ -799,6 +812,8 @@ void ex_init(char **files) | |
char cmd[EXLEN]; | |
snprintf(cmd, sizeof(cmd), "e %s", files[0] ? files[0] : ""); | |
ec_edit(cmd); | |
+ if (getenv("EXINIT")) | |
+ ex_command(getenv("EXINIT")); | |
} | |
void ex_done(void) |