tex: read EXINIT environment variable - neatvi - [fork] simple vi-type editor with UTF-8 support
(HTM) git clone git://src.adamsgaard.dk/neatvi
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
---
(DIR) commit 5da6bb0629bff3c69de6f99671fde70a29ba0ca9
(DIR) parent 9f5b9af976acf7fb6f88d89e3ec5a6fb1c649c4a
(HTM) Author: Ali Gholami Rudi <ali@rudi.ir>
Date: Sat, 27 Jun 2015 20:23:09 +0430
ex: read EXINIT environment variable
Suggested by Peter Aronoff <telemachus@arpinum.org>.
Diffstat:
M ex.c | 29 ++++++++++++++++++++++-------
1 file changed, 22 insertions(+), 7 deletions(-)
---
(DIR) 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, cmd)) {
- 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)