about summary refs log tree commit diff
diff options
context:
space:
mode:
authorTanaka Akira <akr@users.sourceforge.net>2000-01-21 10:10:08 +0000
committerTanaka Akira <akr@users.sourceforge.net>2000-01-21 10:10:08 +0000
commitb8907b986b739e3c6b07e5df3f4cf4794dc2bc64 (patch)
treec9e312785eecd116a7b6c332f2f638113d538e28
parent09a9a37aaccf043ad6e9c66344a1b722df633013 (diff)
downloadzsh-b8907b986b739e3c6b07e5df3f4cf4794dc2bc64.tar.gz
zsh-b8907b986b739e3c6b07e5df3f4cf4794dc2bc64.tar.xz
zsh-b8907b986b739e3c6b07e5df3f4cf4794dc2bc64.zip
zsh-workers/9396
-rw-r--r--Doc/Zsh/mod_zle.yo6
-rw-r--r--Functions/Misc/nslookup10
-rw-r--r--Src/Zle/zle_main.c14
3 files changed, 24 insertions, 6 deletions
diff --git a/Doc/Zsh/mod_zle.yo b/Doc/Zsh/mod_zle.yo
index edca157df..9e15cd6ff 100644
--- a/Doc/Zsh/mod_zle.yo
+++ b/Doc/Zsh/mod_zle.yo
@@ -144,7 +144,7 @@ by `tt(bindkey -m)'.
 findex(vared)
 cindex(parameters, editing)
 cindex(editing parameters)
-item(tt(vared) [ tt(-Aach) ] [ tt(-p) var(prompt) ] [ tt(-r) var(rprompt) ] var(name))(
+item(tt(vared) [ tt(-Aache) ] [ tt(-p) var(prompt) ] [ tt(-r) var(rprompt) ] var(name))(
 The value of the parameter var(name) is loaded into the edit
 buffer, and the line editor is invoked.  When the editor exits,
 var(name) is set to the string value returned by the editor.
@@ -161,7 +161,9 @@ created automatically, even without tt(-c).
 If the tt(-p) flag is given, the following string will be taken as
 the prompt to display at the left.  If the tt(-r) flag is given,
 the following string gives the prompt to display at the right.  If the
-tt(-h) flag is specified, the history can be accessed from ZLE.
+tt(-h) flag is specified, the history can be accessed from ZLE. If the 
+tt(-e) flag is given, typing tt(^D) (Control-D) on an empty line
+causes tt(vared) to exit immediatly with a non-zero return value.
 )
 findex(zle)
 cindex(widgets, rebinding)
diff --git a/Functions/Misc/nslookup b/Functions/Misc/nslookup
index 8cbbdce6b..499cabf5a 100644
--- a/Functions/Misc/nslookup
+++ b/Functions/Misc/nslookup
@@ -8,19 +8,23 @@ local tmp line compcontext=nslookup curcontext=':nslookup' pmpt
 trap 'return 130' INT
 trap 'zpty -d nslookup' EXIT
 
-zstyle -s ':nslookup' prompt pmpt || pmpt='> '
+pmpt=()
+zstyle -s ':nslookup' prompt tmp && pmpt=(-p "$tmp")
+zstyle -s ':nslookup' rprompt tmp && pmpt=("$pmpt[@]" -r "$tmp")
+(( $#pmpt )) || pmpt=(-p '> ')
 
 zpty nslookup nslookup
 
 zpty -r nslookup line '*> '
 print -nr "$line"
 
-while line=''; vared -p "$pmpt" line; do
+while line=''; vared -he "$pmpt[@]" line; do
+  print -s "$line"
   [[ "$line" = exit ]] && break
 
   zpty -w nslookup "$line"
 
-  zpty -r nslookup line '*> '
+  zpty -r nslookup line '*> ' || break
   print -nr "$line"
 done
 
diff --git a/Src/Zle/zle_main.c b/Src/Zle/zle_main.c
index abf870655..e82c361d3 100644
--- a/Src/Zle/zle_main.c
+++ b/Src/Zle/zle_main.c
@@ -734,7 +734,7 @@ bin_vared(char *name, char **args, char *ops, int func)
     char *s, *t, *ova = varedarg;
     Value v;
     Param pm = 0;
-    int create = 0;
+    int create = 0, ifl;
     int type = PM_SCALAR, obreaks = breaks, haso = 0;
     char *p1 = NULL, *p2 = NULL;
     FILE *oshout = NULL;
@@ -787,6 +787,10 @@ bin_vared(char *name, char **args, char *ops, int func)
 		/* -h option -- enable history */
 		ops['h'] = 1;
 		break;
+	    case 'e':
+		/* -e option -- enable EOF */
+		ops['e'] = 1;
+		break;
 	    default:
 		/* unrecognised option character */
 		zwarnnam(name, "unknown option: %s", *args, 0);
@@ -834,7 +838,15 @@ bin_vared(char *name, char **args, char *ops, int func)
 	pushnode(bufstack, ztrdup(s));
     } LASTALLOC;
     varedarg = *args;
+    ifl = isfirstln;
+    if (ops['e'])
+	isfirstln = 1;
+    if (ops['h'])
+	hbegin(1);
     t = (char *) zleread(p1, p2, ops['h'] ? ZLRF_HISTORY : 0);
+    if (ops['h'])
+	hend();
+    isfirstln = ifl;
     varedarg = ova;
     if (haso) {
 	close(SHTTY);