summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog10
-rw-r--r--Doc/Zsh/zle.yo8
-rw-r--r--Functions/Zle/read-from-minibuffer2
-rw-r--r--MACHINES7
-rw-r--r--Src/Zle/zle_thingy.c16
5 files changed, 37 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 7c46f1b64..b7c6783cb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2006-03-21  Peter Stephenson  <p.w.stephenson@ntlworld.com>
+
+	* zsh-users/10047 : Doc/Zsh/zle.yo, Src/Zle/zle_thingy.c,
+	Functions/Zle/read_from_minibuffer: add and use -K option
+	to select keymap for use with widget.
+
+2006-03-19  Peter Stephenson  <p.w.stephenson@ntlworld.com>
+
+	* 22638: MACHINES: compilation with cc on Irix 6.5.
+
 2006-03-20  Clint Adams  <clint@zsh.org>
 
 	* 22371, 22372: Src/Zle/zle.h, Src/Zle/zle_word.c: use
diff --git a/Doc/Zsh/zle.yo b/Doc/Zsh/zle.yo
index fb6f508a0..937f70942 100644
--- a/Doc/Zsh/zle.yo
+++ b/Doc/Zsh/zle.yo
@@ -332,7 +332,7 @@ xitem(tt(zle) tt(-U) var(string))
 xitem(tt(zle) tt(-K) var(keymap))
 xitem(tt(zle) tt(-F) [ tt(-L) ] [ var(fd) [ var(handler) ] ])
 xitem(tt(zle) tt(-I))
-item(tt(zle) var(widget) tt([ -n) var(num) tt(]) tt([ -N ]) var(args) ...)(
+item(tt(zle) var(widget) tt([ -n) var(num) tt(]) tt([ -N ] [ -K) var(keymap) tt(]) var(args) ...)(
 The tt(zle) builtin performs a number of different actions concerning
 ZLE.
 
@@ -529,7 +529,7 @@ this may have been by a previous call to `tt(zle -I)' or by a system
 notification.  To test if a zle widget may be called at this point, execute
 tt(zle) with no arguments and examine the return status.
 )
-item(var(widget) tt([ -n) var(num) tt(]) tt([ -N ]) var(args) ...)(
+item(var(widget) tt([ -n) var(num) tt(]) tt([ -N ] [ -K) var(keymap) tt(]) var(args) ...)(
 Invoke the specified widget.  This can only be done when ZLE is
 active; normally this will be within a user-defined widget.
 
@@ -538,6 +538,10 @@ saved and then restored after the call to tt(widget); `tt(-n) var(num)'
 sets the numerical argument temporarily to var(num), while `tt(-N)' sets it
 to the default, i.e. as if there were none.
 
+With the option tt(-K), var(keymap) will be used as the current keymap
+during the execution of the widget.  The previous keymap will be
+restored when the widget exits.
+
 Any further arguments will be passed to the widget.  If it is a shell
 function, these are passed down as positional parameters; for builtin
 widgets it is up to the widget in question what it does with them.
diff --git a/Functions/Zle/read-from-minibuffer b/Functions/Zle/read-from-minibuffer
index ba75cbdce..30dfe8338 100644
--- a/Functions/Zle/read-from-minibuffer
+++ b/Functions/Zle/read-from-minibuffer
@@ -33,7 +33,7 @@ if [[ -n $keys ]]; then
   read -k $keys
   stat=$?
 else
-  zle recursive-edit
+  zle recursive-edit -K main
   stat=$?
   (( stat )) || REPLY=$BUFFER
 fi
diff --git a/MACHINES b/MACHINES
index 820e3655a..973753ebb 100644
--- a/MACHINES
+++ b/MACHINES
@@ -178,8 +178,11 @@ SGI: IRIX 6.2, 6.3
 	Should build `out-of-the-box'.
 
 SGI: IRIX 6.5
-	Should build `out-of-the-box'.
-	Use of gcc for compilation is recommended.
+	Should build `out-of-the-box'; however, if using the native
+	compiler, "cc" rather than "c99" is recommended.  Compilation
+	with gcc is also reported to work.  Multibyte is supported,
+	for example:
+           CC=cc ./configure --enable-multibyte
 
 	On 6.5.2, zsh malloc routines are reported not to work; also
 	full optimization (cc -O3 -OPT:Olimit=0) causes problems.
diff --git a/Src/Zle/zle_thingy.c b/Src/Zle/zle_thingy.c
index 96c9e935e..b0f295e10 100644
--- a/Src/Zle/zle_thingy.c
+++ b/Src/Zle/zle_thingy.c
@@ -642,7 +642,7 @@ bin_zle_call(char *name, char **args, UNUSED(Options ops), UNUSED(char func))
     Thingy t;
     struct modifier modsave = zmod;
     int ret, saveflag = 0;
-    char *wname = *args++;
+    char *wname = *args++, *keymap_restore = NULL, *keymap_tmp;
 
     if (!wname)
 	return !zle_usable();
@@ -680,6 +680,18 @@ bin_zle_call(char *name, char **args, UNUSED(Options ops), UNUSED(char func))
 		zmod.mult = 1;
 		zmod.flags &= ~MOD_MULT;
 		break;
+	    case 'K':
+		keymap_tmp = args[0][1] ? args[0]+1 : args[1];
+		if (!keymap_tmp) {
+		    zwarnname(name, "keymap expected after -%c", NULL, **args);
+		    return 1;
+		}
+		if (!args[0][1])
+		    *++args = "" - 1;
+		keymap_restore = dupstring(curkeymapname);
+		if (selectkeymap(keymap_tmp, 0))
+		    return 1;
+		break;
 	    default:
 		zwarnnam(name, "unknown option: %s", *args, 0);
 		return 1;
@@ -693,6 +705,8 @@ bin_zle_call(char *name, char **args, UNUSED(Options ops), UNUSED(char func))
     unrefthingy(t);
     if (saveflag)
 	zmod = modsave;
+    if (keymap_restore)
+	selectkeymap(keymap_restore, 0);
     return ret;
 }