From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15005 invoked by alias); 29 Jul 2015 10:51:06 -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: 35949 Received: (qmail 11798 invoked from network); 29 Jul 2015 10:51:03 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) 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.0 X-Biglobe-Sender: Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 6.6 \(1510\)) Subject: Re: Vimode problem (key press dropping) From: "Jun T." In-Reply-To: <9361.1438161965@thecus.kiddle.eu> Date: Wed, 29 Jul 2015 19:51:00 +0900 Content-Transfer-Encoding: 7bit Message-Id: References: <5d9984411ba10dee4321a408e2763317@riseup.net> <9361.1438161965@thecus.kiddle.eu> To: "zsh-workers@zsh.org" X-Mailer: Apple Mail (2.1510) X-Biglobe-Spnum: 51453 reply to zsh-users, X-Seq: 20356 On 2015/07/29, at 18:26, Oliver Kiddle wrote: > > Question to -workers subscribers: how should we address this in the > defaults? In zle_keymap.c, near line 1493, timeout is set only if (f != t_undefinedkey). But ESC is an undefinedkey in vicmd keymap, and the timeout remains to be zero even if ispfx is true. I guess the timeout should always be set if ispfx is true. Maybe something like the following? diff --git a/Src/Zle/zle_keymap.c b/Src/Zle/zle_keymap.c index d355f41..f1fa912 100644 --- a/Src/Zle/zle_keymap.c +++ b/Src/Zle/zle_keymap.c @@ -1495,14 +1495,14 @@ getkeymapcmd(Keymap km, Thingy *funcp, char **strp) func = f; str = s; lastc = lastchar; - - /* can be patient with vi commands that need a motion operator: * - * they wait till a key is pressed for the movement anyway */ - timeout = !(!virangeflag && !region_active && f && f->widget && - f->widget->flags & ZLE_VIOPER); } if (!ispfx) break; + + /* can be patient with vi commands that need a motion operator: * + * they wait till a key is pressed for the movement anyway */ + timeout = !(!virangeflag && !region_active && f && f->widget && + f->widget->flags & ZLE_VIOPER); } if(!lastlen && keybuflen) lastlen = keybuflen;