From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13238 invoked by alias); 10 May 2015 00:02:55 -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: 35068 Received: (qmail 28758 invoked from network); 10 May 2015 00:02:41 -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:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding; bh=o28Mpet2KHWvdbEOtiGEHdVHE7mTnZJNj68mygGAxp0=; b=CKDtNmySoPVmvzp9bSs0fY4Ys2AIS8gj7a7LwWeakEckWhsMmqHWoeikuJQAGukeBF ZFd0XO84I3OlWhp10ycipPqpSnOKf2FvaNLtA/GVoxF6bo10pQrzUd/EShdia6UEJpwf iEXTcoZVnqawTKOjku521lX9jxJ+DW06QrpGxcWp+5GGiQc3Wbjc3dBtPfQVdeNFo5RJ qKRl585ZRk8IcMya+uS5ZV5RnHz714VjVEBAB1AbkUPEzc1tygqybiO9i5P4Pd+ck3tK K0t4gBo2iFvM1qRILpcjY83spC2/9Gq2mLcPfhZDtf6M7s06jnC+V3+eCKxLsxqIISbu J+Lw== MIME-Version: 1.0 X-Received: by 10.43.151.83 with SMTP id kr19mr4662320icc.3.1431216157546; Sat, 09 May 2015 17:02:37 -0700 (PDT) In-Reply-To: References: Date: Sun, 10 May 2015 02:02:37 +0200 Message-ID: Subject: Re: PATCH: Don't treat NUL as a combining character From: Mikael Magnusson To: zsh workers Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On Sat, May 9, 2015 at 9:46 AM, Mikael Magnusson wrote: > 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) =3D=3D 0 && !iswcntrl(wc)) > +#define IS_COMBINING(wc) (wc !=3D 0 && WCWIDTH(wc) =3D=3D 0 && !is= wcntrl(wc)) > #else > -#define IS_COMBINING(wc) (WCWIDTH(wc) =3D=3D 0) > +#define IS_COMBINING(wc) (wc !=3D 0 && WCWIDTH(wc) =3D=3D 0) > #endif > /* > * Test for the base of a combining character. Instead of making this path ever so slightly slower by adding an extra test that only matters a fraction of the time, could we actually make it wc > 127 instead? I'm assuming unicode doesn't define anything in ascii to be a combining character anyway, and then we would avoid the wcwidth call in Most=E2=84=A2 cases. --=20 Mikael Magnusson