zsh: update to 5.3.

This commit is contained in:
Juan RP 2016-12-12 07:13:10 +01:00
parent de23a63d99
commit 470e69d168
3 changed files with 3 additions and 126 deletions

View file

@ -1,94 +0,0 @@
From 0c2d823a7955981e88f7cb5b718a7081d97104f0 Mon Sep 17 00:00:00 2001
From: Peter Stephenson <pws@zsh.org>
Date: Mon, 7 Dec 2015 14:32:52 +0000
Subject: [PATCH] 37337: Delay freeing widget until not in use.
diff --git Src/Zle/zle.h Src/Zle/zle.h
index 2d672de..e9b1428 100644
--- Src/Zle/zle.h
+++ Src/Zle/zle.h
@@ -213,6 +213,8 @@ struct widget {
#define ZLE_KEEPSUFFIX (1<<9) /* DON'T remove added suffix */
#define ZLE_NOTCOMMAND (1<<10) /* widget should not alter lastcmd */
#define ZLE_ISCOMP (1<<11) /* usable for new style completion */
+#define WIDGET_INUSE (1<<12) /* widget is in use */
+#define WIDGET_FREE (1<<13) /* request to free when no longer in use */
/* thingies */
diff --git Src/Zle/zle_main.c Src/Zle/zle_main.c
index 38427e8..1f0c07d 100644
--- Src/Zle/zle_main.c
+++ Src/Zle/zle_main.c
@@ -1344,6 +1344,8 @@ execzlefunc(Thingy func, char **args, int set_bindk)
eofsent = 1;
ret = 1;
} else {
+ int inuse = wflags & WIDGET_INUSE;
+ w->flags |= WIDGET_INUSE;
if(!(wflags & ZLE_KEEPSUFFIX))
removesuffix();
if(!(wflags & ZLE_MENUCMP)) {
@@ -1367,6 +1369,12 @@ execzlefunc(Thingy func, char **args, int set_bindk)
ret = w->u.fn(args);
unqueue_signals();
}
+ if (!inuse) {
+ if (w->flags & WIDGET_FREE)
+ freewidget(w);
+ else
+ w->flags &= ~WIDGET_INUSE;
+ }
if (!(wflags & ZLE_NOTCOMMAND))
lastcmd = wflags;
}
@@ -1387,6 +1395,8 @@ execzlefunc(Thingy func, char **args, int set_bindk)
int osc = sfcontext, osi = movefd(0);
int oxt = isset(XTRACE);
LinkList largs = NULL;
+ int inuse = w->flags & WIDGET_INUSE;
+ w->flags |= WIDGET_INUSE;
if (*args) {
largs = newlinklist();
@@ -1402,8 +1412,15 @@ execzlefunc(Thingy func, char **args, int set_bindk)
opts[XTRACE] = oxt;
sfcontext = osc;
endparamscope();
- lastcmd = w->flags;
- w->flags = 0;
+ lastcmd = w->flags & ~(WIDGET_INUSE|WIDGET_FREE);
+ if (inuse) {
+ w->flags &= WIDGET_INUSE|WIDGET_FREE;
+ } else {
+ if (w->flags & WIDGET_FREE)
+ freewidget(w);
+ else
+ w->flags = 0;
+ }
r = 1;
redup(osi, 0);
}
diff --git Src/Zle/zle_thingy.c Src/Zle/zle_thingy.c
index 271fd8e..21495b6 100644
--- Src/Zle/zle_thingy.c
+++ Src/Zle/zle_thingy.c
@@ -253,9 +253,14 @@ unbindwidget(Thingy t, int override)
/* Free a widget. */
/**/
-static void
+void
freewidget(Widget w)
{
+ if (w->flags & WIDGET_INUSE) {
+ w->flags |= WIDGET_FREE;
+ return;
+ }
+
if (w->flags & WIDGET_NCOMP) {
zsfree(w->u.comp.wid);
zsfree(w->u.comp.func);
--
2.6.3

View file

@ -1,29 +0,0 @@
commit 1d8b5285226afba4f1ef9030cf862c14b975c284
Author: Peter Stephenson <pws@zsh.org>
Date: Fri Jan 15 12:49:42 2016 +0000
37643: Reset interrupt on key input in menu selection.
We don't need to propagate the interrupt further as the interrupt
causes the key to be empty, which will exit the widget. We
need to reset the condition as zrefresh() is now more sensitive
to errors since 36416 / 32f5d3d8.
diff --git a/Src/Zle/complist.c b/Src/Zle/complist.c
index 29aaee8..0ccb885 100644
--- Src/Zle/complist.c
+++ Src/Zle/complist.c
@@ -2584,6 +2584,12 @@ domenuselect(Hookdef dummy, Chdata dat)
if (!do_last_key) {
zmult = 1;
cmd = getkeycmd();
+ /*
+ * On interrupt, we'll exit due to cmd being empty.
+ * Don't propagate the interrupt any further, which
+ * can screw up redrawing.
+ */
+ errflag &= ~ERRFLAG_INT;
if (mtab_been_reallocated) {
do_last_key = 1;
continue;

View file

@ -1,7 +1,7 @@
# Template file for 'zsh'
pkgname=zsh
version=5.2
revision=3
version=5.3
revision=1
lib32disabled=yes
build_style=gnu-configure
make_build_target="all info"
@ -23,7 +23,7 @@ maintainer="Juan RP <xtraeme@voidlinux.eu>"
homepage="http://www.zsh.org"
license="zsh"
distfiles="http://www.zsh.org/pub/zsh-$version.tar.xz"
checksum=f17916320ffaa844bbd7ce48ceeb5945fc5f3eff64b149b4229bbfbdf3795a9d
checksum=76f82cfd5ce373cf799a03b6f395283f128430db49202e3e3f512fb5a19d6f8a
pre_configure() {
# Set correct keymap path