From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16453 invoked by alias); 21 Jan 2016 09:12:01 -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: 21172 Received: (qmail 27549 invoked from network); 21 Jan 2016 09:11:59 -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,FREEMAIL_FROM, T_DKIM_INVALID autolearn=ham autolearn_force=no version=3.4.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type:content-transfer-encoding; bh=JNsDwlWG2ozFIK4Dp3Cm61HGmpS607C52myLfHg+cfc=; b=uyCuOPgGQCBRIONg+JnIQTYUwt/VCxVWQgHRMpw14ZCi3ZevzJ04+NFoNPFWcmdu30 NVGlmpo7nkpnkWoP91RPeWXxxCb2GqLdcRdjBY9mJMQ5ls3++FNAVTCY+cSxiNk2qHeS 78cVbAH31Fr9KVGbOT+xmzdSJ/wxM+DrIZCxONOAalYFz8iXH+ZwHfAmFRfxh7nO7ukh VzKtabrN9z72jW0YNxEGH4jB8m/2NJVY5PuDA3FK2824lO9iEmyVYn4jCXEsJKmUaD/U rUnolEAihDIQerP4h2b4xNwPa9lRYG36nZ7BZu5r5QBx9FZnIzTEaGndAoeHLe/3rKcX Uyfw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-type:content-transfer-encoding; bh=JNsDwlWG2ozFIK4Dp3Cm61HGmpS607C52myLfHg+cfc=; b=bL0FH6ifW20ycLdoq1qml4R90MeCpPAH/y4ZczyJjNOW120rQZ70NwI/tW8KpXgUX6 0rii6cjthkEzXxhKrmssduH64/dgxGiKpjIDGhmnN641/CbKI9Djim0MBGOQeaYDvdmL c8kO8bgPn8L0YCdeC5Fi1t2nLhA45tzLWTe8QV+7fbW+kPXKpdSX4NTD/f0RcMwc0if5 0cEMzJWEoR7QqZ7EOP/oSzEwhTP2vpM4Aikw2lgSQnpWzc5kb/VSa4JQfZWAtt//oJ8t zPK/sTP5u+eB2vPUuV/KA3Zq1nWgSTusp1+s0WEIpM53YFlM0nnzvoVdxTGSZjMfolYv aQng== X-Gm-Message-State: ALoCoQnvShKbhGoPBuPEhnNk4lA6SL/N4ZRwiDttQZPubsv/OwdaYrt3BmTtZ610DwGE7I5wJlvz9Lmx7D+9N57c8VdHAA2Vag== X-Received: by 10.112.77.8 with SMTP id o8mr12671172lbw.53.1453367514361; Thu, 21 Jan 2016 01:11:54 -0800 (PST) MIME-Version: 1.0 In-Reply-To: <160120213253.ZM22536@torch.brasslantern.com> References: <160120213253.ZM22536@torch.brasslantern.com> From: Sebastian Gniazdowski Date: Thu, 21 Jan 2016 10:11:34 +0100 Message-ID: Subject: Re: Nice in-word incremental history word searcher To: Bart Schaefer Cc: Zsh Users Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On 21 January 2016 at 06:32, Bart Schaefer wrot= e: > --- 8< --- snip --- 8< --- > 19 local buf=3D"$1" > 20 local cursor=3D"$CURSOR" > 21 [ -n "$2" ] && cursor=3D"$2" > 22 > 23 ZEW_PB_WORDS=3D( "${(Z+n+)BUFFER}" ) > --- 8< --- snip --- 8< --- > > You could replace lines 20 and 21 with > > local cursor=3D"${2:-$CURSOR}" Thanks, done that > Shouldn't line 23 say > > ZEW_PB_WORDS=3D( "${(Z+n+)buf}" ) > > ?? True, corrected that, thanks > And therefore why is line 19 not > > local buf=3D"${1:-$BUFFER}" > > ?? Nice idea to have $1 and $2 all optional, done that > This on line 72: > > [[ "$ZEW_PB_SELECTED_WORD" -eq "-1" && "$char_count" -gt "$cursor" ]] > > Could be this: > > (( ZEW_PB_SELECTED_WORD =3D=3D -1 && char_count > cursor )) Recently I started to introduce (( )) to conditional expressions, could replace this to, but comments can nicely refer to "-gt", "-ge" so I'll leave them as they are > On line 81, this: > > char_count=3Dchar_count+"$#buf" > > depends on the zsh semantics of assignment to an declared integer. It > might be better to explicitly use math context: > > (( char_count =3D char_count + $#buf )) > I like utilizing integer declaration and then the semantics, rarely use (( )), if I do then mostly as "integer i=3D$(( ))" when I need to assign a value computed with use of parenthesis =E2=80=93 "integer i=3D(a-b= )*c" will return error, doing "0+..." trick doesn't help (it helps when not declaring but using already declared integer), so I do "integer i=3D$(( (a-b)*c )). Also, like the *SELECTED_WORD variable, I don't declare globals as integers, so in such case if computation is needed I use (( )). This makes some distinctions in code, allows to quickly differentiate between integers and normal variables / globals. It's not what I truly planned and I still experiment, but it rather works. > First, you used the old [ ... ] test everywhere instead of [[ ... ]]. > Any particular reason? Rather not, I just didn't want to depart from sh too much too fast. I might switch to [[ ]] after year of testing what pitfalls [ ] can have (and there are rather none), but on other hand, using [[ ]] only when it's needed helps reading the code, user can expect simplicity in [ ] and sophistication in [[ ]]. Is there a reason to always use [[ ? > 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". Saw your next email, seems that I could bind backspace and delete, and leave self-insert as it is. Best regards, Sebastian Gniazdowski