From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6707 invoked by alias); 30 Jul 2018 07:09: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: 23546 Received: (qmail 26350 invoked by uid 1010); 30 Jul 2018 07:09:27 -0000 X-Qmail-Scanner-Diagnostics: from mail-oi0-f51.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.218.51):SA:0(-1.9/5.0):. Processed in 1.912384 secs); 30 Jul 2018 07:09:27 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_PASS, T_DKIM_INVALID autolearn=ham autolearn_force=no version=3.4.1 X-Envelope-From: sgniazdowski@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=mime-version:from:date:message-id:subject:to :content-transfer-encoding; bh=miosoEk0XzMl/5UsjHtozEzEagyiIG+pOqLpXBE4e1o=; b=vEb7F4CHRcmsQlS0Eu1jH2YDXdlxSbEX+Gf8BnUaP1Xf/wCQhF+qq36D2L7rDQC2rj eyC5x8A1sqKFg1V7rxBBjY9IPQsuYEkrzFf/1G9OApwYBhCqnOzlN4Qf0O/JhvYIZNvs wqjm6drXVMaRC7QUBCjkv2u/F45YkxkeA8lCfcLVx755JfWIdyHv9e3divLNXHnYuIFV vdEpHZ2F6qMk3/irm7hLpicc4mK2C8fiKyRMpwojEtppFttQ7rKc39pnahyY6aXaLxG6 XMCW3rL4lKeaoa/GQerImgj7Mmc2Qqt5FLb95Q3wSnXuhc7DljKg6qBTUUAzYm7kq0gQ Cq6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to :content-transfer-encoding; bh=miosoEk0XzMl/5UsjHtozEzEagyiIG+pOqLpXBE4e1o=; b=YTIq2NGUYGKjDVZOM5H0KySU3FIQkXEoOl+VZxh19joCY7kw4wR9HpLH2xiTdIrSub fPx6Rspoqy4b3cNGpZ+aKQxO+1oDQs+FAEYcet6kTSQ+QbSjyeNkulPrmZZ3HwzUQJOP cUAyzN4Iq1B2BAe0EGNU5aQdsCJrSjuHy6cJZHVTWUoKFnuUni1droLSrMKct9vjS/Dw 0KB9+N5yljvkr/7giw1iqL+wax+hIvfEkS+WLCKOxwsjb4DsBsEe85MJd0rB9Im0Qfe3 JnYSDPOdOfr8wIkE9EEvWln5GD8dta7n8lEtwIoBsEmK0ueoZra0rtTkg3GbV7BZ92nI VOaw== X-Gm-Message-State: AOUpUlGxIeHgC8LNoYfKDum5KpU2v9RSrjJrA3skBZ5x4+o/x55VXF4h ISNIvOWZYOEQ1qCMI/J8TM7HJQEyq/9dANshX83+4A1Y X-Google-Smtp-Source: AAOMgpfiorgRn72kvHmPT0mFcyO2V/H6cgAfmDa3chLSdw3Py4eO6udIuA/dkSUxzb5ty64w9buD97txnx3b6uhsCoo= X-Received: by 2002:aca:ce85:: with SMTP id e127-v6mr17849132oig.169.1532934562836; Mon, 30 Jul 2018 00:09:22 -0700 (PDT) MIME-Version: 1.0 From: Sebastian Gniazdowski Date: Mon, 30 Jul 2018 09:09:02 +0200 Message-ID: Subject: Discovered pattern that ideally parses any quoting. Brackets highlighting in FSH. To: Zsh Users Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hello, not only (z) can handle quoting, turns out regular pattern with while loop can do it too: while [[ $_mybuf =3D (#b)[^"{}()[]\\\"'"]#((["({[]})\"'"])|[\\](*))(*) = ]]; do [[ -n "${match[3]}" ]] && { __idx+=3D${mbegin[1]}+1 _mybuf=3D"${match[3]:1}" # also skip 1 quoted char } || { the main point is [\\](*). Parentheses are placed in ${match[3]} and allow to restart processing skipping e.g. a quoted backslash. The rest is matching braces =E2=80=93 it's an example from Fast-Syntax-Highlighting, it now has ideal brackets highlighting =E2=80=93 = AND ALSO ", '. Simple handling of those two quotings allows to switch mode "in quoting" "outside quoting". That's all. The effect: https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/i= mages/brackets.gif --=20 Sebastian Gniazdowski News: https://twitter.com/ZdharmaI IRC: https://kiwiirc.com/client/chat.freenode.net:+6697/#zplugin