From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5421 invoked by alias); 9 May 2015 07:46:49 -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: 35065 Received: (qmail 4691 invoked from network); 9 May 2015 07:46:45 -0000 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=AzlYuONuET+O0J/rynq++ZQkUQmvpaXj45qyki99BhQ=; b=YUHP/fjw4CRszo8XGTAar4vwHDJE4oNmv2mh8IhoybE4pfkKS+TgfUS4CsbtLnIz5+ CBp2vhqLa9sBxpv7y6RlB0AmouVLk9z9gamPmUM+NKZLxrHe3Amh5lvNRhmrd68Vf3Lj H/WQMCBVmILfXIINRdtu0PBQiGTS/7dK0WnHGmFEwOGXdxXUYtnNRz1ySwF/GCap3gOM yRhjLTF2YL/CYFxb4Uk2RWKXyG/u9GLWvBSacqxvLRusqWuaG8JooyPkPNRTlLma7Uri xTFgUrYjvGNt8Ttd8LhGNl+EMZ3CT1ucqE6xHU+8V5iyDU4ePu3yuTIb5Mfau+omAk2B +rIQ== MIME-Version: 1.0 X-Received: by 10.50.114.35 with SMTP id jd3mr3513798igb.14.1431157600743; Sat, 09 May 2015 00:46:40 -0700 (PDT) Date: Sat, 9 May 2015 09:46:40 +0200 Message-ID: Subject: PATCH: Don't treat NUL as a combining character From: Mikael Magnusson To: zsh workers Content-Type: text/plain; charset=UTF-8 As title, if you input % something while combining_chars is set, it visually doesn't appear, but toggling the option makes it appear again (just like for actual combining characters). (I was momentarily confused why a command looking like *.mp4(e'fattr notes test') worked, then i remembered my ^_e bind to enter an e:: glob uses ^@ as the separator. Normally I don't have combining_chars set, but this directory contains some NFD files.) I considered using L'\0' to clarify the intent, but I have no idea if all compilers support wchar literals? index 6b3cb97..13c053c 100644 --- i/Src/zsh.h +++ w/Src/zsh.h @@ -2982,9 +2982,9 @@ typedef wint_t convchar_t; * We can't be quite sure the wcwidth we've provided is entirely * in agreement with the system's, so be extra safe. */ -#define IS_COMBINING(wc) (WCWIDTH(wc) == 0 && !iswcntrl(wc)) +#define IS_COMBINING(wc) (wc != 0 && WCWIDTH(wc) == 0 && !iswcntrl(wc)) #else -#define IS_COMBINING(wc) (WCWIDTH(wc) == 0) +#define IS_COMBINING(wc) (wc != 0 && WCWIDTH(wc) == 0) #endif /* * Test for the base of a combining character. -- Mikael Magnusson