From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21283 invoked from network); 7 Apr 2007 23:17:14 -0000 X-Spam-Checker-Version: SpamAssassin 3.1.8 (2007-02-13) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=BAYES_00,FORGED_RCVD_HELO autolearn=ham version=3.1.8 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by ns1.primenet.com.au with SMTP; 7 Apr 2007 23:17:14 -0000 Received-SPF: none (ns1.primenet.com.au: domain at sunsite.dk does not designate permitted sender hosts) Received: (qmail 24806 invoked from network); 7 Apr 2007 23:17:07 -0000 Received: from sunsite.dk (130.225.247.90) by a.mx.sunsite.dk with SMTP; 7 Apr 2007 23:17:07 -0000 Received: (qmail 1054 invoked by alias); 7 Apr 2007 23:17:04 -0000 Mailing-List: contact zsh-workers-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 23267 Received: (qmail 1038 invoked from network); 7 Apr 2007 23:17:02 -0000 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by sunsite.dk with SMTP; 7 Apr 2007 23:17:02 -0000 Received: (qmail 24456 invoked from network); 7 Apr 2007 23:17:02 -0000 Received: from nz-out-0506.google.com (64.233.162.225) by a.mx.sunsite.dk with SMTP; 7 Apr 2007 23:16:58 -0000 Received: by nz-out-0506.google.com with SMTP id s1so771104nze for ; Sat, 07 Apr 2007 16:16:57 -0700 (PDT) DKIM-Signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:sender:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition:x-google-sender-auth; b=ZmWJR84/PMHyeNzy5MHUdCWZphGwmxda13pesnKNjjUoW0Uj2r5xDWd4Tm1ySuO9fHUYLeE8nsLSbbYr+4PZOVroqiPzau4fwSRgtEhY/I2ocYcB74H3Ow2rSVYXBNjPrXspHQlX+UtCRHxI9+KXOlrPWxFfzX9zLM3LMJb0BwI= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:sender:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition:x-google-sender-auth; b=JvS/0cnX3B1r5FcnSbjeevdpFEu8tJA7K6oWY62mdkcfbbiV368/Wbqx4RzX4bHOjf232M5Jy6te8sFRqSOmMd5ukAGNJeBoKs20G3rn8JhATaqNuRfWMRexcdZONRzYv01HO94dyBaPgOYF95UOJL4P9GE/dU4VAQz6E6kitRA= Received: by 10.114.173.15 with SMTP id v15mr1767043wae.1175987817344; Sat, 07 Apr 2007 16:16:57 -0700 (PDT) Received: by 10.114.26.18 with HTTP; Sat, 7 Apr 2007 16:16:57 -0700 (PDT) Message-ID: <2ddaa6ea0704071616t7fe7f5davb48d458cd26bcb22@mail.gmail.com> Date: Sun, 8 Apr 2007 00:16:57 +0100 From: "Pete Hollobon" Sender: hollobon@gmail.com To: zsh-workers@sunsite.dk Subject: PATCH: customisable menu selection keymap MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Google-Sender-Auth: c0d97195ba78ecc6 Hi, I wanted to use a custom keymap for certain menu selections (in particular with cd - , to choose a directory from the stack and change to it by pressing enter once rather than twice). These two patches seem to do the trick: Index: Src/Zle/complist.c =================================================================== RCS file: /cvsroot/zsh/zsh/Src/Zle/complist.c,v retrieving revision 1.102 diff -d -u -w -r1.102 complist.c --- Src/Zle/complist.c 2 Apr 2007 13:58:19 -0000 1.102 +++ Src/Zle/complist.c 7 Apr 2007 23:12:56 -0000 @@ -2222,6 +2222,8 @@ int nolist = 0, mode = 0, modecs, modell, modelen, wasmeta; char *s; char status[MAX_STATUS], *modeline = NULL; + char *user_mskeymapname; + Keymap user_mskeymap; msearchstack = NULL; msearchstr = ""; @@ -2291,6 +2293,10 @@ unqueue_signals(); mhasstat = (mstatus && *mstatus); fdat = dat; + if ((user_mskeymapname = getsparam("MENUKEYMAP")) && + (user_mskeymap = openkeymap(user_mskeymapname))) + selectlocalmap(user_mskeymap); + else selectlocalmap(mskeymap); noselect = 1; while ((menuacc && Index: Completion/Base/Core/_main_complete =================================================================== RCS file: /cvsroot/zsh/zsh/Completion/Base/Core/_main_complete,v retrieving revision 1.10 diff -d -u -w -r1.10 _main_complete --- Completion/Base/Core/_main_complete 1 Oct 2004 10:29:21 -0000 1.10 +++ Completion/Base/Core/_main_complete 7 Apr 2007 23:12:26 -0000 @@ -292,6 +292,17 @@ else unset MENUMODE fi + + keymap=( "${(@M)_menu_style:#keymap*}" ) + + if (( $#keymap )); then + for i in "$keymap[@]"; do + if [[ "$i" = *\=* ]]; then + MENUKEYMAP="${i#*\=}" + break + fi + done + fi fi fi elif [[ nm -lt 1 && -n "$_comp_mesg" ]]; then That then lets me use my special keymap only for directory completion: bindkey -N pete_menuselect bindkey -M pete_menuselect '^M' .accept-line # Use menu selection on directory stack completion zstyle ":completion:*:directory-stack" menu yes 'select=0' 'keymap=pete_menuselect' Is this likely to be useful to anyone else? Thanks, Pete