From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20940 invoked by alias); 9 Feb 2016 10:31:12 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 37930 Received: (qmail 24175 invoked from network); 9 Feb 2016 10:31:10 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.1 X-PDA-ORIGIN: gallois.livando.com Message-ID: <1455013866.1685.10.camel@gladbachcity.de> Subject: Re: Segfault when displaying completion lists From: Christian Heinrich To: zsh-workers@zsh.org Date: Tue, 09 Feb 2016 11:31:06 +0100 In-Reply-To: <160208220038.ZM29149@torch.brasslantern.com> References: <1454972312.10740.8.camel@gladbachcity.de> <56B92722.7070004@gmx.com> <160208220038.ZM29149@torch.brasslantern.com> Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-F3azCs7iYDCJD3rhvxjg" X-Mailer: Evolution 3.18.3-1 Mime-Version: 1.0 --=-F3azCs7iYDCJD3rhvxjg Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Thanks guys, that was exactly the issue. I recompiled the code and it works just as it should! Christian On Mon, 2016-02-08 at 22:00 -0800, Bart Schaefer wrote: > On Feb 8,=C2=A0=C2=A06:39pm, Eric Cook wrote: > } > } This is a guess: >=20 > Pretty good one. >=20 > } If my guess is true, zsh should handle the menuselect keymap not > } existing more elegantly. >=20 > This is a bit brute-force, but perhaps the following?=C2=A0=C2=A0It has t= he > added > side-effect that if you create your own keymap named "menuselect" > and/or > "listscroll" before loading zsh/complist, your bindings take > precedence. >=20 > diff --git a/Src/Zle/complist.c b/Src/Zle/complist.c > index 06a07a4..937e1d1 100644 > --- a/Src/Zle/complist.c > +++ b/Src/Zle/complist.c > @@ -989,6 +989,7 @@ asklistscroll(int ml) > =C2=A0 > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0fflush(shout); > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0zsetterm(); > +=C2=A0=C2=A0=C2=A0=C2=A0menuselect_bindings(); /* sanity in case deleted= by user > */ > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0selectlocalmap(lskeymap); > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0if (!(cmd =3D getkeycmd()) || cmd =3D=3D Th= (z_sendbreak)) > =C2=A0 ret =3D 1; > @@ -2433,6 +2434,7 @@ domenuselect(Hookdef dummy, Chdata dat) > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0unqueue_signals(); > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0mhasstat =3D (mstatus && *mstatus); > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0fdat =3D dat; > +=C2=A0=C2=A0=C2=A0=C2=A0menuselect_bindings(); /* sanity in case deleted= by user > */ > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0selectlocalmap(mskeymap); > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0noselect =3D 1; > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0while ((menuacc && > @@ -3486,6 +3488,37 @@ enables_(Module m, int **enables) > =C2=A0} > =C2=A0 > =C2=A0/**/ > +static void > +menuselect_bindings(void) > +{ > +=C2=A0=C2=A0=C2=A0=C2=A0if (!(mskeymap =3D openkeymap("menuselect"))) { > + mskeymap =3D newkeymap(NULL, "menuselect"); > + linkkeymap(mskeymap, "menuselect", 1); > + bindkey(mskeymap, "\t", refthingy(t_completeword), NULL); > + bindkey(mskeymap, "\n", refthingy(t_acceptline), NULL); > + bindkey(mskeymap, "\r", refthingy(t_acceptline), NULL); > + bindkey(mskeymap, "\33[A",=C2=A0=C2=A0refthingy(t_uplineorhistory), > NULL); > + bindkey(mskeymap, "\33[B",=C2=A0=C2=A0refthingy(t_downlineorhistory), > NULL); > + bindkey(mskeymap, "\33[C",=C2=A0=C2=A0refthingy(t_forwardchar), NULL); > + bindkey(mskeymap, "\33[D",=C2=A0=C2=A0refthingy(t_backwardchar), > NULL); > + bindkey(mskeymap, "\33OA",=C2=A0=C2=A0refthingy(t_uplineorhistory), > NULL); > + bindkey(mskeymap, "\33OB",=C2=A0=C2=A0refthingy(t_downlineorhistory), > NULL); > + bindkey(mskeymap, "\33OC",=C2=A0=C2=A0refthingy(t_forwardchar), NULL); > + bindkey(mskeymap, "\33OD",=C2=A0=C2=A0refthingy(t_backwardchar), > NULL); > +=C2=A0=C2=A0=C2=A0=C2=A0} > +=C2=A0=C2=A0=C2=A0=C2=A0if (!(lskeymap =3D openkeymap("listscroll"))) { > + lskeymap =3D newkeymap(NULL, "listscroll"); > + linkkeymap(lskeymap, "listscroll", 1); > + bindkey(lskeymap, "\t", refthingy(t_completeword), NULL); > + bindkey(lskeymap, " ", refthingy(t_completeword), NULL); > + bindkey(lskeymap, "\n", refthingy(t_acceptline), NULL); > + bindkey(lskeymap, "\r", refthingy(t_acceptline), NULL); > + bindkey(lskeymap, "\33[B",=C2=A0=C2=A0refthingy(t_downlineorhistory), > NULL); > + bindkey(lskeymap, "\33OB",=C2=A0=C2=A0refthingy(t_downlineorhistory), > NULL); > +=C2=A0=C2=A0=C2=A0=C2=A0} > +} > + > +/**/ > =C2=A0int > =C2=A0boot_(Module m) > =C2=A0{ > @@ -3503,27 +3536,7 @@ boot_(Module m) > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0} > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0addhookfunc("comp_list_matches", (Hookfn) c= omplistmatches); > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0addhookfunc("menu_start", (Hookfn) domenuse= lect); > -=C2=A0=C2=A0=C2=A0=C2=A0mskeymap =3D newkeymap(NULL, "menuselect"); > -=C2=A0=C2=A0=C2=A0=C2=A0linkkeymap(mskeymap, "menuselect", 1); > -=C2=A0=C2=A0=C2=A0=C2=A0bindkey(mskeymap, "\t", refthingy(t_completeword= ), NULL); > -=C2=A0=C2=A0=C2=A0=C2=A0bindkey(mskeymap, "\n", refthingy(t_acceptline),= NULL); > -=C2=A0=C2=A0=C2=A0=C2=A0bindkey(mskeymap, "\r", refthingy(t_acceptline),= NULL); > -=C2=A0=C2=A0=C2=A0=C2=A0bindkey(mskeymap, "\33[A",=C2=A0=C2=A0refthingy(= t_uplineorhistory), NULL); > -=C2=A0=C2=A0=C2=A0=C2=A0bindkey(mskeymap, "\33[B",=C2=A0=C2=A0refthingy(= t_downlineorhistory), > NULL); > -=C2=A0=C2=A0=C2=A0=C2=A0bindkey(mskeymap, "\33[C",=C2=A0=C2=A0refthingy(= t_forwardchar), NULL); > -=C2=A0=C2=A0=C2=A0=C2=A0bindkey(mskeymap, "\33[D",=C2=A0=C2=A0refthingy(= t_backwardchar), NULL); > -=C2=A0=C2=A0=C2=A0=C2=A0bindkey(mskeymap, "\33OA",=C2=A0=C2=A0refthingy(= t_uplineorhistory), NULL); > -=C2=A0=C2=A0=C2=A0=C2=A0bindkey(mskeymap, "\33OB",=C2=A0=C2=A0refthingy(= t_downlineorhistory), > NULL); > -=C2=A0=C2=A0=C2=A0=C2=A0bindkey(mskeymap, "\33OC",=C2=A0=C2=A0refthingy(= t_forwardchar), NULL); > -=C2=A0=C2=A0=C2=A0=C2=A0bindkey(mskeymap, "\33OD",=C2=A0=C2=A0refthingy(= t_backwardchar), NULL); > -=C2=A0=C2=A0=C2=A0=C2=A0lskeymap =3D newkeymap(NULL, "listscroll"); > -=C2=A0=C2=A0=C2=A0=C2=A0linkkeymap(lskeymap, "listscroll", 1); > -=C2=A0=C2=A0=C2=A0=C2=A0bindkey(lskeymap, "\t", refthingy(t_completeword= ), NULL); > -=C2=A0=C2=A0=C2=A0=C2=A0bindkey(lskeymap, " ", refthingy(t_completeword)= , NULL); > -=C2=A0=C2=A0=C2=A0=C2=A0bindkey(lskeymap, "\n", refthingy(t_acceptline),= NULL); > -=C2=A0=C2=A0=C2=A0=C2=A0bindkey(lskeymap, "\r", refthingy(t_acceptline),= NULL); > -=C2=A0=C2=A0=C2=A0=C2=A0bindkey(lskeymap, "\33[B",=C2=A0=C2=A0refthingy(= t_downlineorhistory), > NULL); > -=C2=A0=C2=A0=C2=A0=C2=A0bindkey(lskeymap, "\33OB",=C2=A0=C2=A0refthingy(= t_downlineorhistory), > NULL); > +=C2=A0=C2=A0=C2=A0=C2=A0menuselect_bindings(); > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0return 0; > =C2=A0} > =C2=A0 --=-F3azCs7iYDCJD3rhvxjg Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- iQIcBAABCgAGBQJWub/qAAoJEIvOFdNRb8w8D10P+wR6xpLg1EozlXom61ym5g6W z7OH3pgTgkf1RSKu+Jt1IulYkhimFq6SkBh/Ff2Po0Rsd/ea3oUVvvykV90F9RDN 0URmPIFd12Rncm/Z5NTopifSVZxy+jsP3cmD1u9BUzdau3wTahAHqGlS0LZ7Bkj5 AcJdh/CbuWkCLhEqwrOY4IQSPKmY7pkmLDlrD3iBZzJTH+j0RZPQdpWKzeJ94i9Z s97/sr6neKPjB+L2ICPH+9bfYGZBIdTrXsIYpaI3wzGFZJN2HVOIjwbGVb8qUXqZ Bq+a6a/OeMw5S2qDACAElbuUYGfFoOhJ+315cjNRbWukovP5KKJCVgfDJiKD/EPp 83G50+sM6iT5O1W4t5kTJFYynjVP2ClTsLQH66QRZxpkWlJeju0u2sQFSBU/AH5D aVW1L7oD/x4WYsFzIeCybBL7xPG0ba1rY6E0LZ8Jh0cryfbbc2gQaQQYJYhW+SNv EaHIgvviUTPD1IW7K3wOhTX5wseYSp5Qp/JOsY0yoFw8Q5VRX7YkB+k0UgiC42WD RyThueZPtcerEzwoUOzjBEkGng9h8Mhsk56wz4mbHWfoxC63EV13Js0D6CfTd3Dp tQK3j9nK1OKTJCmHsTqHbWUT3yL7ddWZqbYFBI7zJisSkhMmUD5gQ+gsbOF6p8mA 7LDjAwrmMWeUOxN6g6cr =9boL -----END PGP SIGNATURE----- --=-F3azCs7iYDCJD3rhvxjg--