From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: zsh-workers-return-43779-ml=inbox.vuxu.org@zsh.org X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.1 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from primenet.com.au (ns1.primenet.com.au [203.24.36.2]) by inbox.vuxu.org (OpenSMTPD) with ESMTP id 71f034d2 for ; Tue, 6 Nov 2018 23:34:40 +0000 (UTC) Received: (qmail 19165 invoked by alias); 6 Nov 2018 23:34:28 -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: List-Unsubscribe: X-Seq: 43779 Received: (qmail 29055 invoked by uid 1010); 6 Nov 2018 23:34:28 -0000 X-Qmail-Scanner-Diagnostics: from mail-pl1-f196.google.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.99.2/21882. spamassassin: 3.4.1. Clear:RC:0(209.85.214.196):SA:0(-2.0/5.0):. Processed in 2.860619 secs); 06 Nov 2018 23:34:28 -0000 X-Envelope-From: joeypabalinas@gmail.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=UayTHOmg+eECT3c6aWx34mszBBtw/GbRNtJbMViqaR8=; b=VpiNDCg9ksv0PgaIj2Kg/JDhaozXmOc+vJXZSbIlo0zAiuJjHmeu2dtO7Q+Beyg3mW uxJ8tMQRkbb+zV5XoSFLaiaUYa8ZBetzJ4DvWl0eIHYn31TlxGLfuuXFVPkflY/rrJIO DDoNeDPcPbmN1J+PVDnSUz9icCvNpp3lBZIlo1Ti/eNYDwgwoucecjcIazc/LOXerm39 8aNQV0xMOKdLtEbFlaal9tSYeo3CzvBTyvrzb/HnGf10tIOmWt6PlWvT55/b3L4WM8/h wHFEcMNd5VCVA517Ypyd35rMDyb5RHZ5EOA8jumJ8WkJBWaEFr4RDAJ91f8v/cTI5XLX 7zcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=UayTHOmg+eECT3c6aWx34mszBBtw/GbRNtJbMViqaR8=; b=NXsng2k3vooHnCEdpjWchEoMmndER3Se0M2ZDZylg+5Sngt0qqzVWEBzbnpfnB0GNS Xp0iH9JmSEFcdivk9HSTCh75ymUgaNWlozLxrtmA+L92OL8TjlZT+iQoGNO1eKy9wDwB TFyQqtSB01LokAvcKYYqU8pKCby2v9Cbu7LKTE7hmSyqsI7RyLf04+rGDzCm2eTPgt3E DbpdrneRQ8EUM0jKbXyo5Yo6WPAaCSmRYaT8pK4+wXX2q8tCcYrUEAdgOA/nlBOlEmZP xJzp8lYtqgj6+iXQRnYYZmILu4wPp+gl4S9kJLKKeXqFC8vtbvfMW5U1267Q+MxAoDHi k9VQ== X-Gm-Message-State: AGRZ1gIqnf0cYS8QnwKuktxR0Do0x1Zwj71f3lg8B509Dc9dBzupXmRz 1+jzjkK9zzzjtzoX8qKsneUaZJyI X-Google-Smtp-Source: AJdET5crMMaZo1yJzYqSk+AH5uyhTZA4xu2ce3bQvCKRJXrHsITzhfyWZ/8w+LBmb6ZSwfCnnqrcnA== X-Received: by 2002:a17:902:aa84:: with SMTP id d4-v6mr28819030plr.25.1541547262413; Tue, 06 Nov 2018 15:34:22 -0800 (PST) From: Joey Pabalinas To: zsh-workers@zsh.org Subject: [PATCH] select-bracketed: set nocprecedences to force native precedence ordering Date: Tue, 6 Nov 2018 13:34:10 -1000 Message-Id: <389ebb53e6d5b8cfe9985af3d41574679e5ce4b8.1541547033.git.joeypabalinas@gmail.com> X-Mailer: git-send-email 2.19.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Qmail-Scanner-2.11: added fake Content-Type header Content-Type: text/plain With cprecedences set, expressions like `1 + (idx-1) & ~1` are evaluated as `(1 + (idx-1)) & ~1` instead of the intended `1 + ((idx-1) & ~1)`. Set the nocprecedences option and add clarifying parenthesis to the ambiguous expressions. Signed-off-by: Joey Pabalinas --- Functions/Zle/select-bracketed | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Functions/Zle/select-bracketed b/Functions/Zle/select-bracketed index d467bb8047466faa32..add5b70f0c9fd72215 100644 --- a/Functions/Zle/select-bracketed +++ b/Functions/Zle/select-bracketed @@ -10,17 +10,17 @@ # for c in {a,i}${(s..)^:-'()[]{}<>bB'}; do # bindkey -M $m $c select-bracketed # done # done -setopt localoptions noksharrays +setopt localoptions nocprecedences noksharrays local style=${${1:-$KEYS}[1]} matching="(){}[]<>bbBB" local -i find=${NUMERIC:-1} idx=${matching[(I)[${${1:-$KEYS}[2]}]]}%9 (( idx )) || return 1 # no corresponding closing bracket -local lmatch=${matching[1 + (idx-1) & ~1]} -local rmatch=${matching[1 + (idx-1) | 1]} +local lmatch=${matching[1 + ((idx-1) & ~1)]} +local rmatch=${matching[1 + ((idx-1) | 1)]} local -i start=CURSOR+1 end=CURSOR+1 rfind=find [[ $BUFFER[start] = "$rmatch" ]] && (( start--, end-- )) if (( REGION_ACTIVE && MARK != CURSOR)); then (( MARK < CURSOR && (start=end=MARK+1) )) -- Cheers, Joey Pabalinas