From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18000 invoked by alias); 21 Jan 2016 05:32:28 -0000 Mailing-List: contact zsh-users-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Users List List-Post: List-Help: X-Seq: 21170 Received: (qmail 4784 invoked from network); 21 Jan 2016 05:32:25 -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,T_DKIM_INVALID autolearn=ham autolearn_force=no version=3.4.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brasslantern-com.20150623.gappssmtp.com; s=20150623; h=from:message-id:date:in-reply-to:comments:references:to:subject :mime-version:content-type; bh=Tjmr3rLKUhGJ81nb38CI69VLszxQqrQMQQeUCeKnYTg=; b=ZNC57lRYVan40W7eEQt4X3Z3MjIEcS5RuGXJkZuAxovq2fbXc+BLYTOSOY2XY8rwk2 Yz6dKMsdxTaNqBwkpj+al7sHl2CCLb7IJx86bgwQDKG55Ykhk3Z1QFbeNe8r33yfAfbR akFLeeAQ+UZWtLEFYwRGhHEaQiTryFXq1baEhntsRRPMcaSg2wBBOqQNj+al3BrLpOwM pCXRM4eieZJNoODpSr5w2vlVRDj+KCpWePsmnN11WnZDU/+F1kNKSRHR/dcQUPXNYhLR a+ktD89ziYP2uS42cKLETvWv8+UZvUl2Rsr09AUwcl0XlH3tRNUZgzSd9VwbrKDClByo 7UaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:message-id:date:in-reply-to:comments :references:to:subject:mime-version:content-type; bh=Tjmr3rLKUhGJ81nb38CI69VLszxQqrQMQQeUCeKnYTg=; b=hpMuoUXU5eItCBR0P0wOxwwePS1nE6XM34h/3/gBPS2hc2/FN+nOb9hb5G+LFyrPCE tBYPuL6EDxrvRMy3Oz0sVB6crn63t1EeMrO63TTf2X/ROz2XpZYqOQzaUs39zmigOJsZ a4rJx33OYYrtcmwYjdRnmghKy0pyji/tc2exnaLci7QApwKobwyfHh/IYmXgwj3MjNH7 cm/xAYHYZIRYFKJR4KWHBqI5BgaaD8uNC/lMHRpFQOFpA/QfRobhmJa4ZRGydv+JfUGu +4NsrPwplq93YllWsJrom6PqEH4RvWtJrQRTsjhcVRkxH81x1qFwxiPBAOG88ObiFJoB SvMA== X-Gm-Message-State: ALoCoQk+czYZ07CG1UUj8pJT8304pgtZQcPdBz7YmLJKQktyCmQerYT+4iW3r7OWD2AAvT+RlII5TnY/Csb8kkQqnq3IHLjPww== X-Received: by 10.98.73.6 with SMTP id w6mr59159119pfa.109.1453354341823; Wed, 20 Jan 2016 21:32:21 -0800 (PST) From: Bart Schaefer Message-Id: <160120213253.ZM22536@torch.brasslantern.com> Date: Wed, 20 Jan 2016 21:32:53 -0800 In-Reply-To: Comments: In reply to Sebastian Gniazdowski "Nice in-word incremental history word searcher" (Jan 20, 9:14pm) References: X-Mailer: OpenZMail Classic (0.9.2 24April2005) To: Zsh Users Subject: Re: Nice in-word incremental history word searcher MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii On Jan 20, 9:14pm, Sebastian Gniazdowski wrote: } Subject: Nice in-word incremental history word searcher } } files `zew-process-buffer' and `zew-history-complete-word' here (or } use the whole project): So I glanced through zew-process-buffer and have a few questions/remarks. --- 8< --- snip --- 8< --- 19 local buf="$1" 20 local cursor="$CURSOR" 21 [ -n "$2" ] && cursor="$2" 22 23 ZEW_PB_WORDS=( "${(Z+n+)BUFFER}" ) --- 8< --- snip --- 8< --- You could replace lines 20 and 21 with local cursor="${2:-$CURSOR}" Shouldn't line 23 say ZEW_PB_WORDS=( "${(Z+n+)buf}" ) ?? And therefore why is line 19 not local buf="${1:-$BUFFER}" ?? Do you really intend to take words from the ZLE buffer and then use them to analyze the string passed as "$1"? This on line 72: [[ "$ZEW_PB_SELECTED_WORD" -eq "-1" && "$char_count" -gt "$cursor" ]] Could be this: (( ZEW_PB_SELECTED_WORD == -1 && char_count > cursor )) Similarly on line 77. On line 81, this: char_count=char_count+"$#buf" depends on the zsh semantics of assignment to an declared integer. It might be better to explicitly use math context: (( char_count = char_count + $#buf )) That's it for process-buffer. I also took a more superficial look at zew-history-complete-word; two things to note, one minor, one more important. First, you used the old [ ... ] test everywhere instead of [[ ... ]]. Any particular reason? Second, I think you've partly missed the point of custom keymaps. I imagine you copied the caps-lock example from the recursive-edit doc, but there's actually a better way now (that example could be redone): Instead of overriding self-insert et al. in the main keymap and then restoring them, you can do the same thing as with the zhcw keymap: Create (once) a copy of the main keymap, install your new bindings for self-insert etc., in that copy, and then when you want to use the new keymap, switch to it with "zle -K". If you prefer the way you've done it, at least consider wrapping it all in an "always" construct so you can't accidentally abort out of it without restoring the main keymap.