Indicate if an mg function is unsuitable for a startup file (requires
authorlum <lum@openbsd.org>
Tue, 20 Apr 2021 16:34:20 +0000 (16:34 +0000)
committerlum <lum@openbsd.org>
Tue, 20 Apr 2021 16:34:20 +0000 (16:34 +0000)
user interaction).

usr.bin/mg/funmap.c
usr.bin/mg/interpreter.c

index b9207c6..c6c5927 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: funmap.c,v 1.61 2021/04/20 10:02:50 lum Exp $ */
+/*     $OpenBSD: funmap.c,v 1.62 2021/04/20 16:34:20 lum Exp $ */
 
 /* This file is in the public domain */
 
@@ -34,7 +34,7 @@ static struct funmap *funs;
  *  0 = a toggle, non-modifiable insert/delete, region modifier, etc
  *  1 = value can be string or number value (like: file/buf name, search string)
  *  2 = multiple type value required, see auto-execute, or global-set-key, etc
- * -1 = variable length # parameters (unused at moment)
+ * -1 = error: interactive commmand, unsuitable for interpreter
  *
  * Some functions when used interactively may ask for a 'y' or 'n' (or another
  * character) to continue, in excline, a 'y' is assumed. Functions like this
@@ -168,9 +168,9 @@ static struct funmap functnames[] = {
        {prevwind, "previous-window", 0},
        {spawncli, "push-shell", 0},
        {showcwdir, "pwd", 0},
-       {queryrepl, "query-replace", 1},
+       {queryrepl, "query-replace", -1},
 #ifdef REGEX
-       {re_queryrepl, "query-replace-regexp", 1},
+       {re_queryrepl, "query-replace-regexp", -1},
 #endif /* REGEX */
        {quote, "quoted-insert", 1},
 #ifdef REGEX
index e41da1c..3d6500b 100644 (file)
@@ -1,4 +1,4 @@
-/*      $OpenBSD: interpreter.c,v 1.21 2021/04/20 14:26:19 lum Exp $   */
+/*      $OpenBSD: interpreter.c,v 1.22 2021/04/20 16:34:20 lum Exp $   */
 /*
  * This file is in the public domain.
  *
@@ -370,6 +370,9 @@ parsexp(char *begp, const char *par1, const char *par2, int blkid, int expctr)
        if (numparams == 0)
                return (dobeep_msgs("Command takes no arguments:", cmdp));
 
+       if (numparams == -1)
+               return (dobeep_msgs("Interactive command found:", cmdp));
+
        if ((e1 = malloc(sizeof(struct expentry))) == NULL) {
                cleanup();
                return (dobeep_msg("malloc Error"));