From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=DKIM_ADSP_CUSTOM_MED, 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 4f5e0764 for ; Fri, 10 Jan 2020 18:44:33 +0000 (UTC) Received: (qmail 13545 invoked by alias); 10 Jan 2020 18:44:27 -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: List-Unsubscribe: X-Seq: 24639 Received: (qmail 10225 invoked by uid 1010); 10 Jan 2020 18:44:27 -0000 X-Qmail-Scanner-Diagnostics: from mail-io1-f54.google.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.102.1/25684. spamassassin: 3.4.2. Clear:RC:0(209.85.166.54):SA:0(-2.0/5.0):. Processed in 4.020179 secs); 10 Jan 2020 18:44:27 -0000 X-Envelope-From: roman.perepelitsa@gmail.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | Received-SPF: pass (ns1.primenet.com.au: SPF record at _netblocks.google.com designates 209.85.166.54 as permitted sender) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=TaZMOUfrKCms9YsKi9c4Zq8feje+5PdutRX7FwZcwuo=; b=q7DMrcAHEM6ZRO9LQRxY4zx9HWIA5oOVnJSKWW2BP0OSvM8I1cj380nmHh3EzGD8ri OXJ9V2UWrp71DF6RW02EHwdGb9IeijuZsOQArFS0IRTXVfVydnMoMBg6APN0uNkz2iGm 76EUyuivP/Ubd55u+4u1oPlsE3YLh4pl8v9qZAZIde1J2LlgJ8wiizN0yYgM4RdgDGaw 6NIiTU8Rqt05M5U/cuIjNXVqhFIGHvAPLPRwU7FrahtHkMfczCPt4iI8xqp0TDzUGFa7 sTG2prpB7d3B7kHWIQs+NubrWDdfx58RBX8YY5gf6aUC1jliAc7Iaj868ZcP2cCz83Pf M+HQ== X-Gm-Message-State: APjAAAVkSzJ26Tow1M2aHM3ezz25bD62kRVB3hDj6H03bC+WeGBifW0K x/tOXeQtufXV7QlAQa5BwG5qY6btyVUqFhPZ+SA= X-Google-Smtp-Source: APXvYqx0USe6pw0VikJ4JVNrFtSQl7+93j+QOmzie69KHDORjf6tsWZfbVq8ni11xrMAqgCOXoZF6EN5I9LNK2BbQ+Q= X-Received: by 2002:a02:838b:: with SMTP id z11mr4268361jag.127.1578681830179; Fri, 10 Jan 2020 10:43:50 -0800 (PST) MIME-Version: 1.0 References: <1578477603.6726.5.camel@samsung.com> <3e056cff-f690-f416-d8b6-89059c64187a@gmail.com> <20200110170639.uvdidtgwswjqanhh@tarpaulin.shahaf.local2> <2ee94482-d28f-460e-bc76-486f1c7014cf@www.fastmail.com> In-Reply-To: <2ee94482-d28f-460e-bc76-486f1c7014cf@www.fastmail.com> From: Roman Perepelitsa Date: Fri, 10 Jan 2020 19:43:39 +0100 Message-ID: Subject: Re: z-sy-h and z-asug: zle-line-pre-redraw, POSTDISPLAY, coexistence (was: Re: emulate bash key bindings) To: Daniel Shahaf Cc: Zsh Users , ericdfreese@gmail.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Jan 10, 2020 at 7:29 PM Daniel Shahaf wrot= e: > I assume that a dummy widget that does =C2=AB{ POSTDISPLAY=3Dfoo; > region_highlight+=3D( "$#BUFFER $(($#BUFFER + 2)) bold" ) }=C2=BB > could be used to mock z-asug for the purposes of the coexistence > issue? Yeah, I think so. Perhaps use $#POSTDISPLAY instead of 2 to avoid mistakes there. > > I'm trying to finish a couple of large features for p10k (which > > incidentally includes writing a zsh parser in zsh) > > Isn't that basically what z-sy-h's main highlighter does? Yep. I wasn't able to find an existing library to do this. z-sy-h's main highlighter isn't factored out, so I cannot reuse it. I also want something a bit more precise and performant. On the plus side my goal is more modest than z-sy-h. I only need to extract "command" words. For example, given this zsh code: () { sudo foo bar && baz } I want to get "sudo" "foo" and "baz". I've written some code that works decently well but needs a bit more polish. It's more precise than z-sy-h but still doesn't handle some corner cases. For example, given this setup: setopt interactive_comments alias foo=3D'bar #' My code incorrectly extracts "bar" and "baz" from "foo; baz". It should be just "bar" here. Roman.