diff --git a/.gitmodules b/.gitmodules

new file mode 100644

index 0000000000000000000000000000000000000000..c8ac7e1a597831d55e8e06f7b84baea5af935a35

--- /dev/null

+++ b/.gitmodules

@@ -0,0 +1,3 @@

+[submodule "zsh/zsh-syntax"]

+ path = zsh/zsh-syntax

+ url = git://github.com/zsh-users/zsh-syntax-highlighting.git

diff --git a/zsh/.zsh/zsh-syntax/.editorconfig b/zsh/.zsh/zsh-syntax/.editorconfig

new file mode 100644

index 0000000000000000000000000000000000000000..cda541d5acab4ac733d7a51207b5cb507c905984

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/.editorconfig

@@ -0,0 +1,15 @@

+# Top-most editorconfig file

+

+root = true

+

+[*]

+end_of_line = lf

+tab_width = 2

+indent_size = 2

+indent_style = space

+

+[Makefile]

+tab_width = 8

+indent_size = 8

+indent_style = tab

+

diff --git a/zsh/.zsh/zsh-syntax/.gitattributes b/zsh/.zsh/zsh-syntax/.gitattributes

new file mode 100644

index 0000000000000000000000000000000000000000..715e624b30ab74162dbeac1b6f92feecef8d691f

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/.gitattributes

@@ -0,0 +1 @@

+.revision-hash export-subst

diff --git a/zsh/.zsh/zsh-syntax/.github/workflows/test.yml b/zsh/.zsh/zsh-syntax/.github/workflows/test.yml

new file mode 100644

index 0000000000000000000000000000000000000000..8221926855ae446b20f971a23fe592e18d0c2c64

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/.github/workflows/test.yml

@@ -0,0 +1,73 @@

+---

+name: Tests

+on:

+ push:

+ paths-ignore:

+ - '**.md'

+ - '**.png'

+ pull_request:

+ paths-ignore:

+ - '**.md'

+ - '**.png'

+ schedule:

+ - cron: '29 7 * * 1'

+

+jobs:

+ test:

+ runs-on: ubuntu-latest

+ strategy:

+ fail-fast: false

+ matrix:

+ version:

+ - master

+ - 5.8

+ - 5.7.1

+ - 5.7

+ - 5.6.2

+ - 5.6.1

+ - 5.6

+ - 5.5.1

+ - 5.5

+ - 5.4.2

+ - 5.4.1

+ - 5.4

+ - 5.3.1

+ - 5.3

+ - 5.2

+ - 5.1.1

+ - 5.1

+ - 5.0.8

+ - 5.0.7

+ - 5.0.6

+ - 5.0.5

+ - 5.0.4

+ - 5.0.3

+ - 5.0.2

+ - 5.0.1

+ - 5.0.0

+ - 4.3.17

+ - 4.3.16

+ - 4.3.15

+ - 4.3.14

+ - 4.3.13

+ - 4.3.12

+ - 4.3.11

+ container:

+ image: zshusers/zsh:${{ matrix.version }}

+ steps:

+ - uses: actions/checkout@v2

+ - run: install_packages bsdmainutils make procps

+ - run: make test

+

+ notify:

+ runs-on: ubuntu-latest

+ needs: test

+ if: failure() && (github.repository_owner == 'zsh-users')

+ steps:

+ -

+ name: Notify IRC

+ uses: Gottox/irc-message-action@v1

+ with:

+ channel: '#zsh-syntax-highlighting'

+ nickname: zsyh-gh-bot

+ message: '${{ github.ref }} failed tests: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}'

diff --git a/zsh/.zsh/zsh-syntax/.gitignore b/zsh/.zsh/zsh-syntax/.gitignore

new file mode 100644

index 0000000000000000000000000000000000000000..18fa5eca4fc8c581e7cd0f084a56a45a3b4e232d

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/.gitignore

@@ -0,0 +1,3 @@

+*.zwc*

+.pc/

+docs/all.md

diff --git a/zsh/.zsh/zsh-syntax/.revision-hash b/zsh/.zsh/zsh-syntax/.revision-hash

new file mode 100644

index 0000000000000000000000000000000000000000..6828f88dcb0e88b8cd738ad6044ce74d7a9a13c8

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/.revision-hash

@@ -0,0 +1 @@

+$Format:%H$

diff --git a/zsh/.zsh/zsh-syntax/.version b/zsh/.zsh/zsh-syntax/.version

new file mode 100644

index 0000000000000000000000000000000000000000..9fb121097034f65d02e58be2735f601d086b6c06

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/.version

@@ -0,0 +1 @@

+0.8.0-alpha2-dev

diff --git a/zsh/.zsh/zsh-syntax/COPYING.md b/zsh/.zsh/zsh-syntax/COPYING.md

new file mode 100644

index 0000000000000000000000000000000000000000..cacbcbee0cb5a43dff25bd734a27c663df6b3740

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/COPYING.md

@@ -0,0 +1,23 @@

+Copyright (c) 2010-2020 zsh-syntax-highlighting contributors

+All rights reserved.

+

+Redistribution and use in source and binary forms, with or without modification, are permitted

+provided that the following conditions are met:

+

+ * Redistributions of source code must retain the above copyright notice, this list of conditions

+ and the following disclaimer.

+ * Redistributions in binary form must reproduce the above copyright notice, this list of

+ conditions and the following disclaimer in the documentation and/or other materials provided

+ with the distribution.

+ * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+ may be used to endorse or promote products derived from this software without specific prior

+ written permission.

+

+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

diff --git a/zsh/.zsh/zsh-syntax/HACKING.md b/zsh/.zsh/zsh-syntax/HACKING.md

new file mode 100644

index 0000000000000000000000000000000000000000..6fd195c0af1b729b0fe70d07787008dc8279461d

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/HACKING.md

@@ -0,0 +1,99 @@

+Hacking on zsh-syntax-highlighting itself

+=========================================

+

+This document includes information for people working on z-sy-h itself: on the

+core driver (`zsh-syntax-highlighting.zsh`), on the highlighters in the

+distribution, and on the test suite. It does not target third-party

+highlighter authors (although they may find it an interesting read).

+

+The `main` highlighter

+----------------------

+

+The following function `pz` is useful when working on the `main` highlighting:

+

+```zsh

+pq() {

+ (( $#argv )) || return 0

+ print -r -l -- ${(qqqq)argv}

+}

+pz() {

+ local arg

+ for arg; do

+ pq ${(z)arg}

+ done

+}

+```

+

+It prints, for each argument, its token breakdown, similar to how the main

+loop of the `main` highlighter sees it.

+

+Testing the `brackets` highlighter

+----------------------------------

+

+Since the test harness empties `ZSH_HIGHLIGHT_STYLES` and the `brackets`

+highlighter interrogates `ZSH_HIGHLIGHT_STYLES` to determine how to highlight,

+tests must set the `bracket-level-#` keys themselves. For example:

+

+```zsh

+ZSH_HIGHLIGHT_STYLES[bracket-level-1]=

+ZSH_HIGHLIGHT_STYLES[bracket-level-2]=

+

+BUFFER='echo ({x})'

+

+expected_region_highlight=(

+ "6 6 bracket-level-1" # (

+ "7 7 bracket-level-2" # {

+ "9 9 bracket-level-2" # }

+ "10 10 bracket-level-1" # )

+)

+```

+

+Testing the `pattern` and `regexp` highlighters

+-----------------------------------------------

+

+Because the `pattern` and `regexp` highlighters modifies `region_highlight`

+directly instead of using `_zsh_highlight_add_highlight`, the test harness

+cannot get the `ZSH_HIGHLIGHT_STYLES` keys. Therefore, when writing tests, use

+the style itself as third word (cf. the

+[documentation for `expected_region_highlight`](docs/highlighters.md)). For example:

+

+```zsh

+ZSH_HIGHLIGHT_PATTERNS+=('rm -rf *' 'fg=white,bold,bg=red')

+

+BUFFER='rm -rf /'

+

+expected_region_highlight=(

+ "1 8 fg=white,bold,bg=red" # rm -rf /

+)

+```

+

+Memos and commas

+----------------

+

+We append to `region_highlight` as follows:

+

+

+```zsh

+region_highlight+=("$start $end $spec, memo=zsh-syntax-highlighting")

+```

+

+That comma is required to cause zsh 5.8 and older to ignore the memo without

+ignoring the `$spec`. It's a hack, but given that no further 5.8.x patch

+releases are planned, it's been deemed acceptable. See issue #418 and the

+cross-referenced issues.

+

+

+Miscellany

+----------

+

+If you work on the driver (`zsh-syntax-highlighting.zsh`), you may find the following zstyle useful:

+

+```zsh

+zstyle ':completion:*:*:*:*:globbed-files' ignored-patterns {'*/',}zsh-syntax-highlighting.plugin.zsh

+```

+

+IRC channel

+-----------

+

+We're on #zsh-syntax-highlighting on freenode.

+

diff --git a/zsh/.zsh/zsh-syntax/INSTALL.md b/zsh/.zsh/zsh-syntax/INSTALL.md

new file mode 100644

index 0000000000000000000000000000000000000000..48b724f5519358755d637fed8a06bf34c99742d1

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/INSTALL.md

@@ -0,0 +1,131 @@

+How to install

+--------------

+

+### Using packages

+

+* Arch Linux: [community/zsh-syntax-highlighting][arch-package] / [AUR/zsh-syntax-highlighting-git][AUR-package]

+* Debian: `zsh-syntax-highlighting` package [in `stretch`][debian-package] (or in [OBS repository][obs-repository])

+* Fedora: [zsh-syntax-highlighting package][fedora-package-alt] in Fedora 24+ (or in [OBS repository][obs-repository])

+* FreeBSD: `pkg install zsh-syntax-highlighting` (port name: [`shells/zsh-syntax-highlighting`][freebsd-port])

+* Gentoo: [app-shells/zsh-syntax-highlighting][gentoo-repository]

+* Mac OS X / Homebrew: [brew install zsh-syntax-highlighting][brew-package]

+* NetBSD: `pkg_add zsh-syntax-highlighting` (port name: [`shells/zsh-syntax-highlighting`][netbsd-port])

+* OpenBSD: `pkg_add zsh-syntax-highlighting` (port name: [`shells/zsh-syntax-highlighting`][openbsd-port])

+* openSUSE / SLE: `zsh-syntax-highlighting` package in [OBS repository][obs-repository]

+* RHEL / CentOS / Scientific Linux: `zsh-syntax-highlighting` package in [OBS repository][obs-repository]

+* Ubuntu: `zsh-syntax-highlighting` package [in Xenial][ubuntu-package] (or in [OBS repository][obs-repository])

+* Void Linux: `zsh-syntax-highlighting package` [in XBPS][void-package]

+

+[arch-package]: https://www.archlinux.org/packages/zsh-syntax-highlighting

+[AUR-package]: https://aur.archlinux.org/packages/zsh-syntax-highlighting-git

+[brew-package]: https://github.com/Homebrew/homebrew-core/blob/master/Formula/zsh-syntax-highlighting.rb

+[debian-package]: https://packages.debian.org/zsh-syntax-highlighting

+[fedora-package]: https://apps.fedoraproject.org/packages/zsh-syntax-highlighting

+[fedora-package-alt]: https://bodhi.fedoraproject.org/updates/?packages=zsh-syntax-highlighting

+[freebsd-port]: http://www.freshports.org/textproc/zsh-syntax-highlighting/

+[gentoo-repository]: https://packages.gentoo.org/packages/app-shells/zsh-syntax-highlighting

+[netbsd-port]: http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/shells/zsh-syntax-highlighting/

+[obs-repository]: https://software.opensuse.org/download.html?project=shells%3Azsh-users%3Azsh-syntax-highlighting&package=zsh-syntax-highlighting

+[openbsd-port]: https://cvsweb.openbsd.org/ports/shells/zsh-syntax-highlighting/

+[ubuntu-package]: https://launchpad.net/ubuntu/+source/zsh-syntax-highlighting

+[void-package]: https://github.com/void-linux/void-packages/tree/master/srcpkgs/zsh-syntax-highlighting

+

+See also [repology's cross-distro index](https://repology.org/metapackage/zsh-syntax-highlighting/versions)

+

+

+### In your ~/.zshrc

+

+Simply clone this repository and source the script:

+

+```zsh

+git clone https://github.com/zsh-users/zsh-syntax-highlighting.git

+echo "source ${(q-)PWD}/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ${ZDOTDIR:-$HOME}/.zshrc

+```

+

+ Then, enable syntax highlighting in the current interactive shell:

+

+```zsh

+source ./zsh-syntax-highlighting/zsh-syntax-highlighting.zsh

+```

+

+ If `git` is not installed, download and extract a snapshot of the latest

+ development tree from:

+

+```

+https://github.com/zsh-users/zsh-syntax-highlighting/archive/master.tar.gz

+```

+

+ Note the `source` command must be **at the end** of `~/.zshrc`.

+

+

+### With a plugin manager

+

+Note that `zsh-syntax-highlighting` must be the last plugin sourced.

+

+The zsh-syntax-highlighting authors recommend manual installation over the use

+of a framework or plugin manager.

+

+This list is incomplete as there are too many

+[frameworks / plugin managers][framework-list] to list them all here.

+

+[framework-list]: https://github.com/unixorn/awesome-zsh-plugins#frameworks

+

+#### [Antigen](https://github.com/zsh-users/antigen)

+

+Add `antigen bundle zsh-users/zsh-syntax-highlighting` as the last bundle in

+your `.zshrc`.

+

+#### [Oh-my-zsh](https://github.com/robbyrussell/oh-my-zsh)

+

+1. Clone this repository in oh-my-zsh's plugins directory:

+

+ ```zsh

+ git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

+ ```

+

+2. Activate the plugin in `~/.zshrc`:

+

+ ```zsh

+ plugins=( [plugins...] zsh-syntax-highlighting)

+ ```

+

+3. Restart zsh (such as by opening a new instance of your terminal emulator).

+

+#### [Prezto](https://github.com/sorin-ionescu/prezto)

+

+Zsh-syntax-highlighting is included with Prezto. See the

+[Prezto documentation][prezto-docs] to enable and configure highlighters.

+

+[prezto-docs]: https://github.com/sorin-ionescu/prezto/tree/master/modules/syntax-highlighting

+

+#### [zgen](https://github.com/tarjoilija/zgen)

+

+Add `zgen load zsh-users/zsh-syntax-highlighting` to the end of your `.zshrc`.

+

+#### [zplug](https://github.com/zplug/zplug)

+

+Add `zplug "zsh-users/zsh-syntax-highlighting", defer:2` to your `.zshrc`.

+

+#### [zplugin](https://github.com/psprint/zplugin)

+

+Add `zplugin load zsh-users/zsh-syntax-highlighting` to the end of your

+`.zshrc`.

+

+

+### System-wide installation

+

+Any of the above methods is suitable for a single-user installation,

+which requires no special privileges. If, however, you desire to install

+zsh-syntax-highlighting system-wide, you may do so by running

+

+```zsh

+make install

+```

+

+and directing your users to add

+

+```zsh

+source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh

+```

+

+to their `.zshrc`s.

diff --git a/zsh/.zsh/zsh-syntax/Makefile b/zsh/.zsh/zsh-syntax/Makefile

new file mode 100644

index 0000000000000000000000000000000000000000..bbc1d439157c12a0cc4b4dfff19650d4b4a59599

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/Makefile

@@ -0,0 +1,64 @@

+NAME=zsh-syntax-highlighting

+

+INSTALL?=install -c

+PREFIX?=/usr/local

+SHARE_DIR?=$(DESTDIR)$(PREFIX)/share/$(NAME)

+DOC_DIR?=$(DESTDIR)$(PREFIX)/share/doc/$(NAME)

+ZSH?=zsh # zsh binary to run tests with

+

+all:

+ cd docs && \

+ cp highlighters.md all.md && \

+ printf '\n\nIndividual highlighters documentation\n=====================================' >> all.md && \

+ for doc in highlighters/*.md; do printf '\n\n'; cat "$doc"; done >> all.md

+

+install: all

+ $(INSTALL) -d $(SHARE_DIR)

+ $(INSTALL) -d $(DOC_DIR)

+ cp .version zsh-syntax-highlighting.zsh $(SHARE_DIR)

+ cp COPYING.md README.md changelog.md $(DOC_DIR)

+ sed -e '1s/ .*//' -e '/^\[build-status-[a-z]*\]: /d' < README.md > $(DOC_DIR)/README.md

+ if [ x"true" = x"`git rev-parse --is-inside-work-tree 2>/dev/null`" ]; then \

+ git rev-parse HEAD; \

+ else \

+ cat .revision-hash; \

+ fi > $(SHARE_DIR)/.revision-hash

+ :

+# The [ -e ] check below is to because sh evaluates this with (the moral

+# equivalent of) NONOMATCH in effect, and highlighters/*.zsh has no matches.

+ for dirname in highlighters highlighters/*/ ; do \

+ $(INSTALL) -d $(SHARE_DIR)/"$dirname"; \

+ for fname in "$dirname"/*.zsh ; do [ -e "$fname" ] && cp "$fname" $(SHARE_DIR)"/$dirname"; done; \

+ done

+ cp -R docs/* $(DOC_DIR)

+

+clean:

+ rm -f docs/all.md

+

+test:

+ @$(ZSH) -fc 'echo ZSH_PATCHLEVEL=$ZSH_PATCHLEVEL'

+ @result=0; \

+ for test in highlighters/*; do \

+ if [ -d $test/test-data ]; then \

+ echo "Running test ${test##*/}"; \

+ env -i QUIET=$QUIET ${TERM:+"TERM=$TERM"} $(ZSH) -f tests/test-highlighting.zsh "${test##*/}"; \

+ : $(( result |= $? )); \

+ fi \

+ done; \

+ exit $result

+

+quiet-test:

+ $(MAKE) test QUIET=y

+

+perf:

+ @result=0; \

+ for test in highlighters/*; do \

+ if [ -d $test/test-data ]; then \

+ echo "Running test ${test##*/}"; \

+ $(ZSH) -f tests/test-perfs.zsh "${test##*/}"; \

+ : $(( result |= $? )); \

+ fi \

+ done; \

+ exit $result

+

+.PHONY: all install clean test perf

diff --git a/zsh/.zsh/zsh-syntax/README.md b/zsh/.zsh/zsh-syntax/README.md

new file mode 100644

index 0000000000000000000000000000000000000000..482a6481651a998411c8663395c3d6cf6e886750

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/README.md

@@ -0,0 +1,97 @@

+zsh-syntax-highlighting [![Build Status][build-status-image]][build-status]

+=======================

+

+**[Fish shell][fish]-like syntax highlighting for [Zsh][zsh].**

+

+*Requirements: zsh 4.3.11+.*

+

+[fish]: https://fishshell.com/

+[zsh]: https://www.zsh.org/

+

+This package provides syntax highlighting for the shell zsh. It enables

+highlighting of commands whilst they are typed at a zsh prompt into an

+interactive terminal. This helps in reviewing commands before running

+them, particularly in catching syntax errors.

+

+Some examples:

+

+Before: [![Screenshot #1.1](images/before1-smaller.png)](images/before1.png)

+<br/>

+After:&nbsp; [![Screenshot #1.2](images/after1-smaller.png)](images/after1.png)

+

+Before: [![Screenshot #2.1](images/before2-smaller.png)](images/before2.png)

+<br/>

+After:&nbsp; [![Screenshot #2.2](images/after2-smaller.png)](images/after2.png)

+

+Before: [![Screenshot #3.1](images/before3-smaller.png)](images/before3.png)

+<br/>

+After:&nbsp; [![Screenshot #3.2](images/after3-smaller.png)](images/after3.png)

+

+Before: [![Screenshot #4.1](images/before4-smaller.png)](images/before4-smaller.png)

+<br/>

+After:&nbsp; [![Screenshot #4.2](images/after4-smaller.png)](images/after4-smaller.png)

+

+

+

+How to install

+--------------

+

+See [INSTALL.md](INSTALL.md).

+

+

+FAQ

+---

+

+### Why must `zsh-syntax-highlighting.zsh` be sourced at the end of the `.zshrc` file?

+

+zsh-syntax-highlighting works by hooking into the Zsh Line Editor (ZLE) and

+computing syntax highlighting for the command-line buffer as it stands at the

+time z-sy-h's hook is invoked.

+

+In zsh 5.2 and older,

+`zsh-syntax-highlighting.zsh` hooks into ZLE by wrapping ZLE widgets. It must

+be sourced after all custom widgets have been created (i.e., after all `zle -N`

+calls and after running `compinit`) in order to be able to wrap all of them.

+Widgets created after z-sy-h is sourced will work, but will not update the

+syntax highlighting.

+

+In zsh newer than 5.8 (not including 5.8 itself),

+zsh-syntax-highlighting uses the `add-zle-hook-widget` facility to install

+a `zle-line-pre-redraw` hook. Hooks are run in order of registration,

+therefore, z-sy-h must be sourced (and register its hook) after anything else

+that adds hooks that modify the command-line buffer.

+

+### Does syntax highlighting work during incremental history search?

+

+Highlighting the command line during an incremental history search (by default bound to

+to <kbd>Ctrl+R</kbd> in zsh's emacs keymap) requires zsh 5.4 or newer.

+

+Under zsh versions older than 5.4, the zsh-default [underlining][zshzle-Character-Highlighting]

+of the matched portion of the buffer remains available, but zsh-syntax-highlighting's

+additional highlighting is unavailable. (Those versions of zsh do not provide

+enough information to allow computing the highlighting correctly.)

+

+See issues [#288][i288] and [#415][i415] for details.

+

+[zshzle-Character-Highlighting]: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting

+[i288]: https://github.com/zsh-users/zsh-syntax-highlighting/pull/288

+[i415]: https://github.com/zsh-users/zsh-syntax-highlighting/pull/415

+

+### How are new releases announced?

+

+There is currently no "push" announcements channel. However, the following

+alternatives exist:

+

+- GitHub's RSS feed of releases: https://github.com/zsh-users/zsh-syntax-highlighting/releases.atom

+- An anitya entry: https://release-monitoring.org/project/7552/

+

+

+How to tweak

+------------

+

+Syntax highlighting is done by pluggable highlighter scripts. See the

+[documentation on highlighters](docs/highlighters.md) for details and

+configuration settings.

+

+[build-status]: https://github.com/zsh-users/zsh-syntax-highlighting/actions

+[build-status-image]: https://github.com/zsh-users/zsh-syntax-highlighting/workflows/Tests/badge.svg

diff --git a/zsh/.zsh/zsh-syntax/changelog.md b/zsh/.zsh/zsh-syntax/changelog.md

new file mode 100644

index 0000000000000000000000000000000000000000..9230236615ac9bef2abe49662c69e52ba97c7685

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/changelog.md

@@ -0,0 +1,884 @@

+# Changes in HEAD

+

+

+## Changes fixed as part of the switch to zle-line-pre-redraw

+

+The changes in this section were fixed by switching to a `zle-line-pre-redraw`-based

+implementation.

+

+Note: The new implementation will only be used on future zsh releases,

+numbered 5.8.0.3 and newer, due to interoperability issues with other plugins

+(issues #418 and #579). The underlying zsh feature has been available since

+zsh 5.2.

+

+Whilst under development, the new implementation was known as the

+"feature/redrawhook" topic branch.

+

+- Fixed: Highlighting not triggered after popping a buffer from the buffer stack

+ (using the `push-line` widget, default binding: `M-q`)

+ [#40]

+

+- Fixed: Invoking completion when there were no matches removed highlighting

+ [#90, #470]

+

+- Fixed: Two successive deletes followed by a yank only yanked the latest

+ delete, rather than both of them

+ [#150, #151, #160; cf. #183]

+

+- Presumed fixed: Completing `$(xsel)` results in an error message from `xsel`,

+ with pre-2017 versions of `xsel`. (For 2017 vintage and newer, see the issue

+ for details.)

+ [#154]

+

+- Fixed: When the standard `bracketed-paste-magic` widget is in use, pastes were slow

+ [#295]

+

+- Fixed: No way to prevent a widget from being wrapped

+ [#324]

+

+- Fixed: No highlighting while cycling menu completion

+ [#375]

+

+- Fixed: Does not coexist with the `IGNORE_EOF` option

+ [#377]

+

+- Fixed: The `undefined-key` widget was wrapped

+ [#421]

+

+- Fixed: Does not coexist with the standard `surround` family of widgets

+ [#520]

+

+- Fixed: First completed filename doesn't get `path` highlighting

+ [#632]

+

+

+## Other changes

+

+- Add issue #712 to the previous release's changelog (hereinafter).

+

+

+# Changes in 0.8.0-alpha1-pre-redrawhook

+

+## Notice about an improbable-but-not-impossible forward incompatibility

+

+Everyone can probably skip this section.

+

+The `master` branch of zsh-syntax-highlighting uses a zsh feature that has not

+yet appeared in a zsh release: the `memo=` feature, added to zsh in commit

+zsh-5.8-172-gdd6e702ee (after zsh 5.8, before zsh 5.9). In the unlikely event

+that this zsh feature should change in an incompatible way before the next

+stable zsh release, set `zsh_highlight__memo_feature=0` in your .zshrc files to

+disable use of the new feature.

+

+z-sy-h dogfoods the new, unreleased zsh feature because that feature was

+added to zsh at z-sy-h's initiative. The new feature is used in the fix

+to issue #418.

+

+

+## Incompatible changes:

+

+- An unsuccessful completion (a <kbd>⮀ Tab</kbd> press that doesn't change the

+ command line) no longer causes highlighting to be lost. Visual feedback can

+ alternatively be achieved by setting the `format` zstyle under the `warnings`

+ tag, for example,

+

+ zstyle ':completion:*:warnings' format '%F{red}No matches%f'

+

+ Refer to the [description of the `format` style in `zshcompsys(1)`]

+ [zshcompsys-Standard-Styles-format].

+

+ (#90, part of #245 (feature/redrawhook))

+

+[zshcompsys-Standard-Styles]: http://zsh.sourceforge.net/Doc/Release/Completion-System.html#Standard-Styles

+[zshcompsys-Standard-Styles-format]: http://zsh.sourceforge.net/Doc/Release/Completion-System.html#index-format_002c-completion-style

+

+

+

+## Other changes:

+

+- Document `$ZSH_HIGHLIGHT_MAXLENGTH`.

+ [#698]

+

+- Optimize highlighting unquoted words (words that are not in single quotes, double quotes, backticks, or dollar-single-quotes)

+ [#730]

+

+- Redirection operators (e.g., `<` and `>`) are now highlighted by default

+ [#646]

+

+- Propertly terminate `noglob` scope in try/always blocks

+ [#577]

+

+- Don't error out when `KSH_ARRAYS` is set in the calling scope

+ [#622, #689]

+

+- Literal semicolons in array assignments (`foo=( bar ; baz )`) are now

+ highlighted as errors.

+ [3ca93f864fb6]

+

+- Command separators in array assignments (`foo=( bar | baz )`) are now

+ highlighted as errors.

+ [#651, 81267ca3130c]

+

+- Support parameter elision in command position (e.g., `$foo ls` where `$foo` is unset or empty)

+ [#667]

+

+- Don't consider the filename in `sudo -e /path/to/file` to be a command position

+ [#678]

+

+- Don't look up absolute directory names in $cdpath

+ [2cc2583f8f12, part of #669]

+

+- Fix `exec 2>&1;` being highlighted as an error.

+ [#676]

+

+- Fix `: $(<*)` being highlighted as globbing.

+ [#582]

+

+- Fix `cat < *` being highlighting as globbing when the `MULTIOS` option is unset.

+ [#583]

+

+- Fix `echo >&2` highlighting the `2` as a filename if a file by that name happened to exist

+ [#694, part of #645]

+

+- Fix `echo >&-` highlighting the `-` as a filename if a file by that name happened to exist

+ [part of #645]

+

+- Fix `echo >&p` highlighting the `p` as a filename if a file by that name happened to exist

+ [part of #645]

+

+- Fix wrong highlighting of unquoted parameter expansions under zsh 5.2 and older

+ [e165f18c758e]

+

+- Highlight global aliases

+ [#700]

+

+- Highlight `: =nosuchcommand' as an error (when the `EQUALS` option hasn't been unset).

+ [#430]

+

+- Highlight reserved word after assignments as errors (e.g., `foo=bar (ls;)`)

+ [#461]

+

+- Correctly highlight `[[ foo && bar || baz ]]`.

+

+- Highlight non-executable files in command position correctly (e.g., `% /etc/passwd`)

+ [#202, #669]

+

+- Highlight directories in command position correctly, including `AUTO_CD` support

+ [#669]

+

+- Recognize `env` as a precommand (e.g., `env FOO=bar ls`)

+

+- Recognize `strace` as a precommand

+

+- Fix an error message on stderr before every prompt when the `WARN_NESTED_VAR` zsh option is set:

+ `_zsh_highlight_main__precmd_hook:1: array parameter _zsh_highlight_main__command_type_cache set in enclosing scope in function _zsh_highlight_main__precmd_hook`

+ [#727, #731, #732, #733]

+

+- Fix highlighting of alias whose definitions use a simple command terminator

+ (such as `;`, `|`, `&&`) before a newline

+ [#677; had regressed in 0.7.0]

+

+- Highlight arithmetic expansions (e.g., `$(( 42 ))`)

+ [#607 #649 #704]

+

+- Highlight the parentheses of array assignments as reserved words (`foo=( bar )`).

+ The `assign` style remains supported and has precedence.

+ [#585]

+

+- Fix interoperability issue with other plugins that use highlighting. The fix

+ requires zsh 5.8.0.3 or newer. (zsh 5.8.0.2-dev from the `master` branch,

+ revision zsh-5.8-172-gdd6e702ee or newer is also fine.)

+ [#418, https://github.com/okapia/zsh-viexchange/issues/1]

+

+- Improve performance of the `brackets` highlighter.

+

+- Fix highlighting of pre-command redirections (e.g., the `$fn` in `<$fn cat`)

+ [#712]

+

+

+# Changes in version 0.7.1

+

+- Remove out-of-date information from the 0.7.0 changelog.

+

+

+# Changes in version 0.7.0

+

+This is a stable bugfix and feature release. Major new features and changes include:

+

+- Add `ZSH_HIGHLIGHT_DIRS_BLACKLIST` to disable "path" and "path prefix"

+ highlighting for specific directories

+ [#379]

+

+- Add the "regexp" highlighter, modelled after the pattern highlighter

+ [4e6f60063f1c]

+

+- When a word uses globbing, only the globbing metacharacters will be highlighted as globbing:

+ in `: foo*bar`, only the `*` will be blue.

+ [e48af357532c]

+

+- Highlight pasted quotes (e.g., `: foo"bar"`)

+ [dc1b2f6fa4bb]

+

+- Highlight command substitutions (`` : `ls` ``, `: $(ls)`)

+ [c0e64fe13178 and parents, e86f75a840e7, et al]

+

+- Highlight process substitutions (`: >(nl)`, `: <(pwd)`, `: =(git diff)`)

+ [c0e64fe13178 and parents, e86f75a840e7, et al]

+

+- Highlight command substitutions inside double quotes (``: "`foo`"``)

+ [f16e858f0c83]

+

+- Highlight many precommands (e.g., `nice`, `stdbuf`, `eatmydata`;

+ see `$precommand_options` in the source)

+

+- Highlight numeric globs (e.g., `echo /lib<->`)

+

+- Assorted improvements to aliases highlighting

+ (e.g.,

+ `alias sudo_u='sudo -u'; sudo_u jrandom ls`,

+ `alias x=y y=z z=nosuchcommand; x`,

+ `alias ls='ls -l'; \ls`)

+ [f3410c5862fc, 57386f30aec8, #544, and many others]

+

+- Highlight some more syntax errors

+ [dea05e44e671, 298ef6a2fa30]

+

+- New styles: named file descriptors, `RC_QUOTES`, and unclosed quotes (e.g., `echo "foo<CURSOR>`)

+ [38c794a978cd, 25ae1c01216c, 967335dfc5fd]

+

+- The 'brackets' highlighting no longer treats quotes specially.

+ [ecdda36ef56f]

+

+

+Selected bugfixes include:

+

+- Highlight `sudo` correctly when it's not installed

+ [26a82113b08b]

+

+- Handle some non-default options being set in zshrc

+ [b07ada1255b7, a2a899b41b8, 972ad197c13d, b3f66fc8748f]

+

+- Fix off-by-one highlighting in vi "visual" mode (vicmd keymap)

+ [be3882aeb054]

+

+- The 'yank-pop' widget is not wrapped

+ [#183]

+

+

+Known issues include:

+

+- A multiline alias that uses a simple command terminator (such as `;`, `|`, `&&`)

+ before a newline will incorrectly be highlighted as an error. See issue #677

+ for examples and workarounds.

+ [#677]

+ [UPDATE: Fixed in 0.8.0]

+

+

+# Changes in version 0.6.0

+

+This is a stable release, featuring bugfixes and minor improvements.

+

+

+## Performance improvements:

+

+(none)

+

+

+## Added highlighting of:

+

+- The `isearch` and `suffix` [`$zle_highlight` settings][zshzle-Character-Highlighting].

+ (79e4d3d12405, 15db71abd0cc, b56ee542d619; requires zsh 5.3 for `$ISEARCHMATCH_ACTIVE` / `$SUFFIX_ACTIVE` support)

+

+[zshzle-Character-Highlighting]: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting

+

+- Possible history expansions in double-quoted strings.

+ (76ea9e1df316)

+

+- Mismatched `if`/`then`/`elif`/`else`/`fi`.

+ (73cb83270262)

+

+

+## Fixed highlighting of:

+

+- A comment line followed by a non-comment line.

+ (#385, 9396ad5c5f9c)

+

+- An unquoted `$*` (expands to the positional parameters).

+ (237f89ad629f)

+

+- history-incremental-pattern-search-backward under zsh 5.3.1.

+ (#407, #415, 462779629a0c)

+

+

+## API changes (for highlighter authors):

+

+(none)

+

+

+## Developer-visible changes:

+

+- tests: Set the `ALIAS_FUNC_DEF` option for zsh 5.4 compatibility.

+ (9523d6d49cb3)

+

+

+## Other changes:

+

+- docs: Added before/after screenshots.

+ (cd9ec14a65ec..b7e277106b49)

+

+- docs: Link Fedora package.

+ (3d74aa47e4a7, 5feed23962df)

+

+- docs: Link FreeBSD port.

+ (626c034c68d7)

+

+- docs: Link OpenSUSE Build Service packages

+ (#419, dea1fedc7358)

+

+- Prevent user-defined aliases from taking effect in z-sy-h's own code.

+ (#390, 2dce602727d7, 8d5afe47f774; and #392, #395, b8fa1b9dc954)

+

+- docs: Update zplug installation instructions.

+ (#399, 4f49c4a35f17)

+

+- Improve "unhandled ZLE widget 'foo'" error message.

+ (#409, be083d7f3710)

+

+- Fix printing of "failed loading highlighters" error message.

+ (#426, ad522a091429)

+

+

+# Changes in version 0.5.0

+

+

+## Performance improvements:

+

+We thank Sebastian Gniazdowski and "m0viefreak" for significant contributions

+in this area.

+

+- Optimize string operations in the `main` (default) highlighter.

+ (#372/3cb58fd7d7b9, 02229ebd6328, ef4bfe5bcc14, #372/c6b6513ac0d6, #374/15461e7d21c3)

+

+- Command word highlighting: Use the `zsh/parameter` module to avoid forks.

+ Memoize (cache) the results.

+ (#298, 3ce01076b521, 2f18ba64e397, 12b879caf7a6; #320, 3b67e656bff5)

+

+- Avoid forks in the driver and in the `root` highlighter.

+ (b9112aec798a, 38c8fbea2dd2)

+

+

+## Added highlighting of:

+

+- `pkexec` (a precommand).

+ (#248, 4f3910cbbaa5)

+

+- Aliases that cannot be defined normally nor invoked normally (highlighted as an error).

+ (#263 (in part), 28932316cca6)

+

+- Path separators (`/`) — the default behaviour remains to highlight path separators

+ and path components the same way.

+ (#136, #260, 6cd39e7c70d3, 9a934d291e7c, f3d3aaa00cc4)

+

+- Assignments to individual positional arguments (`42=foo` to assign to `$42`).

+ (f4036a09cee3)

+

+- Linewise region (the `visual-line-mode` widget, bound to `V` in zsh's `vi` keymap).

+ (#267, a7a7f8b42280, ee07588cfd9b)

+

+- Command-lines recalled by `isearch` mode; requires zsh≥5.3.

+ (#261 (in part); #257; 4ad311ec0a68)

+

+- Command-lines whilst the `IGNORE_BRACES` or `IGNORE_CLOSE_BRACES` option is in effect.

+ (a8a6384356af, 02807f1826a5)

+

+- Mismatched parentheses and braces (in the `main` highlighter).

+ (51b9d79c3bb6, 2fabf7ca64b7, a4196eda5e6f, and others)

+

+- Mismatched `do`/`done` keywords.

+ (b2733a64da93)

+

+- Mismatched `foreach`/`end` keywords.

+ (#96, 2bb8f0703d8f)

+

+- In Bourne-style function definitions, when the `MULTI_FUNC_DEF` option is set

+ (which is the default), highlight the first word in the function body as

+ a command word: `f() { g "$@" }`.

+ (6f91850a01e1)

+

+- `always` blocks.

+ (#335, e5782e4ddfb6)

+

+- Command substitutions inside double quotes, `"$(echo foo)"`.

+ (#139 (in part), c3913e0d8ead)

+

+- Non-alphabetic parameters inside double quotes (`"$"`, `"$#"`, `"$*"`, `"$@"`, `"$?"`, `"$-"`).

+ (4afe670f7a1b, 44ef6e38e5a7)

+

+- Command words from future versions of zsh (forward compatibly).

+ This also adds an `arg0` style that all other command word styles fall back to.

+ (b4537a972eed, bccc3dc26943)

+

+- Escaped history expansions inside double quotes: `: "\!"`

+ (28d7056a7a06, et seq)

+

+

+## Fixed highlighting of:

+

+- Command separator tokens in syntactically-invalid positions.

+ (09c4114eb980)

+

+- Redirections with a file descriptor number at command word.

+ (#238 (in part), 73ee7c1f6c4a)

+

+- The `select` prompt, `$PS3`.

+ (#268, 451665cb2a8b)

+

+- Values of variables in `vared`.

+ (e500ca246286)

+

+- `!` as an argument (neither a history expansion nor a reserved word).

+ (4c23a2fd1b90)

+

+- "division by zero" error under the `brackets` highlighter when `$ZSH_HIGHLIGHT_STYLES` is empty.

+ (f73f3d53d3a6)

+

+- Process substitutions, `<(pwd)` and `>(wc -l)`.

+ (#302, 6889ff6bd2ad, bfabffbf975c, fc9c892a3f15)

+

+- The non-`SHORT_LOOPS` form of `repeat` loops: `repeat 42; do true; done`.

+ (#290, 4832f18c50a5, ef68f50c048f, 6362c757b6f7)

+

+- Broken symlinks (are now highlighted as files).

+ (#342, 95f7206a9373, 53083da8215e)

+

+- Lines accepted from `isearch` mode.

+ (#284; #257, #259, #288; 5bae6219008b, a8fe22d42251)

+

+- Work around upstream bug that triggered when the command word was a relative

+ path, that when interpreted relative to a $PATH directory denoted a command;

+ the effect of that upstream bug was that the relative path was cached as

+ a "valid external command name".

+ (#354, #355, 51614ca2c994, fdaeec45146b, 7d38d07255e4;

+ upstream fix slated to be released in 5.3 (workers/39104))

+

+- After accepting a line with the cursor on a bracket, the matching bracket

+ of the bracket under the cursor no longer remains highlighted (with the

+ `brackets` highlighter).

+ (4c4baede519a)

+

+- The first word on a new line within an array assignment or initialization is no

+ longer considered a command position.

+ (8bf423d16d46)

+

+- Subshells that end at command position, `(A=42)`, `(true;)`.

+ (#231, 7fb6f9979121; #344, 4fc35362ee5a)

+

+- Command word after array assignment, `a=(lorem ipsum) pwd`.

+ (#330, 7fb6f9979121)

+

+

+## API changes (for highlighter authors):

+

+- New interface `_zsh_highlight_add_highlight`.

+ (341a3ae1f015, c346f6eb6fb6)

+

+- tests: Specify the style key, not its value, in test expectations.

+ (a830613467af, fd061b5730bf, eaa4335c3441, among others)

+

+- Module author documentation improvements.

+ (#306 (in part), 217669270418, 0ff354b44b6e, 80148f6c8402, 364f206a547f, and others)

+

+- The driver no longer defines a `_zsh_highlight_${highlighter}_highlighter_cache`

+ variable, which is in the highlighters' namespace.

+ (3e59ab41b6b8, 80148f6c8402, f91a7b885e7d)

+

+- Rename highlighter entry points. The old names remain supported for

+ backwards compatibility.

+ (a3d5dfcbdae9, c793e0dceab1)

+

+- tests: Add the "NONE" expectation.

+ (4da9889d1545, 13018f3dd735, d37c55c788cd)

+

+- tests: consider a test that writes to stderr to have failed.

+ (#291, 1082067f9315)

+

+

+## Developer-visible changes:

+

+- Add `make quiet-test`.

+ (9b64ad750f35)

+

+- test harness: Better quote replaceables in error messages.

+ (30d8f92df225)

+

+- test harness: Fix exit code for XPASS.

+ (bb8d325c0cbd)

+

+- Create [HACKING.md](HACKING.md).

+ (cef49752fd0e)

+

+- tests: Emit a description for PASS test points.

+ (6aa57d60aa64, f0bae44b76dd)

+

+- tests: Create a script that generates a test file.

+ (8013dc3b8db6, et seq; `tests/generate.zsh`)

+

+

+## Other changes:

+

+- Under zsh≤5.2, widgets whose names start with a `_` are no longer excluded

+ from highlighting.

+ (ed33d2cb1388; reverts part of 186d80054a40 which was for #65)

+

+- Under zsh≤5.2, widgets implemented by a function named after the widget are

+ no longer excluded from highlighting.

+ (487b122c480d; reverts part of 776453cb5b69)

+

+- Under zsh≤5.2, shell-unsafe widget names can now be wrapped.

+ (#278, 6a634fac9fb9, et seq)

+

+- Correct some test expectations.

+ (78290e043bc5)

+

+- `zsh-syntax-highlighting.plugin.zsh`: Convert from symlink to plain file

+ for msys2 compatibility.

+ (#292, d4f8edc9f3ad)

+

+- Document installation under some plugin managers.

+ (e635f766bef9, 9cab566f539b)

+

+- Don't leak the `PATH_DIRS` option.

+ (7b82b88a7166)

+

+- Don't require the `FUNCTION_ARGZERO` option to be set.

+ (#338, 750aebc553f2)

+

+- Under zsh≤5.2, support binding incomplete/nonexistent widgets.

+ (9e569bb0fe04, part of #288)

+

+- Make the driver reentrant, fixing possibility of infinite recursion

+ under zsh≤5.2 under interaction with theoretical third-party code.

+ (#305, d711563fe1bf, 295d62ec888d, f3242cbd6aba)

+

+- Fix warnings when `WARN_CREATE_GLOBAL` is set prior to sourcing zsh-syntax-highlighting.

+ (z-sy-h already sets `WARN_CREATE_GLOBAL` internally.)

+ (da60234fb236)

+

+- Warn only once, rather than once per keypress, when a highlighter is unavailable.

+ (0a9b347483ae)

+

+

+# Changes in version 0.4.1

+

+## Fixes:

+

+- Arguments to widgets were not properly dash-escaped. Only matters for widgets

+ that take arguments (i.e., that are invoked as `zle ${widget} -- ${args}`).

+ (282c7134e8ac, reverts c808d2187a73)

+

+

+# Changes in version 0.4.0

+

+

+## Added highlighting of:

+

+- incomplete sudo commands

+ (a3047a912100, 2f05620b19ae)

+

+ ```zsh

+ sudo;

+ sudo -u;

+ ```

+

+- command words following reserved words

+ (#207, #222, b397b12ac139 et seq, 6fbd2aa9579b et seq, 8b4adbd991b0)

+

+ ```zsh

+ if ls; then ls; else ls; fi

+ repeat 10 do ls; done

+ ```

+

+ (The `ls` are now highlighted as a command.)

+

+- comments (when `INTERACTIVE_COMMENTS` is set)

+ (#163, #167, 693de99a9030)

+

+ ```zsh

+ echo Hello # comment

+ ```

+

+- closing brackets of arithmetic expansion, subshells, and blocks

+ (#226, a59f442d2d34, et seq)

+

+ ```zsh

+ (( foo ))

+ ( foo )

+ { foo }

+ ```

+

+- command names enabled by the `PATH_DIRS` option

+ (#228, 96ee5116b182)

+

+ ```zsh

+ # When ~/bin/foo/bar exists, is executable, ~/bin is in $PATH,

+ # and 'setopt PATH_DIRS' is in effect

+ foo/bar

+ ```

+

+- parameter expansions with braces inside double quotes

+ (#186, 6e3720f39d84)

+

+ ```zsh

+ echo "${foo}"

+ ```

+

+- parameter expansions in command word

+ (#101, 4fcfb15913a2)

+

+ ```zsh

+ x=/bin/ls

+ $x -l

+ ```

+

+- the command separators '\|&', '&!', '&\|'

+

+ ```zsh

+ view file.pdf &! ls

+ ```

+

+

+## Fixed highlighting of:

+

+- precommand modifiers at non-command-word position

+ (#209, 2c9f8c8c95fa)

+

+ ```zsh

+ ls command foo

+ ```

+

+- sudo commands with infix redirections

+ (#221, be006aded590, 86e924970911)

+

+ ```zsh

+ sudo -u >/tmp/foo.out user ls

+ ```

+

+- subshells; anonymous functions

+ (#166, #194, 0d1bfbcbfa67, 9e178f9f3948)

+

+ ```zsh

+ (true)

+ () { true }

+ ```

+

+- parameter assignment statements with no command

+ (#205, 01d7eeb3c713)

+

+ ```zsh

+ A=1;

+ ```

+

+ (The semicolon used to be highlighted as a mistake)

+

+- cursor highlighter: Remove the cursor highlighting when accepting a line.

+ (#109, 4f0c293fdef0)

+

+

+## Removed features:

+

+- Removed highlighting of approximate paths (`path_approx`).

+ (#187, 98aee7f8b9a3)

+

+

+## Other changes:

+

+- main highlighter refactored to use states rather than booleans.

+ (2080a441ac49, et seq)

+

+- Fix initialization when sourcing `zsh-syntax-highlighting.zsh` via a symlink

+ (083c47b00707)

+

+- docs: Add screenshot.

+ (57624bb9f64b)

+

+- widgets wrapping: Don't add '--' when invoking widgets.

+ (c808d2187a73) [_reverted in 0.4.1_]

+

+- Refresh highlighting upon `accept-*` widgets (`accept-line` et al).

+ (59fbdda64c21)

+

+- Stop leaking match/mbegin/mend to global scope (thanks to upstream

+ `WARN_CREATE_GLOBAL` improvements).

+ (d3deffbf46a4)

+

+- 'make install': Permit setting `$(SHARE_DIR)` from the environment.

+ (e1078a8b4cf1)

+

+- driver: Tolerate KSH_ARRAYS being set in the calling context.

+ (#162, 8f19af6b319d)

+

+- 'make install': Install documentation fully and properly.

+ (#219, b1619c001390, et seq)

+

+- docs: Improve 'main' highlighter's documentation.

+ (00de155063f5, 7d4252f5f596)

+

+- docs: Moved to a new docs/ tree; assorted minor updates

+ (c575f8f37567, 5b34c23cfad5, et seq)

+

+- docs: Split README.md into INSTALL.md

+ (0b3183f6cb9a)

+

+- driver: Report `$ZSH_HIGHLIGHT_REVISION` when running from git

+ (84734ba95026)

+

+

+## Developer-visible changes:

+

+- Test harness converted to [TAP](http://testanything.org/tap-specification.html) format

+ (d99aa58aaaef, et seq)

+

+- Run each test in a separate subprocess, isolating them from each other

+ (d99aa58aaaef, et seq)

+

+- Fix test failure with nonexisting $HOME

+ (#216, b2ac98b98150)

+

+- Test output is now colorized.

+ (4d3da30f8b72, 6fe07c096109)

+

+- Document `make install`

+ (a18a7427fd2c)

+

+- tests: Allow specifying the zsh binary to use.

+ (557bb7e0c6a0)

+

+- tests: Add 'make perf' target

+ (4513eaea71d7)

+

+- tests: Run each test in a sandbox directory

+ (c01533920245)

+

+

+# Changes in version 0.3.0

+

+

+## Added highlighting of:

+

+- suffix aliases (requires zsh 5.1.1 or newer):

+

+ ```zsh

+ alias -s png=display

+ foo.png

+ ```

+

+- prefix redirections:

+

+ ```zsh

+ <foo.txt cat

+ ```

+

+- redirection operators:

+

+ ```zsh

+ echo > foo.txt

+ ```

+

+- arithmetic evaluations:

+

+ ```zsh

+ (( 42 ))

+ ```

+

+- ' strings, including \x/\octal/\u/\U escapes

+

+ ```zsh

+ : foo\u0040bar'

+ ```

+

+- multiline strings:

+

+ ```zsh

+ % echo "line 1

+ line 2"

+ ```

+

+- string literals that haven't been finished:

+

+ ```zsh

+ % echo "Hello, world

+ ```

+- command words that involve tilde expansion:

+

+ ```zsh

+ % ~/bin/foo

+ ```

+

+## Fixed highlighting of:

+

+- quoted command words:

+

+ ```zsh

+ % \ls

+ ```

+

+- backslash escapes in "" strings:

+

+ ```zsh

+ % echo "\x41"

+ ```

+

+- noglob after command separator:

+

+ ```zsh

+ % :; noglob echo *

+ ```

+

+- glob after command separator, when the first command starts with 'noglob':

+

+ ```zsh

+ % noglob true; echo *

+ ```

+

+- the region (vi visual mode / set-mark-command) (issue #165)

+

+- redirection and command separators that would be highlighted as `path_approx`

+

+ ```zsh

+ % echo foo;‸

+ % echo <‸

+ ```

+

+ (where `‸` represents the cursor location)

+

+- escaped globbing (outside quotes)

+

+ ```zsh

+ % echo \*

+ ```

+

+

+## Other changes:

+

+- implemented compatibility with zsh's paste highlighting (issue #175)

+

+- `$?` propagated correctly to wrapped widgets

+

+- don't leak $REPLY into global scope

+

+

+## Developer-visible changes:

+

+- added makefile with `install` and `test` targets

+

+- set `warn_create_global` internally

+

+- document release process

+

+

+

+

+# Version 0.2.1

+

+(Start of changelog.)

+

diff --git a/zsh/.zsh/zsh-syntax/docs/highlighters.md b/zsh/.zsh/zsh-syntax/docs/highlighters.md

new file mode 100644

index 0000000000000000000000000000000000000000..bb72e5478d9a612af6dfe20a4442d108c0659b9b

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/docs/highlighters.md

@@ -0,0 +1,132 @@

+zsh-syntax-highlighting / highlighters

+======================================

+

+Syntax highlighting is done by pluggable highlighters:

+

+* `main` - the base highlighter, and the only one [active by default][1].

+* `brackets` - [matches brackets][2] and parenthesis.

+* `pattern` - matches [user-defined patterns][3].

+* `cursor` - matches [the cursor position][4].

+* `root` - highlights the whole command line [if the current user is root][5].

+* `line` - applied to [the whole command line][6].

+

+[1]: highlighters/main.md

+[2]: highlighters/brackets.md

+[3]: highlighters/pattern.md

+[4]: highlighters/cursor.md

+[5]: highlighters/root.md

+[6]: highlighters/line.md

+

+

+Highlighter-independent settings

+--------------------------------

+

+By default, all command lines are highlighted. However, it is possible to

+prevent command lines longer than a fixed number of characters from being

+highlighted by setting the variable `${ZSH_HIGHLIGHT_MAXLENGTH}` to the maximum

+length (in characters) of command lines to be highlighter. This is useful when

+editing very long comand lines (for example, with the [`fned`][fned] utility

+function). Example:

+

+[fned]: http://zsh.sourceforge.net/Doc/Release/User-Contributions.html#index-zed

+

+```zsh

+ZSH_HIGHLIGHT_MAXLENGTH=512

+```

+

+

+How to activate highlighters

+----------------------------

+

+To activate an highlighter, add it to the `ZSH_HIGHLIGHT_HIGHLIGHTERS` array in

+`~/.zshrc`, for example:

+

+```zsh

+ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets pattern cursor)

+```

+

+By default, `$ZSH_HIGHLIGHT_HIGHLIGHTERS` is unset and only the `main`

+highlighter is active.

+

+

+How to tweak highlighters

+-------------------------

+

+Highlighters look up styles from the `ZSH_HIGHLIGHT_STYLES` associative array.

+Navigate into the [individual highlighters' documentation](highlighters/) to

+see what styles (keys) each highlighter defines; the syntax for values is the

+same as the syntax of "types of highlighting" of the zsh builtin

+`$zle_highlight` array, which is documented in [the `zshzle(1)` manual

+page][zshzle-Character-Highlighting].

+

+[zshzle-Character-Highlighting]: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting

+

+Some highlighters support additional configuration parameters; see each

+highlighter's documentation for details and examples.

+

+

+How to implement a new highlighter

+----------------------------------

+

+To create your own `acme` highlighter:

+

+* Create your script at

+ `highlighters/acme/acme-highlighter.zsh`.

+

+* Implement the `_zsh_highlight_highlighter_acme_predicate` function.

+ This function must return 0 when the highlighter needs to be called and

+ non-zero otherwise, for example:

+

+ ```zsh

+ _zsh_highlight_highlighter_acme_predicate() {

+ # Call this highlighter in SVN working copies

+ [[ -d .svn ]]

+ }

+ ```

+

+* Implement the `_zsh_highlight_highlighter_acme_paint` function.

+ This function does the actual syntax highlighting, by calling

+ `_zsh_highlight_add_highlight` with the start and end of the region to

+ be highlighted and the `ZSH_HIGHLIGHT_STYLES` key to use. Define the default

+ style for that key in the highlighter script outside of any function with

+ `: ${ZSH_HIGHLIGHT_STYLES[key]:=value}`, being sure to prefix

+ the key with your highlighter name and a colon. For example:

+

+ ```zsh

+ : ${ZSH_HIGHLIGHT_STYLES[acme:aurora]:=fg=green}

+

+ _zsh_highlight_highlighter_acme_paint() {

+ # Colorize the whole buffer with the 'aurora' style

+ _zsh_highlight_add_highlight 0 $#BUFFER acme:aurora

+ }

+ ```

+

+ If you need to test which options the user has set, test `zsyh_user_options`

+ with a sensible default if the option is not present in supported zsh

+ versions. For example:

+

+ ```zsh

+ [[ ${zsyh_user_options[ignoreclosebraces]:-off} == on ]]

+ ```

+

+ The option name must be all lowercase with no underscores and not an alias.

+

+* Name your own functions and global variables `_zsh_highlight_acme_*`.

+

+ - In zsh-syntax-highlighting 0.4.0 and earlier, the entrypoints

+ `_zsh_highlight_highlighter_acme_predicate` and

+ `_zsh_highlight_highlighter_acme_paint`

+ were named

+ `_zsh_highlight_acme_highlighter_predicate` and

+ `_zsh_highlight_highlighter_acme_paint` respectively.

+

+ These names are still supported for backwards compatibility;

+ however, support for them will be removed in a future major or minor release (v0.x.0 or v1.0.0).

+

+* Activate your highlighter in `~/.zshrc`:

+

+ ```zsh

+ ZSH_HIGHLIGHT_HIGHLIGHTERS+=(acme)

+ ```

+

+* [Write tests](../tests/README.md).

diff --git a/zsh/.zsh/zsh-syntax/docs/highlighters/brackets.md b/zsh/.zsh/zsh-syntax/docs/highlighters/brackets.md

new file mode 100644

index 0000000000000000000000000000000000000000..8410135eb3923fd3119e09e6a2509658a95a6471

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/docs/highlighters/brackets.md

@@ -0,0 +1,31 @@

+zsh-syntax-highlighting / highlighters / brackets

+-------------------------------------------------

+

+This is the `brackets` highlighter, that highlights brackets and parentheses, and

+matches them.

+

+

+### How to tweak it

+

+This highlighter defines the following styles:

+

+* `bracket-error` - unmatched brackets

+* `bracket-level-N` - brackets with nest level N

+* `cursor-matchingbracket` - the matching bracket, if cursor is on a bracket

+

+To override one of those styles, change its entry in `ZSH_HIGHLIGHT_STYLES`,

+for example in `~/.zshrc`:

+

+```zsh

+# To define styles for nested brackets up to level 4

+ZSH_HIGHLIGHT_STYLES[bracket-level-1]='fg=blue,bold'

+ZSH_HIGHLIGHT_STYLES[bracket-level-2]='fg=red,bold'

+ZSH_HIGHLIGHT_STYLES[bracket-level-3]='fg=yellow,bold'

+ZSH_HIGHLIGHT_STYLES[bracket-level-4]='fg=magenta,bold'

+```

+

+The syntax for values is the same as the syntax of "types of highlighting" of

+the zsh builtin `$zle_highlight` array, which is documented in [the `zshzle(1)`

+manual page][zshzle-Character-Highlighting].

+

+[zshzle-Character-Highlighting]: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting

diff --git a/zsh/.zsh/zsh-syntax/docs/highlighters/cursor.md b/zsh/.zsh/zsh-syntax/docs/highlighters/cursor.md

new file mode 100644

index 0000000000000000000000000000000000000000..c4f22b89d4d737cbbcff1b67b31798ca96c128b3

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/docs/highlighters/cursor.md

@@ -0,0 +1,24 @@

+zsh-syntax-highlighting / highlighters / cursor

+-----------------------------------------------

+

+This is the `cursor` highlighter, that highlights the cursor.

+

+

+### How to tweak it

+

+This highlighter defines the following styles:

+

+* `cursor` - the style for the current cursor position

+

+To override one of those styles, change its entry in `ZSH_HIGHLIGHT_STYLES`,

+for example in `~/.zshrc`:

+

+```zsh

+ZSH_HIGHLIGHT_STYLES[cursor]='bg=blue'

+```

+

+The syntax for values is the same as the syntax of "types of highlighting" of

+the zsh builtin `$zle_highlight` array, which is documented in [the `zshzle(1)`

+manual page][zshzle-Character-Highlighting].

+

+[zshzle-Character-Highlighting]: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting

diff --git a/zsh/.zsh/zsh-syntax/docs/highlighters/line.md b/zsh/.zsh/zsh-syntax/docs/highlighters/line.md

new file mode 100644

index 0000000000000000000000000000000000000000..1081fe1ee239540bfb4c9020f349c4372d41db61

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/docs/highlighters/line.md

@@ -0,0 +1,24 @@

+zsh-syntax-highlighting / highlighters / line

+---------------------------------------------

+

+This is the `line` highlighter, that highlights the whole line.

+

+

+### How to tweak it

+

+This highlighter defines the following styles:

+

+* `line` - the style for the whole line

+

+To override one of those styles, change its entry in `ZSH_HIGHLIGHT_STYLES`,

+for example in `~/.zshrc`:

+

+```zsh

+ZSH_HIGHLIGHT_STYLES[line]='bold'

+```

+

+The syntax for values is the same as the syntax of "types of highlighting" of

+the zsh builtin `$zle_highlight` array, which is documented in [the `zshzle(1)`

+manual page][zshzle-Character-Highlighting].

+

+[zshzle-Character-Highlighting]: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting

diff --git a/zsh/.zsh/zsh-syntax/docs/highlighters/main.md b/zsh/.zsh/zsh-syntax/docs/highlighters/main.md

new file mode 100644

index 0000000000000000000000000000000000000000..cc6186b41df80af8049955e7d1701e0ac989d7cb

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/docs/highlighters/main.md

@@ -0,0 +1,121 @@

+zsh-syntax-highlighting / highlighters / main

+---------------------------------------------

+

+This is the `main` highlighter, that highlights:

+

+* Commands

+* Options

+* Arguments

+* Paths

+* Strings

+

+This highlighter is active by default.

+

+

+### How to tweak it

+

+This highlighter defines the following styles:

+

+* `unknown-token` - unknown tokens / errors

+* `reserved-word` - shell reserved words (`if`, `for`)

+* `alias` - aliases

+* `suffix-alias` - suffix aliases (requires zsh 5.1.1 or newer)

+* `global-alias` - global aliases

+* `builtin` - shell builtin commands (`shift`, `pwd`, `zstyle`)

+* `function` - function names

+* `command` - command names

+* `precommand` - precommand modifiers (e.g., `noglob`, `builtin`)

+* `commandseparator` - command separation tokens (`;`, `&&`)

+* `hashed-command` - hashed commands

+* `autodirectory` - a directory name in command position when the `AUTO_CD` option is set

+* `path` - existing filenames

+* `path_pathseparator` - path separators in filenames (`/`); if unset, `path` is used (default)

+* `path_prefix` - prefixes of existing filenames

+* `path_prefix_pathseparator` - path separators in prefixes of existing filenames (`/`); if unset, `path_prefix` is used (default)

+* `globbing` - globbing expressions (`*.txt`)

+* `history-expansion` - history expansion expressions (`!foo` and `^foo^bar`)

+* `command-substitution` - command substitutions (`$(echo foo)`)

+* `command-substitution-unquoted` - an unquoted command substitution (`$(echo foo)`)

+* `command-substitution-quoted` - a quoted command substitution (`"$(echo foo)"`)

+* `command-substitution-delimiter` - command substitution delimiters (`$(` and `)`)

+* `command-substitution-delimiter-unquoted` - an unquoted command substitution delimiters (`$(` and `)`)

+* `command-substitution-delimiter-quoted` - a quoted command substitution delimiters (`"$(` and `)"`)

+* `process-substitution` - process substitutions (`<(echo foo)`)

+* `process-substitution-delimiter` - process substitution delimiters (`<(` and `)`)

+* `arithmetic-expansion` - arithmetic expansion `$(( 42 ))`)

+* `single-hyphen-option` - single-hyphen options (`-o`)

+* `double-hyphen-option` - double-hyphen options (`--option`)

+* `back-quoted-argument` - backtick command substitution (`` `foo` ``)

+* `back-quoted-argument-unclosed` - unclosed backtick command substitution (`` `foo ``)

+* `back-quoted-argument-delimiter` - backtick command substitution delimiters (`` ` ``)

+* `single-quoted-argument` - single-quoted arguments (`` 'foo' ``)

+* `single-quoted-argument-unclosed` - unclosed single-quoted arguments (`` 'foo ``)

+* `double-quoted-argument` - double-quoted arguments (`` "foo" ``)

+* `double-quoted-argument-unclosed` - unclosed double-quoted arguments (`` "foo ``)

+* `dollar-quoted-argument` - dollar-quoted arguments (`` foo' ``)

+* `dollar-quoted-argument-unclosed` - unclosed dollar-quoted arguments (`` foo ``)

+* `rc-quote` - two single quotes inside single quotes when the `RC_QUOTES` option is set (`` 'foo''bar' ``)

+* `dollar-double-quoted-argument` - parameter expansion inside double quotes (`$foo` inside `""`)

+* `back-double-quoted-argument` - backslash escape sequences inside double-quoted arguments (`\"` in `"foo\"bar"`)

+* `back-dollar-quoted-argument` - backslash escape sequences inside dollar-quoted arguments (`\x` in ` \x48'`)

+* `assign` - parameter assignments (`x=foo` and `x=( )`)

+* `redirection` - redirection operators (`<`, `>`, etc)

+* `comment` - comments, when `setopt INTERACTIVE_COMMENTS` is in effect (`echo # foo`)

+* `comment` - elided parameters in command position (`$x ls` when `$x` is unset or empty)

+* `named-fd` - named file descriptor (the `fd` in `echo foo {fd}>&2`)

+* `numeric-fd` - numeric file descriptor (the `2` in `echo foo {fd}>&2`)

+* `arg0` - a command word other than one of those enumerated above (other than a command, precommand, alias, function, or shell builtin command).

+* `default` - everything else

+

+To override one of those styles, change its entry in `ZSH_HIGHLIGHT_STYLES`,

+for example in `~/.zshrc`:

+

+```zsh

+# Declare the variable

+typeset -A ZSH_HIGHLIGHT_STYLES

+

+# To differentiate aliases from other command types

+ZSH_HIGHLIGHT_STYLES[alias]='fg=magenta,bold'

+

+# To have paths colored instead of underlined

+ZSH_HIGHLIGHT_STYLES[path]='fg=cyan'

+

+# To disable highlighting of globbing expressions

+ZSH_HIGHLIGHT_STYLES[globbing]='none'

+```

+

+The syntax for values is the same as the syntax of "types of highlighting" of

+the zsh builtin `$zle_highlight` array, which is documented in [the `zshzle(1)`

+manual page][zshzle-Character-Highlighting].

+

+#### Parameters

+

+To avoid partial path lookups on a path, add the path to the `ZSH_HIGHLIGHT_DIRS_BLACKLIST` array.

+

+```zsh

+ZSH_HIGHLIGHT_DIRS_BLACKLIST+=(/mnt/slow_share)

+```

+

+### Useless trivia

+

+#### Forward compatibility.

+

+zsh-syntax-highlighting attempts to be forward-compatible with zsh.

+Specifically, we attempt to facilitate highlighting _command word_ types that

+had not yet been invented when this version of zsh-syntax-highlighting was

+released.

+

+A _command word_ is something like a function name, external command name, et

+cetera. (See

+[Simple Commands & Pipelines in `zshmisc(1)`][zshmisc-Simple-Commands-And-Pipelines]

+for a formal definition.)

+

+If a new _kind_ of command word is ever added to zsh — something conceptually

+different than "function" and "alias" and "external command" — then command words

+of that (new) kind will be highlighted by the style `arg0_$kind`,

+where `$kind` is the output of `type -w` on the new kind of command word. If that

+style is not defined, then the style `arg0` will be used instead.

+

+[zshmisc-Simple-Commands-And-Pipelines]: http://zsh.sourceforge.net/Doc/Release/Shell-Grammar.html#Simple-Commands-_0026-Pipelines

+

+[zshzle-Character-Highlighting]: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting

diff --git a/zsh/.zsh/zsh-syntax/docs/highlighters/pattern.md b/zsh/.zsh/zsh-syntax/docs/highlighters/pattern.md

new file mode 100644

index 0000000000000000000000000000000000000000..e67d79f30df9f170352a6e570384e9b489dd9126

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/docs/highlighters/pattern.md

@@ -0,0 +1,24 @@

+zsh-syntax-highlighting / highlighters / pattern

+------------------------------------------------

+

+This is the `pattern` highlighter, that highlights user-defined patterns.

+

+

+### How to tweak it

+

+To use this highlighter, associate patterns with styles in the

+`ZSH_HIGHLIGHT_PATTERNS` associative array, for example in `~/.zshrc`:

+

+```zsh

+# Declare the variable

+typeset -A ZSH_HIGHLIGHT_PATTERNS

+

+# To have commands starting with `rm -rf` in red:

+ZSH_HIGHLIGHT_PATTERNS+=('rm -rf *' 'fg=white,bold,bg=red')

+```

+

+The syntax for values is the same as the syntax of "types of highlighting" of

+the zsh builtin `$zle_highlight` array, which is documented in [the `zshzle(1)`

+manual page][zshzle-Character-Highlighting].

+

+[zshzle-Character-Highlighting]: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting

diff --git a/zsh/.zsh/zsh-syntax/docs/highlighters/regexp.md b/zsh/.zsh/zsh-syntax/docs/highlighters/regexp.md

new file mode 100644

index 0000000000000000000000000000000000000000..5c8a89eb098bce7eab91691f99b9187ed8c73882

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/docs/highlighters/regexp.md

@@ -0,0 +1,30 @@

+zsh-syntax-highlighting / highlighters / regexp

+------------------------------------------------

+

+This is the `regexp` highlighter, that highlights user-defined regular

+expressions. It's similar to the `pattern` highlighter, but allows more complex

+patterns.

+

+### How to tweak it

+

+To use this highlighter, associate regular expressions with styles in the

+`ZSH_HIGHLIGHT_REGEXP` associative array, for example in `~/.zshrc`:

+

+```zsh

+typeset -A ZSH_HIGHLIGHT_REGEXP

+ZSH_HIGHLIGHT_REGEXP+=('\bsudo\b' fg=123,bold)

+```

+

+This will highlight "sudo" only as a complete word, i.e., "sudo cmd", but not

+"sudoedit"

+

+The syntax for values is the same as the syntax of "types of highlighting" of

+the zsh builtin `$zle_highlight` array, which is documented in [the `zshzle(1)`

+manual page][zshzle-Character-Highlighting].

+

+See also: [regular expressions tutorial][perlretut], zsh regexp operator `=~`

+in [the `zshmisc(1)` manual page][zshmisc-Conditional-Expressions]

+

+[zshzle-Character-Highlighting]: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting

+[perlretut]: http://perldoc.perl.org/perlretut.html

+[zshmisc-Conditional-Expressions]: http://zsh.sourceforge.net/Doc/Release/Conditional-Expressions.html#Conditional-Expressions

diff --git a/zsh/.zsh/zsh-syntax/docs/highlighters/root.md b/zsh/.zsh/zsh-syntax/docs/highlighters/root.md

new file mode 100644

index 0000000000000000000000000000000000000000..d120d20c9206e8c88e65cd73d5e039d6320ae40d

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/docs/highlighters/root.md

@@ -0,0 +1,25 @@

+zsh-syntax-highlighting / highlighters / root

+---------------------------------------------

+

+This is the `root` highlighter, that highlights the whole line if the current

+user is root.

+

+

+### How to tweak it

+

+This highlighter defines the following styles:

+

+* `root` - the style for the whole line if the current user is root.

+

+To override one of those styles, change its entry in `ZSH_HIGHLIGHT_STYLES`,

+for example in `~/.zshrc`:

+

+```zsh

+ZSH_HIGHLIGHT_STYLES[root]='bg=red'

+```

+

+The syntax for values is the same as the syntax of "types of highlighting" of

+the zsh builtin `$zle_highlight` array, which is documented in [the `zshzle(1)`

+manual page][zshzle-Character-Highlighting].

+

+[zshzle-Character-Highlighting]: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting

diff --git a/zsh/.zsh/zsh-syntax/highlighters/README.md b/zsh/.zsh/zsh-syntax/highlighters/README.md

new file mode 100644

index 0000000000000000000000000000000000000000..8490ddf433b55aa480debc92203d4993be6a1ca8

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/README.md

@@ -0,0 +1,8 @@

+zsh-syntax-highlighting / highlighters

+======================================

+

+Navigate into the individual highlighters' documentation to see

+what styles (`$ZSH_HIGHLIGHT_STYLES` keys) each highlighter defines.

+

+Refer to the [documentation on highlighters](../docs/highlighters.md) for further

+information.

diff --git a/zsh/.zsh/zsh-syntax/highlighters/brackets/README.md b/zsh/.zsh/zsh-syntax/highlighters/brackets/README.md

new file mode 120000

index 0000000000000000000000000000000000000000..6997bd60d3a6b18806917ea116a0be17a16c811d

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/brackets/README.md

@@ -0,0 +1 @@

+../../docs/highlighters/brackets.md

\ No newline at end of file

diff --git a/zsh/.zsh/zsh-syntax/highlighters/brackets/brackets-highlighter.zsh b/zsh/.zsh/zsh-syntax/highlighters/brackets/brackets-highlighter.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..bc388fdbf8e41ee011c51fea42cece4aaca5a6dc

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/brackets/brackets-highlighter.zsh

@@ -0,0 +1,107 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2010-2017 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+

+# Define default styles.

+: ${ZSH_HIGHLIGHT_STYLES[bracket-error]:=fg=red,bold}

+: ${ZSH_HIGHLIGHT_STYLES[bracket-level-1]:=fg=blue,bold}

+: ${ZSH_HIGHLIGHT_STYLES[bracket-level-2]:=fg=green,bold}

+: ${ZSH_HIGHLIGHT_STYLES[bracket-level-3]:=fg=magenta,bold}

+: ${ZSH_HIGHLIGHT_STYLES[bracket-level-4]:=fg=yellow,bold}

+: ${ZSH_HIGHLIGHT_STYLES[bracket-level-5]:=fg=cyan,bold}

+: ${ZSH_HIGHLIGHT_STYLES[cursor-matchingbracket]:=standout}

+

+# Whether the brackets highlighter should be called or not.

+_zsh_highlight_highlighter_brackets_predicate()

+{

+ [[ $WIDGET == zle-line-finish ]] || _zsh_highlight_cursor_moved || _zsh_highlight_buffer_modified

+}

+

+# Brackets highlighting function.

+_zsh_highlight_highlighter_brackets_paint()

+{

+ local char style

+ local -i bracket_color_size=${#ZSH_HIGHLIGHT_STYLES[(I)bracket-level-*]} buflen=${#BUFFER} level=0 matchingpos pos

+ local -A levelpos lastoflevel matching

+

+ # Find all brackets and remember which one is matching

+ pos=0

+ for char in ${(s..)BUFFER} ; do

+ (( ++pos ))

+ case $char in

+ ["([{"])

+ levelpos[$pos]=$((++level))

+ lastoflevel[$level]=$pos

+ ;;

+ [")]}"])

+ if (( level > 0 )); then

+ matchingpos=$lastoflevel[$level]

+ levelpos[$pos]=$((level--))

+ if _zsh_highlight_brackets_match $matchingpos $pos; then

+ matching[$matchingpos]=$pos

+ matching[$pos]=$matchingpos

+ fi

+ else

+ levelpos[$pos]=-1

+ fi

+ ;;

+ esac

+ done

+

+ # Now highlight all found brackets

+ for pos in ${(k)levelpos}; do

+ if (( $+matching[$pos] )); then

+ if (( bracket_color_size )); then

+ _zsh_highlight_add_highlight $((pos - 1)) $pos bracket-level-$(( (levelpos[$pos] - 1) % bracket_color_size + 1 ))

+ fi

+ else

+ _zsh_highlight_add_highlight $((pos - 1)) $pos bracket-error

+ fi

+ done

+

+ # If cursor is on a bracket, then highlight corresponding bracket, if any.

+ if [[ $WIDGET != zle-line-finish ]]; then

+ pos=$((CURSOR + 1))

+ if (( $+levelpos[$pos] )) && (( $+matching[$pos] )); then

+ local -i otherpos=$matching[$pos]

+ _zsh_highlight_add_highlight $((otherpos - 1)) $otherpos cursor-matchingbracket

+ fi

+ fi

+}

+

+# Helper function to differentiate type

+_zsh_highlight_brackets_match()

+{

+ case $BUFFER[$1] in

+ \() [[ $BUFFER[$2] == \) ]];;

+ \[) [[ $BUFFER[$2] == \] ]];;

+ \{) [[ $BUFFER[$2] == \} ]];;

+ *) false;;

+ esac

+}

diff --git a/zsh/.zsh/zsh-syntax/highlighters/brackets/test-data/cursor-matchingbracket-line-finish.zsh b/zsh/.zsh/zsh-syntax/highlighters/brackets/test-data/cursor-matchingbracket-line-finish.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..b2acd31df4e56758994693a95102fe8ef3ccd991

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/brackets/test-data/cursor-matchingbracket-line-finish.zsh

@@ -0,0 +1,36 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+WIDGET=zle-line-finish

+

+BUFFER=': $foo[bar]'

+CURSOR=6 # cursor is zero-based

+

+expected_region_highlight=(

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/brackets/test-data/cursor-matchingbracket.zsh b/zsh/.zsh/zsh-syntax/highlighters/brackets/test-data/cursor-matchingbracket.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..e05b4e9020bf7348ff99a354635b5dd52f377f31

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/brackets/test-data/cursor-matchingbracket.zsh

@@ -0,0 +1,47 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+unsorted=1

+

+ZSH_HIGHLIGHT_STYLES[bracket-level-1]=

+ZSH_HIGHLIGHT_STYLES[bracket-level-2]=

+ZSH_HIGHLIGHT_STYLES[bracket-level-3]=

+

+BUFFER=': ((( )))'

+CURSOR=2 # cursor is zero-based

+

+expected_region_highlight=(

+ "3 3 bracket-level-1"

+ "4 4 bracket-level-2"

+ "5 5 bracket-level-3"

+ "7 7 bracket-level-3"

+ "8 8 bracket-level-2"

+ "9 9 bracket-level-1"

+ "9 9 cursor-matchingbracket"

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/brackets/test-data/empty-styles.zsh b/zsh/.zsh/zsh-syntax/highlighters/brackets/test-data/empty-styles.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..e60657bcce3a2f1949e0ee7ec97925520b1afab1

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/brackets/test-data/empty-styles.zsh

@@ -0,0 +1,33 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER=': (x)'

+

+expected_region_highlight=(

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/brackets/test-data/loop-styles.zsh b/zsh/.zsh/zsh-syntax/highlighters/brackets/test-data/loop-styles.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..e5cfcdf03452d42c6a98282f1a20b9c8e4c747b6

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/brackets/test-data/loop-styles.zsh

@@ -0,0 +1,53 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+unsorted=1

+

+ZSH_HIGHLIGHT_STYLES[bracket-level-1]=

+ZSH_HIGHLIGHT_STYLES[bracket-level-2]=

+ZSH_HIGHLIGHT_STYLES[bracket-level-3]=

+

+BUFFER=': ({[({[(x)]})]})'

+

+expected_region_highlight=(

+ "3 3 bracket-level-1"

+ "4 4 bracket-level-2"

+ "5 5 bracket-level-3"

+ "6 6 bracket-level-1"

+ "7 7 bracket-level-2"

+ "8 8 bracket-level-3"

+ "9 9 bracket-level-1"

+ "11 11 bracket-level-1"

+ "12 12 bracket-level-3"

+ "13 13 bracket-level-2"

+ "14 14 bracket-level-1"

+ "15 15 bracket-level-3"

+ "16 16 bracket-level-2"

+ "17 17 bracket-level-1"

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/brackets/test-data/mismatch-patentheses.zsh b/zsh/.zsh/zsh-syntax/highlighters/brackets/test-data/mismatch-patentheses.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..5cc588fabdb00aad24e2545543fca28f782d8883

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/brackets/test-data/mismatch-patentheses.zsh

@@ -0,0 +1,42 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+unsorted=1

+

+ZSH_HIGHLIGHT_STYLES[bracket-level-1]=

+ZSH_HIGHLIGHT_STYLES[bracket-level-2]=

+

+BUFFER='echo ({x}]'

+

+expected_region_highlight=(

+ "6 6 bracket-error" # (

+ "7 7 bracket-level-2" # {

+ "9 9 bracket-level-2" # }

+ "10 10 bracket-error" # )

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/brackets/test-data/near-quotes.zsh b/zsh/.zsh/zsh-syntax/highlighters/brackets/test-data/near-quotes.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..49f002be31841bb62bcc9248dc3fee260094f3f5

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/brackets/test-data/near-quotes.zsh

@@ -0,0 +1,42 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+unsorted=1

+

+ZSH_HIGHLIGHT_STYLES[bracket-level-1]=

+ZSH_HIGHLIGHT_STYLES[bracket-level-2]=

+

+BUFFER=': {"{x}"}'

+

+expected_region_highlight=(

+ "3 3 bracket-level-1"

+ "5 5 bracket-level-2"

+ "7 7 bracket-level-2"

+ "9 9 bracket-level-1"

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/brackets/test-data/nested-parentheses.zsh b/zsh/.zsh/zsh-syntax/highlighters/brackets/test-data/nested-parentheses.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..21a20fb3ca48f676e7b548b5dc5d4c570017df3d

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/brackets/test-data/nested-parentheses.zsh

@@ -0,0 +1,45 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+unsorted=1

+

+ZSH_HIGHLIGHT_STYLES[bracket-level-1]=

+ZSH_HIGHLIGHT_STYLES[bracket-level-2]=

+ZSH_HIGHLIGHT_STYLES[bracket-level-3]=

+

+BUFFER='echo $(echo ${(z)array})'

+

+expected_region_highlight=(

+ "7 7 bracket-level-1" # (

+ "14 14 bracket-level-2" # {

+ "15 15 bracket-level-3" # (

+ "17 17 bracket-level-3" # )

+ "23 23 bracket-level-2" # }

+ "24 24 bracket-level-1" # )

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/brackets/test-data/only-error.zsh b/zsh/.zsh/zsh-syntax/highlighters/brackets/test-data/only-error.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..00fe557c376758d2dc601def58524d18314499af

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/brackets/test-data/only-error.zsh

@@ -0,0 +1,34 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2017 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER=': x)'

+

+expected_region_highlight=(

+ "4 4 bracket-error" # )

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/brackets/test-data/quoted-patentheses.zsh b/zsh/.zsh/zsh-syntax/highlighters/brackets/test-data/quoted-patentheses.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..81ee04f229c538ff060a56599d82a8ea877af33d

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/brackets/test-data/quoted-patentheses.zsh

@@ -0,0 +1,34 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='echo "foo ( bar"'

+

+expected_region_highlight=(

+"11 11 bracket-error"

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/brackets/test-data/simple-parentheses.zsh b/zsh/.zsh/zsh-syntax/highlighters/brackets/test-data/simple-parentheses.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..2ccfbab0c4b411b05323e3d8b45f0e3c08191ed4

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/brackets/test-data/simple-parentheses.zsh

@@ -0,0 +1,42 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+unsorted=1

+

+ZSH_HIGHLIGHT_STYLES[bracket-level-1]=

+ZSH_HIGHLIGHT_STYLES[bracket-level-2]=

+

+BUFFER='echo ({x})'

+

+expected_region_highlight=(

+ "6 6 bracket-level-1" # (

+ "7 7 bracket-level-2" # {

+ "9 9 bracket-level-2" # }

+ "10 10 bracket-level-1" # )

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/brackets/test-data/unclosed-patentheses.zsh b/zsh/.zsh/zsh-syntax/highlighters/brackets/test-data/unclosed-patentheses.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..d3f6560d0e192a0f5d3fe7d2d50b3717304b953d

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/brackets/test-data/unclosed-patentheses.zsh

@@ -0,0 +1,41 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+unsorted=1

+

+ZSH_HIGHLIGHT_STYLES[bracket-level-1]=

+ZSH_HIGHLIGHT_STYLES[bracket-level-2]=

+

+BUFFER='echo ({x}'

+

+expected_region_highlight=(

+ "6 6 bracket-error" # (

+ "7 7 bracket-level-2" # {

+ "9 9 bracket-level-2" # }

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/brackets/test-data/unclosed-patentheses2.zsh b/zsh/.zsh/zsh-syntax/highlighters/brackets/test-data/unclosed-patentheses2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..2c489c3083216d7a5e66b22fa14f1baad96c7cb6

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/brackets/test-data/unclosed-patentheses2.zsh

@@ -0,0 +1,40 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+unsorted=1

+

+ZSH_HIGHLIGHT_STYLES[bracket-level-1]=

+

+BUFFER='echo {x})'

+

+expected_region_highlight=(

+ "6 6 bracket-level-1" # {

+ "8 8 bracket-level-1" # }

+ "9 9 bracket-error" # )

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/cursor/README.md b/zsh/.zsh/zsh-syntax/highlighters/cursor/README.md

new file mode 120000

index 0000000000000000000000000000000000000000..70e0c8c42ad0aa244876c42ed5e6395e39cba4d0

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/cursor/README.md

@@ -0,0 +1 @@

+../../docs/highlighters/cursor.md

\ No newline at end of file

diff --git a/zsh/.zsh/zsh-syntax/highlighters/cursor/cursor-highlighter.zsh b/zsh/.zsh/zsh-syntax/highlighters/cursor/cursor-highlighter.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..81633a3c3bd890f3bcef4c5f6d0ca08718a8cbcb

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/cursor/cursor-highlighter.zsh

@@ -0,0 +1,47 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2010-2011 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+

+# Define default styles.

+: ${ZSH_HIGHLIGHT_STYLES[cursor]:=standout}

+

+# Whether the cursor highlighter should be called or not.

+_zsh_highlight_highlighter_cursor_predicate()

+{

+ # remove cursor highlighting when the line is finished

+ [[ $WIDGET == zle-line-finish ]] || _zsh_highlight_cursor_moved

+}

+

+# Cursor highlighting function.

+_zsh_highlight_highlighter_cursor_paint()

+{

+ [[ $WIDGET == zle-line-finish ]] && return

+

+ _zsh_highlight_add_highlight $CURSOR $(( $CURSOR + 1 )) cursor

+}

diff --git a/zsh/.zsh/zsh-syntax/highlighters/line/README.md b/zsh/.zsh/zsh-syntax/highlighters/line/README.md

new file mode 120000

index 0000000000000000000000000000000000000000..052fe20b5c9001c74ffccba0ad4dc374b0817646

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/line/README.md

@@ -0,0 +1 @@

+../../docs/highlighters/line.md

\ No newline at end of file

diff --git a/zsh/.zsh/zsh-syntax/highlighters/line/line-highlighter.zsh b/zsh/.zsh/zsh-syntax/highlighters/line/line-highlighter.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..f922dc9b2d9f677f864ef01657fd0e057683d094

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/line/line-highlighter.zsh

@@ -0,0 +1,44 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2010-2011 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+

+# Define default styles.

+: ${ZSH_HIGHLIGHT_STYLES[line]:=}

+

+# Whether the root highlighter should be called or not.

+_zsh_highlight_highlighter_line_predicate()

+{

+ _zsh_highlight_buffer_modified

+}

+

+# root highlighting function.

+_zsh_highlight_highlighter_line_paint()

+{

+ _zsh_highlight_add_highlight 0 $#BUFFER line

+}

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/README.md b/zsh/.zsh/zsh-syntax/highlighters/main/README.md

new file mode 120000

index 0000000000000000000000000000000000000000..035473184f87bf8a7210c39cdc807d13937874fd

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/README.md

@@ -0,0 +1 @@

+../../docs/highlighters/main.md

\ No newline at end of file

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/main-highlighter.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/main-highlighter.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..918615798d0547f4219f5b8afaf91841d3456ca1

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/main-highlighter.zsh

@@ -0,0 +1,1842 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2010-2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+

+# Define default styles.

+: ${ZSH_HIGHLIGHT_STYLES[default]:=none}

+: ${ZSH_HIGHLIGHT_STYLES[unknown-token]:=fg=red,bold}

+: ${ZSH_HIGHLIGHT_STYLES[reserved-word]:=fg=yellow}

+: ${ZSH_HIGHLIGHT_STYLES[suffix-alias]:=fg=green,underline}

+: ${ZSH_HIGHLIGHT_STYLES[global-alias]:=fg=cyan}

+: ${ZSH_HIGHLIGHT_STYLES[precommand]:=fg=green,underline}

+: ${ZSH_HIGHLIGHT_STYLES[commandseparator]:=none}

+: ${ZSH_HIGHLIGHT_STYLES[autodirectory]:=fg=green,underline}

+: ${ZSH_HIGHLIGHT_STYLES[path]:=underline}

+: ${ZSH_HIGHLIGHT_STYLES[path_pathseparator]:=}

+: ${ZSH_HIGHLIGHT_STYLES[path_prefix_pathseparator]:=}

+: ${ZSH_HIGHLIGHT_STYLES[globbing]:=fg=blue}

+: ${ZSH_HIGHLIGHT_STYLES[history-expansion]:=fg=blue}

+: ${ZSH_HIGHLIGHT_STYLES[command-substitution]:=none}

+: ${ZSH_HIGHLIGHT_STYLES[command-substitution-delimiter]:=fg=magenta}

+: ${ZSH_HIGHLIGHT_STYLES[process-substitution]:=none}

+: ${ZSH_HIGHLIGHT_STYLES[process-substitution-delimiter]:=fg=magenta}

+: ${ZSH_HIGHLIGHT_STYLES[single-hyphen-option]:=none}

+: ${ZSH_HIGHLIGHT_STYLES[double-hyphen-option]:=none}

+: ${ZSH_HIGHLIGHT_STYLES[back-quoted-argument]:=none}

+: ${ZSH_HIGHLIGHT_STYLES[back-quoted-argument-delimiter]:=fg=magenta}

+: ${ZSH_HIGHLIGHT_STYLES[single-quoted-argument]:=fg=yellow}

+: ${ZSH_HIGHLIGHT_STYLES[double-quoted-argument]:=fg=yellow}

+: ${ZSH_HIGHLIGHT_STYLES[dollar-quoted-argument]:=fg=yellow}

+: ${ZSH_HIGHLIGHT_STYLES[rc-quote]:=fg=cyan}

+: ${ZSH_HIGHLIGHT_STYLES[dollar-double-quoted-argument]:=fg=cyan}

+: ${ZSH_HIGHLIGHT_STYLES[back-double-quoted-argument]:=fg=cyan}

+: ${ZSH_HIGHLIGHT_STYLES[back-dollar-quoted-argument]:=fg=cyan}

+: ${ZSH_HIGHLIGHT_STYLES[assign]:=none}

+: ${ZSH_HIGHLIGHT_STYLES[redirection]:=fg=yellow}

+: ${ZSH_HIGHLIGHT_STYLES[comment]:=fg=black,bold}

+: ${ZSH_HIGHLIGHT_STYLES[named-fd]:=none}

+: ${ZSH_HIGHLIGHT_STYLES[numeric-fd]:=none}

+: ${ZSH_HIGHLIGHT_STYLES[arg0]:=fg=green}

+

+# Whether the highlighter should be called or not.

+_zsh_highlight_highlighter_main_predicate()

+{

+ # may need to remove path_prefix highlighting when the line ends

+ [[ $WIDGET == zle-line-finish ]] || _zsh_highlight_buffer_modified

+}

+

+# Helper to deal with tokens crossing line boundaries.

+_zsh_highlight_main_add_region_highlight() {

+ integer start=$1 end=$2

+ shift 2

+

+ if (( $#in_alias )); then

+ [[ $1 == unknown-token ]] && alias_style=unknown-token

+ return

+ fi

+ if (( in_param )); then

+ if [[ $1 == unknown-token ]]; then

+ param_style=unknown-token

+ fi

+ if [[ -n $param_style ]]; then

+ return

+ fi

+ param_style=$1

+ return

+ fi

+

+ # The calculation was relative to $buf but region_highlight is relative to $BUFFER.

+ (( start += buf_offset ))

+ (( end += buf_offset ))

+

+ list_highlights+=($start $end $1)

+}

+

+_zsh_highlight_main_add_many_region_highlights() {

+ for 1 2 3; do

+ _zsh_highlight_main_add_region_highlight $1 $2 $3

+ done

+}

+

+_zsh_highlight_main_calculate_fallback() {

+ local -A fallback_of; fallback_of=(

+ alias arg0

+ suffix-alias arg0

+ global-alias dollar-double-quoted-argument

+ builtin arg0

+ function arg0

+ command arg0

+ precommand arg0

+ hashed-command arg0

+ autodirectory arg0

+ arg0_\* arg0

+

+ # TODO: Maybe these? —

+ # named-fd file-descriptor

+ # numeric-fd file-descriptor

+

+ path_prefix path

+ # The path separator fallback won't ever be used, due to the optimisation

+ # in _zsh_highlight_main_highlighter_highlight_path_separators().

+ path_pathseparator path

+ path_prefix_pathseparator path_prefix

+

+ single-quoted-argument{-unclosed,}

+ double-quoted-argument{-unclosed,}

+ dollar-quoted-argument{-unclosed,}

+ back-quoted-argument{-unclosed,}

+

+ command-substitution{-quoted,,-unquoted,}

+ command-substitution-delimiter{-quoted,,-unquoted,}

+

+ command-substitution{-delimiter,}

+ process-substitution{-delimiter,}

+ back-quoted-argument{-delimiter,}

+ )

+ local needle=$1 value

+ reply=($1)

+ while [[ -n ${value::=$fallback_of[(k)$needle]} ]]; do

+ unset "fallback_of[$needle]" # paranoia against infinite loops

+ reply+=($value)

+ needle=$value

+ done

+}

+

+# Get the type of a command.

+#

+# Uses the zsh/parameter module if available to avoid forks, and a

+# wrapper around 'type -w' as fallback.

+#

+# If $2 is 0, do not consider aliases.

+#

+# The result will be stored in REPLY.

+_zsh_highlight_main__type() {

+ integer -r aliases_allowed=${2-1}

+ # We won't cache replies of anything that exists as an alias at all, to

+ # ensure the cached value is correct regardless of $aliases_allowed.

+ #

+ # ### We probably _should_ cache them in a cache that's keyed on the value of

+ # ### $aliases_allowed, on the assumption that aliases are the common case.

+ integer may_cache=1

+

+ # Cache lookup

+ if (( $+_zsh_highlight_main__command_type_cache )); then

+ REPLY=$_zsh_highlight_main__command_type_cache[(e)$1]

+ if [[ -n "$REPLY" ]]; then

+ return

+ fi

+ fi

+

+ # Main logic

+ if (( $#options_to_set )); then

+ setopt localoptions $options_to_set;

+ fi

+ unset REPLY

+ if zmodload -e zsh/parameter; then

+ if (( $+aliases[(e)$1] )); then

+ may_cache=0

+ fi

+ if (( ${+galiases[(e)$1]} )) && (( aliases_allowed )); then

+ REPLY='global alias'

+ elif (( $+aliases[(e)$1] )) && (( aliases_allowed )); then

+ REPLY=alias

+ elif [[ $1 == *.* && -n ${1%.*} ]] && (( $+saliases[(e)${1##*.}] )); then

+ REPLY='suffix alias'

+ elif (( $reswords[(Ie)$1] )); then

+ REPLY=reserved

+ elif (( $+functions[(e)$1] )); then

+ REPLY=function

+ elif (( $+builtins[(e)$1] )); then

+ REPLY=builtin

+ elif (( $+commands[(e)$1] )); then

+ REPLY=command

+ # None of the special hashes had a match, so fall back to 'type -w', for

+ # forward compatibility with future versions of zsh that may add new command

+ # types.

+ #

+ # zsh 5.2 and older have a bug whereby running 'type -w ./sudo' implicitly

+ # runs 'hash ./sudo=/usr/local/bin/./sudo' (assuming /usr/local/bin/sudo

+ # exists and is in $PATH). Avoid triggering the bug, at the expense of

+ # falling through to the $() below, incurring a fork. (Issue #354.)

+ #

+ # The first disjunct mimics the isrelative() C call from the zsh bug.

+ elif { [[ $1 != */* ]] || is-at-least 5.3 } &&

+ # Add a subshell to avoid a zsh upstream bug; see issue #606.

+ # ### Remove the subshell when we stop supporting zsh 5.7.1 (I assume 5.8 will have the bugfix).

+ ! (builtin type -w -- "$1") >/dev/null 2>&1; then

+ REPLY=none

+ fi

+ fi

+ if ! (( $+REPLY )); then

+ # zsh/parameter not available or had no matches.

+ #

+ # Note that 'type -w' will run 'rehash' implicitly.

+ #

+ # We 'unalias' in a subshell, so the parent shell is not affected.

+ #

+ # The colon command is there just to avoid a command substitution that

+ # starts with an arithmetic expression [«((…))» as the first thing inside

+ # «$(…)»], which is area that has had some parsing bugs before 5.6

+ # (approximately).

+ REPLY="${$(:; (( aliases_allowed )) || unalias -- "$1" 2>/dev/null; LC_ALL=C builtin type -w -- "$1" 2>/dev/null)##*: }"

+ if [[ $REPLY == 'alias' ]]; then

+ may_cache=0

+ fi

+ fi

+

+ # Cache population

+ if (( may_cache )) && (( $+_zsh_highlight_main__command_type_cache )); then

+ _zsh_highlight_main__command_type_cache[(e)$1]=$REPLY

+ fi

+ [[ -n $REPLY ]]

+ return $?

+}

+

+# Checks whether $1 is something that can be run.

+#

+# Return 0 if runnable, 1 if not runnable, 2 if trouble.

+_zsh_highlight_main__is_runnable() {

+ if _zsh_highlight_main__type "$1"; then

+ [[ $REPLY != none ]]

+ else

+ return 2

+ fi

+}

+

+# Check whether the first argument is a redirection operator token.

+# Report result via the exit code.

+_zsh_highlight_main__is_redirection() {

+ # A redirection operator token:

+ # - starts with an optional single-digit number;

+ # - then, has a '<' or '>' character;

+ # - is not a process substitution [<(...) or >(...)].

+ # - is not a numeric glob <->

+ [[ $1 == (<0-9>|)(\<|\>)* ]] && [[ $1 != (\<|\>) \x28'* ]] && [[ $1 != *'<'*'-'*'>'* ]]

+}

+

+# Resolve alias.

+#

+# Takes a single argument.

+#

+# The result will be stored in REPLY.

+_zsh_highlight_main__resolve_alias() {

+ if zmodload -e zsh/parameter; then

+ REPLY=${aliases[$arg]}

+ else

+ REPLY="${"$(alias -- $arg)"#*=}"

+ fi

+}

+

+# Return true iff $1 is a global alias

+_zsh_highlight_main__is_global_alias() {

+ if zmodload -e zsh/parameter; then

+ (( ${+galiases[$arg]} ))

+ elif [[ $arg == '='* ]]; then

+ # avoid running into «alias -L '=foo'» erroring out with 'bad assignment'

+ return 1

+ else

+ alias -L -g -- "$1" >/dev/null

+ fi

+}

+

+# Check that the top of $braces_stack has the expected value. If it does, set

+# the style according to $2; otherwise, set style=unknown-token.

+#

+# $1: character expected to be at the top of $braces_stack

+# $2: optional assignment to style it if matches

+# return value is 0 if there is a match else 1

+_zsh_highlight_main__stack_pop() {

+ if [[ $braces_stack[1] == $1 ]]; then

+ braces_stack=${braces_stack:1}

+ if (( $+2 )); then

+ style=$2

+ fi

+ return 0

+ else

+ style=unknown-token

+ return 1

+ fi

+}

+

+# Main syntax highlighting function.

+_zsh_highlight_highlighter_main_paint()

+{

+ setopt localoptions extendedglob

+

+ # At the PS3 prompt and in vared, highlight nothing.

+ #

+ # (We can't check this in _zsh_highlight_highlighter_main_predicate because

+ # if the predicate returns false, the previous value of region_highlight

+ # would be reused.)

+ if [[ $CONTEXT == (select|vared) ]]; then

+ return

+ fi

+

+ typeset -a ZSH_HIGHLIGHT_TOKENS_COMMANDSEPARATOR

+ typeset -a ZSH_HIGHLIGHT_TOKENS_CONTROL_FLOW

+ local -a options_to_set reply # used in callees

+ local REPLY

+

+ # $flags_with_argument is a set of letters, corresponding to the option letters

+ # that would be followed by a colon in a getopts specification.

+ local flags_with_argument

+ # $flags_sans_argument is a set of letters, corresponding to the option letters

+ # that wouldn't be followed by a colon in a getopts specification.

+ local flags_sans_argument

+ # $flags_solo is a set of letters, corresponding to option letters that, if

+ # present, mean the precommand will not be acting as a precommand, i.e., will

+ # not be followed by a :start: word.

+ local flags_solo

+ # $precommand_options maps precommand name to values of $flags_with_argument,

+ # $flags_sans_argument, and flags_solo for that precommand, joined by a

+ # colon. (The value is NOT a getopt(3) spec, although it resembles one.)

+ #

+ # Currently, setting $flags_sans_argument is only important for commands that

+ # have a non-empty $flags_with_argument; see test-data/precommand4.zsh.

+ local -A precommand_options

+ precommand_options=(

+ # Precommand modifiers as of zsh 5.6.2 cf. zshmisc(1).

+ '-' ''

+ 'builtin' ''

+ 'command' :pvV

+ 'exec' a:cl

+ 'noglob' ''

+ # 'time' and 'nocorrect' shouldn't be added here; they're reserved words, not precommands.

+

+ 'doas' aCu:Lns # as of OpenBSD's doas(1) dated September 4, 2016

+ 'nice' n: # as of current POSIX spec

+ 'pkexec' '' # doesn't take short options; immune to #121 because it's usually not passed --option flags

+ # Not listed: -h, which has two different meanings.

+ 'sudo' Cgprtu:AEHPSbilns:eKkVv # as of sudo 1.8.21p2

+ 'stdbuf' ioe:

+ 'eatmydata' ''

+ 'catchsegv' ''

+ 'nohup' ''

+ 'setsid' :wc

+ 'env' u:i

+ 'ionice' cn:t:pPu # util-linux 2.33.1-0.1

+ 'strace' IbeaosXPpEuOS:ACdfhikqrtTvVxyDc # strace 4.26-0.2

+

+ # As of OpenSSH 8.1p1

+ 'ssh-agent' aEPt:csDd:k

+ # suckless-tools v44

+ # Argumentless flags that can't be followed by a command: -v

+ 'tabbed' gnprtTuU:cdfhs

+

+ # moreutils 0.62-1

+ 'chronic' :ev

+ 'ifne' :n

+

+ )

+ # Commands that would need to skip one positional argument:

+ # flock

+ # ssh

+

+ if [[ $zsyh_user_options[ignorebraces] == on || ${zsyh_user_options[ignoreclosebraces]:-off} == on ]]; then

+ local right_brace_is_recognised_everywhere=false

+ else

+ local right_brace_is_recognised_everywhere=true

+ fi

+

+ if [[ $zsyh_user_options[pathdirs] == on ]]; then

+ options_to_set+=( PATH_DIRS )

+ fi

+

+ ZSH_HIGHLIGHT_TOKENS_COMMANDSEPARATOR=(

+ '|' '||' ';' '&' '&&'

+ \n' # ${(z)} returns ';' but we convert it to \n'

+ '|&'

+ '&!' '&|'

+ # ### 'case' syntax, but followed by a pattern, not by a command

+ # ';;' ';&' ';|'

+ )

+

+ # Tokens that, at (naively-determined) "command position", are followed by

+ # a de jure command position. All of these are reserved words.

+ ZSH_HIGHLIGHT_TOKENS_CONTROL_FLOW=(

+ \x7b' # block

+ \x28' # subshell

+ '()' # anonymous function

+ 'while'

+ 'until'

+ 'if'

+ 'then'

+ 'elif'

+ 'else'

+ 'do'

+ 'time'

+ 'coproc'

+ '!' # reserved word; unrelated to $histchars[1]

+ )

+

+ if (( $+X_ZSH_HIGHLIGHT_DIRS_BLACKLIST )); then

+ print >&2 'zsh-syntax-highlighting: X_ZSH_HIGHLIGHT_DIRS_BLACKLIST is deprecated. Please use ZSH_HIGHLIGHT_DIRS_BLACKLIST.'

+ ZSH_HIGHLIGHT_DIRS_BLACKLIST=($X_ZSH_HIGHLIGHT_DIRS_BLACKLIST)

+ unset X_ZSH_HIGHLIGHT_DIRS_BLACKLIST

+ fi

+

+ _zsh_highlight_main_highlighter_highlight_list -$#PREBUFFER '' 1 "$PREBUFFER$BUFFER"

+

+ # end is a reserved word

+ local start end_ style

+ for start end_ style in $reply; do

+ (( start >= end_ )) && { print -r -- >&2 "zsh-syntax-highlighting: BUG: _zsh_highlight_highlighter_main_paint: start($start) >= end($end_)"; return }

+ (( end_ <= 0 )) && continue

+ (( start < 0 )) && start=0 # having start<0 is normal with e.g. multiline strings

+ _zsh_highlight_main_calculate_fallback $style

+ _zsh_highlight_add_highlight $start $end_ $reply

+ done

+}

+

+# Try to expand $1, if it's possible to do so safely.

+#

+# Uses two parameters from the caller: $parameter_name_pattern and $res.

+#

+# If expansion was done, set $reply to the expansion and return true.

+# Otherwise, return false.

+_zsh_highlight_main_highlighter__try_expand_parameter()

+{

+ local arg="$1"

+ unset reply

+ {

+ # ### For now, expand just '$foo' or '${foo}', possibly with braces, but with

+ # ### no other features of the parameter expansion syntax. (No ${(x)foo},

+ # ### no ${foo[x]}, no ${foo:-x}.)

+ {

+ local -a match mbegin mend

+ local MATCH; integer MBEGIN MEND

+ local parameter_name

+ local -a words

+ if [[ $arg[1] != ' ]]; then

+ return 1

+ fi

+ if [[ ${arg[2]} == '{' ]] && [[ ${arg[-1]} == '}' ]]; then

+ parameter_name=${${arg:2}%?}

+ else

+ parameter_name=${arg:1}

+ fi

+ if [[ $res == none ]] &&

+ [[ ${parameter_name} =~ ^${~parameter_name_pattern}$ ]] &&

+ [[ ${(tP)MATCH} != *special* ]]

+ then

+ # Set $arg and update $res.

+ case ${(tP)MATCH} in

+ (*array*|*assoc*)

+ words=( ${(P)MATCH} )

+ ;;

+ ("")

+ # not set

+ words=( )

+ ;;

+ (*)

+ # scalar, presumably

+ words=( ${(P)MATCH} )

+ ;;

+ esac

+ reply=( "${words[@]}" )

+ else

+ return 1

+ fi

+ }

+ }

+}

+

+# $1 is the offset of $4 from the parent buffer. Added to the returned highlights.

+# $2 is the initial braces_stack (for a closing paren).

+# $3 is 1 if $4 contains the end of $BUFFER, else 0.

+# $4 is the buffer to highlight.

+# Returns:

+# $REPLY: $buf[REPLY] is the last character parsed.

+# $reply is an array of region_highlight additions.

+# exit code is 0 if the braces_stack is empty, 1 otherwise.

+_zsh_highlight_main_highlighter_highlight_list()

+{

+ integer start_pos end_pos=0 buf_offset=$1 has_end=$3

+ # alias_style is the style to apply to an alias once $#in_alias == 0

+ # Usually 'alias' but set to 'unknown-token' if any word expanded from

+ # the alias would be highlighted as unknown-token

+ # param_style is analogous for parameter expansions

+ local alias_style param_style last_arg arg buf=$4 highlight_glob=true saw_assignment=false style

+ local in_array_assignment=false # true between 'a=(' and the matching ')'

+ # in_alias is an array of integers with each element equal to the number

+ # of shifts needed until arg=args[1] pops an arg from the next level up

+ # alias or from BUFFER.

+ # in_param is analogous for parameter expansions

+ integer in_param=0 len=$#buf

+ local -a in_alias match mbegin mend list_highlights

+ # seen_alias is a map of aliases already seen to avoid loops like alias a=b b=a

+ local -A seen_alias

+ # Pattern for parameter names

+ readonly parameter_name_pattern='([A-Za-z_][A-Za-z0-9_]*|[0-9]+)'

+ list_highlights=()

+

+ # "R" for round

+ # "Q" for square

+ # "Y" for curly

+ # "T" for [[ ]]

+ # "S" for $( ), =( ), <( ), >( )

+ # "D" for do/done

+ # "$" for 'end' (matches 'foreach' always; also used with cshjunkiequotes in repeat/while)

+ # "?" for 'if'/'fi'; also checked by 'elif'/'else'

+ # ":" for 'then'

+ local braces_stack=$2

+

+ # State machine

+ #

+ # The states are:

+ # - :start: Command word

+ # - :start_of_pipeline: Start of a 'pipeline' as defined in zshmisc(1).

+ # Only valid when :start: is present

+ # - :sudo_opt: A leading-dash option to a precommand, whether it takes an

+ # argument or not. (Example: sudo's "-u" or "-i".)

+ # - :sudo_arg: The argument to a precommand's leading-dash option,

+ # when given as a separate word; i.e., "foo" in "-u foo" (two

+ # words) but not in "-ufoo" (one word).

+ # Note: :sudo_opt: and :sudo_arg: are used for any precommand

+ # declared in ${precommand_options}, not just for sudo(8).

+ # The naming is historical.

+ # - :regular: "Not a command word", and command delimiters are permitted.

+ # Mainly used to detect premature termination of commands.

+ # - :always: The word 'always' in the «{ foo } always { bar }» syntax.

+ #

+ # When the kind of a word is not yet known, $this_word / $next_word may contain

+ # multiple states. For example, after "sudo -i", the next word may be either

+ # another --flag or a command name, hence the state would include both ':start:'

+ # and ':sudo_opt:'.

+ #

+ # The tokens are always added with both leading and trailing colons to serve as

+ # word delimiters (an improvised array); [[ $x == *':foo:'* ]] and x=${x//:foo:/}

+ # will DTRT regardless of how many elements or repetitions $x has.

+ #

+ # Handling of redirections: upon seeing a redirection token, we must stall

+ # the current state --- that is, the value of $this_word --- for two iterations

+ # (one for the redirection operator, one for the word following it representing

+ # the redirection target). Therefore, we set $in_redirection to 2 upon seeing a

+ # redirection operator, decrement it each iteration, and stall the current state

+ # when it is non-zero. Thus, upon reaching the next word (the one that follows

+ # the redirection operator and target), $this_word will still contain values

+ # appropriate for the word immediately following the word that preceded the

+ # redirection operator.

+ #

+ # The "the previous word was a redirection operator" state is not communicated

+ # to the next iteration via $next_word/$this_word as usual, but via

+ # $in_redirection. The value of $next_word from the iteration that processed

+ # the operator is discarded.

+ #

+ # $in_redirection is currently used for:

+ # - comments

+ # - aliases

+ # - redirections

+ # - parameter elision in command position

+ # - 'repeat' loops

+ #

+ local this_word next_word=':start::start_of_pipeline:'

+ integer in_redirection

+ # Processing buffer

+ local proc_buf="$buf"

+ local -a args

+ if [[ $zsyh_user_options[interactivecomments] == on ]]; then

+ args=(${(zZ+c+)buf})

+ else

+ args=(${(z)buf})

+ fi

+

+ # Special case: $(<*) isn't globbing.

+ if [[ $braces_stack == 'S' ]] && (( $+args[3] && ! $+args[4] )) && [[ $args[3] == \x29' ]] &&

+ [[ $args[1] == *'<'* ]] && _zsh_highlight_main__is_redirection $args[1]; then

+ highlight_glob=false

+ fi

+

+ while (( $#args )); do

+ last_arg=$arg

+ arg=$args[1]

+ shift args

+ if (( $#in_alias )); then

+ (( in_alias[1]-- ))

+ # Remove leading 0 entries

+ in_alias=($in_alias[$in_alias[(i)<1->],-1])

+ if (( $#in_alias == 0 )); then

+ seen_alias=()

+ # start_pos and end_pos are of the alias (previous $arg) here

+ _zsh_highlight_main_add_region_highlight $start_pos $end_pos $alias_style

+ else

+ # We can't unset keys that contain special characters (] \ and some others).

+ # More details: https://www.zsh.org/workers/43269

+ (){

+ local alias_name

+ for alias_name in ${(k)seen_alias[(R)<$#in_alias->]}; do

+ seen_alias=("${(@kv)seen_alias[(I)^$alias_name]}")

+ done

+ }

+ fi

+ fi

+ if (( in_param )); then

+ (( in_param-- ))

+ if (( in_param == 0 )); then

+ # start_pos and end_pos are of the '$foo' word (previous $arg) here

+ _zsh_highlight_main_add_region_highlight $start_pos $end_pos $param_style

+ param_style=""

+ fi

+ fi

+

+ # Initialize this_word and next_word.

+ if (( in_redirection == 0 )); then

+ this_word=$next_word

+ next_word=':regular:'

+ elif (( !in_param )); then

+ # Stall $next_word.

+ (( --in_redirection ))

+ fi

+

+ # Initialize per-"simple command" [zshmisc(1)] variables:

+ #

+ # $style how to highlight $arg

+ # $in_array_assignment boolean flag for "between '(' and ')' of array assignment"

+ # $highlight_glob boolean flag for "'noglob' is in effect"

+ # $saw_assignment boolean flag for "was preceded by an assignment"

+ #

+ style=unknown-token

+ if [[ $this_word == *':start:'* ]]; then

+ in_array_assignment=false

+ if [[ $arg == 'noglob' ]]; then

+ highlight_glob=false

+ fi

+ fi

+

+ if (( $#in_alias == 0 && in_param == 0 )); then

+ # Compute the new $start_pos and $end_pos, skipping over whitespace in $buf.

+ [[ "$proc_buf" = (#b)(#s)(([ \t']|[\\] \n')#)(?|)* ]]

+ # The first, outer parenthesis

+ integer offset="${#match[1]}"

+ (( start_pos = end_pos + offset ))

+ (( end_pos = start_pos + $#arg ))

+

+ # The zsh lexer considers ';' and newline to be the same token, so

+ # ${(z)} converts all newlines to semicolons. Convert them back here to

+ # make later processing simpler.

+ [[ $arg == ';' && ${match[3]} == \n' ]] && arg= \n'

+

+ # Compute the new $proc_buf. We advance it

+ # (chop off characters from the beginning)

+ # beyond what end_pos points to, by skipping

+ # as many characters as end_pos was advanced.

+ #

+ # end_pos was advanced by $offset (via start_pos)

+ # and by $#arg. Note the `start_pos=$end_pos`

+ # below.

+ #

+ # As for the [,len]. We could use [,len-start_pos+offset]

+ # here, but to make it easier on eyes, we use len and

+ # rely on the fact that Zsh simply handles that. The

+ # length of proc_buf is len-start_pos+offset because

+ # we're chopping it to match current start_pos, so its

+ # length matches the previous value of start_pos.

+ #

+ # Why [,-1] is slower than [,length] isn't clear.

+ proc_buf="${proc_buf[offset + $#arg + 1,len]}"

+ fi

+

+ # Handle the INTERACTIVE_COMMENTS option.

+ #

+ # We use the (Z+c+) flag so the entire comment is presented as one token in $arg.

+ if [[ $zsyh_user_options[interactivecomments] == on && $arg[1] == $histchars[3] ]]; then

+ if [[ $this_word == *(':regular:'|':start:')* ]]; then

+ style=comment

+ else

+ style=unknown-token # prematurely terminated

+ fi

+ _zsh_highlight_main_add_region_highlight $start_pos $end_pos $style

+ # Stall this arg

+ in_redirection=1

+ continue

+ fi

+

+ if [[ $this_word == *':start:'* ]] && ! (( in_redirection )); then

+ # Expand aliases.

+ # An alias is ineligible for expansion while it's being expanded (see #652/#653).

+ _zsh_highlight_main__type "$arg" "$(( ! ${+seen_alias[$arg]} ))"

+ local res="$REPLY"

+ if [[ $res == "alias" ]]; then

+ # Mark insane aliases as unknown-token (cf. #263).

+ if [[ $arg == ?*=* ]]; then

+ _zsh_highlight_main_add_region_highlight $start_pos $end_pos unknown-token

+ continue

+ fi

+ seen_alias[$arg]=$#in_alias

+ _zsh_highlight_main__resolve_alias $arg

+ local -a alias_args

+ # Elision is desired in case alias x=''

+ if [[ $zsyh_user_options[interactivecomments] == on ]]; then

+ alias_args=(${(zZ+c+)REPLY})

+ else

+ alias_args=(${(z)REPLY})

+ fi

+ args=( $alias_args $args )

+ if (( $#in_alias == 0 )); then

+ alias_style=alias

+ else

+ # Transfer the count of this arg to the new element about to be appended.

+ (( in_alias[1]-- ))

+ fi

+ # Add one because we will in_alias[1]-- on the next loop iteration so

+ # this iteration should be considered in in_alias as well

+ in_alias=( $(($#alias_args + 1)) $in_alias )

+ (( in_redirection++ )) # Stall this arg

+ continue

+ else

+ _zsh_highlight_main_highlighter_expand_path $arg

+ _zsh_highlight_main__type "$REPLY" 0

+ res="$REPLY"

+ fi

+ fi

+

+ # Analyse the current word.

+ if _zsh_highlight_main__is_redirection $arg ; then

+ if (( in_redirection == 1 )); then

+ # Two consecuive redirection operators is an error.

+ _zsh_highlight_main_add_region_highlight $start_pos $end_pos unknown-token

+ else

+ in_redirection=2

+ _zsh_highlight_main_add_region_highlight $start_pos $end_pos redirection

+ fi

+ continue

+ elif [[ $arg == '{'${~parameter_name_pattern}'}' ]] && _zsh_highlight_main__is_redirection $args[1]; then

+ # named file descriptor: {foo}>&2

+ in_redirection=3

+ _zsh_highlight_main_add_region_highlight $start_pos $end_pos named-fd

+ continue

+ fi

+

+ # Expand parameters.

+ if (( ! in_param )) && _zsh_highlight_main_highlighter__try_expand_parameter "$arg"; then

+ # That's not entirely correct --- if the parameter's value happens to be a reserved

+ # word, the parameter expansion will be highlighted as a reserved word --- but that

+ # incorrectness is outweighed by the usability improvement of permitting the use of

+ # parameters that refer to commands, functions, and builtins.

+ () {

+ local -a words; words=( "${reply[@]}" )

+ if (( $#words == 0 )) && (( ! in_redirection )); then

+ # Parameter elision is happening

+ (( ++in_redirection ))

+ _zsh_highlight_main_add_region_highlight $start_pos $end_pos comment

+ continue

+ else

+ (( in_param = 1 + $#words ))

+ args=( $words $args )

+ arg=$args[1]

+ _zsh_highlight_main__type "$arg" 0

+ res=$REPLY

+ fi

+ }

+ fi

+

+ # Parse the sudo command line

+ if (( ! in_redirection )); then

+ if [[ $this_word == *':sudo_opt:'* ]]; then

+ if [[ -n $flags_with_argument ]] &&

+ {

+ # Trenary

+ if [[ -n $flags_sans_argument ]]

+ then [[ $arg == '-'[$flags_sans_argument]#[$flags_with_argument] ]]

+ else [[ $arg == '-'[$flags_with_argument] ]]

+ fi

+ } then

+ # Flag that requires an argument

+ this_word=${this_word//:start:/}

+ next_word=':sudo_arg:'

+ elif [[ -n $flags_with_argument ]] &&

+ {

+ # Trenary

+ if [[ -n $flags_sans_argument ]]

+ then [[ $arg == '-'[$flags_sans_argument]#[$flags_with_argument]* ]]

+ else [[ $arg == '-'[$flags_with_argument]* ]]

+ fi

+ } then

+ # Argument attached in the same word

+ this_word=${this_word//:start:/}

+ next_word+=':start:'

+ next_word+=':sudo_opt:'

+ elif [[ -n $flags_sans_argument ]] &&

+ [[ $arg == '-'[$flags_sans_argument]# ]]; then

+ # Flag that requires no argument

+ this_word=':sudo_opt:'

+ next_word+=':start:'

+ next_word+=':sudo_opt:'

+ elif [[ -n $flags_solo ]] &&

+ {

+ # Trenary

+ if [[ -n $flags_sans_argument ]]

+ then [[ $arg == '-'[$flags_sans_argument]#[$flags_solo]* ]]

+ else [[ $arg == '-'[$flags_solo]* ]]

+ fi

+ } then

+ # Solo flags

+ this_word=':sudo_opt:'

+ next_word=':regular:' # no :start:, nor :sudo_opt: since we don't know whether the solo flag takes an argument or not

+ elif [[ $arg == '-'* ]]; then

+ # Unknown flag. We don't know whether it takes an argument or not,

+ # so modify $next_word as we do for flags that require no argument.

+ # With that behaviour, if the flag in fact takes no argument we'll

+ # highlight the inner command word correctly, and if it does take an

+ # argument we'll highlight the command word correctly if the argument

+ # was given in the same shell word as the flag (as in '-uphy1729' or

+ # '--user=phy1729' without spaces).

+ this_word=':sudo_opt:'

+ next_word+=':start:'

+ next_word+=':sudo_opt:'

+ else

+ # Not an option flag; nothing to do. (If the command line is

+ # syntactically valid, ${this_word//:sudo_opt:/} should be

+ # non-empty now.)

+ this_word=${this_word//:sudo_opt:/}

+ fi

+ elif [[ $this_word == *':sudo_arg:'* ]]; then

+ next_word+=':sudo_opt:'

+ next_word+=':start:'

+ fi

+ fi

+

+ # The Great Fork: is this a command word? Is this a non-command word?

+ if [[ -n ${(M)ZSH_HIGHLIGHT_TOKENS_COMMANDSEPARATOR:#"$arg"} ]] &&

+ [[ $braces_stack != *T* || $arg != ('||'|'&&') ]]; then

+

+ # First, determine the style of the command separator itself.

+ if _zsh_highlight_main__stack_pop T || _zsh_highlight_main__stack_pop Q; then

+ # Missing closing square bracket(s)

+ style=unknown-token

+ elif $in_array_assignment; then

+ case $arg in

+ # Literal newlines are just fine.

+ ( \n') style=commandseparator;;

+ # Semicolons are parsed the same way as literal newlines. Nevertheless,

+ # highlight them as errors since they're probably unintended. Compare

+ # issue #691.

+ (';') style=unknown-token;;

+ # Other command separators aren't allowed.

+ (*) style=unknown-token;;

+ esac

+ elif [[ $this_word == *':regular:'* ]]; then

+ style=commandseparator

+ elif [[ $this_word == *':start:'* ]] && [[ $arg == \n' ]]; then

+ style=commandseparator

+ elif [[ $this_word == *':start:'* ]] && [[ $arg == ';' ]] && (( $#in_alias )); then

+ style=commandseparator

+ else

+ # Empty commands (semicolon follows nothing) are valid syntax.

+ # However, in interactive use they are likely to be erroneous;

+ # therefore, we highlight them as errors.

+ #

+ # Alias definitions are exempted from this check to allow multiline aliases

+ # with explicit (redundant) semicolons: «alias foo= bar;\nbaz'» (issue #677).

+ #

+ # See also #691 about possibly changing the style used here.

+ style=unknown-token

+ fi

+

+ # Second, determine the style of next_word.

+ if [[ $arg == \n' ]] && $in_array_assignment; then

+ # literal newline inside an array assignment

+ next_word=':regular:'

+ elif [[ $arg == ';' ]] && $in_array_assignment; then

+ # literal semicolon inside an array assignment

+ next_word=':regular:'

+ else

+ next_word=':start:'

+ highlight_glob=true

+ saw_assignment=false

+ (){

+ local alias_name

+ for alias_name in ${(k)seen_alias[(R)<$#in_alias->]}; do

+ # We can't unset keys that contain special characters (] \ and some others).

+ # More details: https://www.zsh.org/workers/43269

+ seen_alias=("${(@kv)seen_alias[(I)^$alias_name]}")

+ done

+ }

+ if [[ $arg != '|' && $arg != '|&' ]]; then

+ next_word+=':start_of_pipeline:'

+ fi

+ fi

+

+ elif ! (( in_redirection)) && [[ $this_word == *':always:'* && $arg == 'always' ]]; then

+ # try-always construct

+ style=reserved-word # de facto a reserved word, although not de jure

+ highlight_glob=true

+ saw_assignment=false

+ next_word=':start::start_of_pipeline:' # only left brace is allowed, apparently

+ elif ! (( in_redirection)) && [[ $this_word == *':start:'* ]]; then # $arg is the command word

+ if (( ${+precommand_options[$arg]} )) && _zsh_highlight_main__is_runnable $arg; then

+ style=precommand

+ () {

+ set -- "${(@s.:.)precommand_options[$arg]}"

+ flags_with_argument=$1

+ flags_sans_argument=$2

+ flags_solo=$3

+ }

+ next_word=${next_word//:regular:/}

+ next_word+=':sudo_opt:'

+ next_word+=':start:'

+ if [[ $arg == 'exec' || $arg == 'env' ]]; then

+ # To allow "exec 2>&1;" and "env | grep" where there's no command word

+ next_word+=':regular:'

+ fi

+ else

+ case $res in

+ (reserved) # reserved word

+ style=reserved-word

+ # Match braces and handle special cases.

+ case $arg in

+ (time|nocorrect)

+ next_word=${next_word//:regular:/}

+ next_word+=':start:'

+ ;;

+ ( \x7b')

+ braces_stack='Y'"$braces_stack"

+ ;;

+ ( \x7d')

+ # We're at command word, so no need to check $right_brace_is_recognised_everywhere

+ _zsh_highlight_main__stack_pop 'Y' reserved-word

+ if [[ $style == reserved-word ]]; then

+ next_word+=':always:'

+ fi

+ ;;

+ ( \x5b\x5b')

+ braces_stack='T'"$braces_stack"

+ ;;

+ ('do')

+ braces_stack='D'"$braces_stack"

+ ;;

+ ('done')

+ _zsh_highlight_main__stack_pop 'D' reserved-word

+ ;;

+ ('if')

+ braces_stack=':?'"$braces_stack"

+ ;;

+ ('then')

+ _zsh_highlight_main__stack_pop ':' reserved-word

+ ;;

+ ('elif')

+ if [[ ${braces_stack[1]} == '?' ]]; then

+ braces_stack=':'"$braces_stack"

+ else

+ style=unknown-token

+ fi

+ ;;

+ ('else')

+ if [[ ${braces_stack[1]} == '?' ]]; then

+ :

+ else

+ style=unknown-token

+ fi

+ ;;

+ ('fi')

+ _zsh_highlight_main__stack_pop '?'

+ ;;

+ ('foreach')

+ braces_stack=' "$braces_stack"

+ ;;

+ ('end')

+ _zsh_highlight_main__stack_pop ' reserved-word

+ ;;

+ ('repeat')

+ # skip the repeat-count word

+ in_redirection=2

+ # The redirection mechanism assumes $this_word describes the word

+ # following the redirection. Make it so.

+ #

+ # That word can be a command word with shortloops (`repeat 2 ls`)

+ # or a command separator (`repeat 2; ls` or `repeat 2; do ls; done`).

+ #

+ # The repeat-count word will be handled like a redirection target.

+ this_word=':start::regular:'

+ ;;

+ ('!')

+ if [[ $this_word != *':start_of_pipeline:'* ]]; then

+ style=unknown-token

+ else

+ # '!' reserved word at start of pipeline; style already set above

+ fi

+ ;;

+ esac

+ if $saw_assignment && [[ $style != unknown-token ]]; then

+ style=unknown-token

+ fi

+ ;;

+ ('suffix alias')

+ style=suffix-alias

+ ;;

+ ('global alias')

+ style=global-alias

+ ;;

+ (alias) :;;

+ (builtin) style=builtin

+ [[ $arg == \x5b' ]] && braces_stack='Q'"$braces_stack"

+ ;;

+ (function) style=function;;

+ (command) style=command;;

+ (hashed) style=hashed-command;;

+ (none) if (( ! in_param )) && _zsh_highlight_main_highlighter_check_assign; then

+ _zsh_highlight_main_add_region_highlight $start_pos $end_pos assign

+ local i=$(( arg[(i)=] + 1 ))

+ saw_assignment=true

+ if [[ $arg[i] == '(' ]]; then

+ in_array_assignment=true

+ _zsh_highlight_main_add_region_highlight start_pos+i-1 start_pos+i reserved-word

+ else

+ # assignment to a scalar parameter.

+ # (For array assignments, the command doesn't start until the ")" token.)

+ #

+ # Discard :start_of_pipeline:, if present, as '!' is not valid

+ # after assignments.

+ next_word+=':start:'

+ if (( i <= $#arg )); then

+ () {

+ local highlight_glob=false

+ [[ $zsyh_user_options[globassign] == on ]] && highlight_glob=true

+ _zsh_highlight_main_highlighter_highlight_argument $i

+ }

+ fi

+ fi

+ continue

+ elif (( ! in_param )) &&

+ [[ $arg[0,1] = $histchars[0,1] ]] && (( $#arg[0,2] == 2 )); then

+ style=history-expansion

+ elif (( ! in_param )) &&

+ [[ $arg[0,1] == $histchars[2,2] ]]; then

+ style=history-expansion

+ elif (( ! in_param )) &&

+ ! $saw_assignment &&

+ [[ $arg[1,2] == '((' ]]; then

+ # Arithmetic evaluation.

+ #

+ # Note: prior to zsh-5.1.1-52-g4bed2cf (workers/36669), the ${(z)...}

+ # splitter would only output the '((' token if the matching '))' had

+ # been typed. Therefore, under those versions of zsh, BUFFER="(( 42"

+ # would be highlighted as an error until the matching "))" are typed.

+ #

+ # We highlight just the opening parentheses, as a reserved word; this

+ # is how [[ ... ]] is highlighted, too.

+ _zsh_highlight_main_add_region_highlight $start_pos $((start_pos + 2)) reserved-word

+ if [[ $arg[-2,-1] == '))' ]]; then

+ _zsh_highlight_main_add_region_highlight $((end_pos - 2)) $end_pos reserved-word

+ fi

+ continue

+ elif (( ! in_param )) &&

+ [[ $arg == '()' ]]; then

+ # anonymous function

+ style=reserved-word

+ elif (( ! in_param )) &&

+ ! $saw_assignment &&

+ [[ $arg == \x28' ]]; then

+ # subshell

+ style=reserved-word

+ braces_stack='R'"$braces_stack"

+ elif (( ! in_param )) &&

+ [[ $arg == \x29' ]]; then

+ # end of subshell or command substitution

+ if _zsh_highlight_main__stack_pop 'S'; then

+ REPLY=$start_pos

+ reply=($list_highlights)

+ return 0

+ fi

+ _zsh_highlight_main__stack_pop 'R' reserved-word

+ else

+ if _zsh_highlight_main_highlighter_check_path $arg 1; then

+ style=$REPLY

+ else

+ style=unknown-token

+ fi

+ fi

+ ;;

+ (*) _zsh_highlight_main_add_region_highlight $start_pos $end_pos arg0_$res

+ continue

+ ;;

+ esac

+ fi

+ if [[ -n ${(M)ZSH_HIGHLIGHT_TOKENS_CONTROL_FLOW:#"$arg"} ]]; then

+ next_word=':start::start_of_pipeline:'

+ fi

+ elif _zsh_highlight_main__is_global_alias "$arg"; then # $arg is a global alias that isn't in command position

+ style=global-alias

+ else # $arg is a non-command word

+ case $arg in

+ ( \x29')

+ # subshell or end of array assignment

+ if $in_array_assignment; then

+ _zsh_highlight_main_add_region_highlight $start_pos $end_pos assign

+ _zsh_highlight_main_add_region_highlight $start_pos $end_pos reserved-word

+ in_array_assignment=false

+ next_word+=':start:'

+ continue

+ elif (( in_redirection )); then

+ style=unknown-token

+ else

+ if _zsh_highlight_main__stack_pop 'S'; then

+ REPLY=$start_pos

+ reply=($list_highlights)

+ return 0

+ fi

+ _zsh_highlight_main__stack_pop 'R' reserved-word

+ fi

+ ;;

+ ( \x28\x29')

+ # possibly a function definition

+ if (( in_redirection )) || $in_array_assignment; then

+ style=unknown-token

+ else

+ if [[ $zsyh_user_options[multifuncdef] == on ]] || false # TODO: or if the previous word was a command word

+ then

+ next_word+=':start::start_of_pipeline:'

+ fi

+ style=reserved-word

+ fi

+ ;;

+ (*) if false; then

+ elif [[ $arg = \x7d' ]] && $right_brace_is_recognised_everywhere; then

+ # Parsing rule: {

+ #

+ # Additionally, `tt(})' is recognized in any position if neither the

+ # tt(IGNORE_BRACES) option nor the tt(IGNORE_CLOSE_BRACES) option is set.

+ if (( in_redirection )) || $in_array_assignment; then

+ style=unknown-token

+ else

+ _zsh_highlight_main__stack_pop 'Y' reserved-word

+ if [[ $style == reserved-word ]]; then

+ next_word+=':always:'

+ fi

+ fi

+ elif [[ $arg[0,1] = $histchars[0,1] ]] && (( $#arg[0,2] == 2 )); then

+ style=history-expansion

+ elif [[ $arg == \x5d\x5d' ]] && _zsh_highlight_main__stack_pop 'T' reserved-word; then

+ :

+ elif [[ $arg == \x5d' ]] && _zsh_highlight_main__stack_pop 'Q' builtin; then

+ :

+ else

+ _zsh_highlight_main_highlighter_highlight_argument 1 $(( 1 != in_redirection ))

+ continue

+ fi

+ ;;

+ esac

+ fi

+ _zsh_highlight_main_add_region_highlight $start_pos $end_pos $style

+ done

+ (( $#in_alias )) && in_alias=() _zsh_highlight_main_add_region_highlight $start_pos $end_pos $alias_style

+ (( in_param == 1 )) && in_param=0 _zsh_highlight_main_add_region_highlight $start_pos $end_pos $param_style

+ [[ "$proc_buf" = (#b)(#s)(([[:space:]]|\\ \n')#) ]]

+ REPLY=$(( end_pos + ${#match[1]} - 1 ))

+ reply=($list_highlights)

+ return $(( $#braces_stack > 0 ))

+}

+

+# Check if $arg is variable assignment

+_zsh_highlight_main_highlighter_check_assign()

+{

+ setopt localoptions extended_glob

+ [[ $arg == [[:alpha:]_][[:alnum:]_]#(|\[*\])(|[+])=* ]] ||

+ [[ $arg == [0-9]##(|[+])=* ]]

+}

+

+_zsh_highlight_main_highlighter_highlight_path_separators()

+{

+ local pos style_pathsep

+ style_pathsep=$1_pathseparator

+ reply=()

+ [[ -z "$ZSH_HIGHLIGHT_STYLES[$style_pathsep]" || "$ZSH_HIGHLIGHT_STYLES[$1]" == "$ZSH_HIGHLIGHT_STYLES[$style_pathsep]" ]] && return 0

+ for (( pos = start_pos; $pos <= end_pos; pos++ )) ; do

+ if [[ $BUFFER[pos] == / ]]; then

+ reply+=($((pos - 1)) $pos $style_pathsep)

+ fi

+ done

+}

+

+# Check if $1 is a path.

+# If yes, return 0 and in $REPLY the style to use.

+# Else, return non-zero (and the contents of $REPLY is undefined).

+#

+# $2 should be non-zero iff we're in command position.

+_zsh_highlight_main_highlighter_check_path()

+{

+ _zsh_highlight_main_highlighter_expand_path "$1"

+ local expanded_path="$REPLY" tmp_path

+ integer in_command_position=$2

+

+ if [[ $zsyh_user_options[autocd] == on ]]; then

+ integer autocd=1

+ else

+ integer autocd=0

+ fi

+

+ if (( in_command_position )); then

+ # ### Currently, this value is never returned: either it's overwritten

+ # ### below, or the return code is non-zero

+ REPLY=arg0

+ else

+ REPLY=path

+ fi

+

+ if [[ ${1[1]} == '=' && $1 == ??* && ${1[2]} != \x28' && $zsyh_user_options[equals] == 'on' && $expanded_path[1] != '/' ]]; then

+ REPLY=unknown-token # will error out if executed

+ return 0

+ fi

+

+ [[ -z $expanded_path ]] && return 1

+

+ # Check if this is a blacklisted path

+ if [[ $expanded_path[1] == / ]]; then

+ tmp_path=$expanded_path

+ else

+ tmp_path=$PWD/$expanded_path

+ fi

+ tmp_path=$tmp_path:a

+

+ while [[ $tmp_path != / ]]; do

+ [[ -n ${(M)ZSH_HIGHLIGHT_DIRS_BLACKLIST:#$tmp_path} ]] && return 1

+ tmp_path=$tmp_path:h

+ done

+

+ if (( in_command_position )); then

+ if [[ -x $expanded_path ]]; then

+ if (( autocd )); then

+ if [[ -d $expanded_path ]]; then

+ REPLY=autodirectory

+ fi

+ return 0

+ elif [[ ! -d $expanded_path ]]; then

+ # ### This seems unreachable for the current callers

+ return 0

+ fi

+ fi

+ else

+ if [[ -L $expanded_path || -e $expanded_path ]]; then

+ return 0

+ fi

+ fi

+

+ # Search the path in CDPATH

+ if [[ $expanded_path != /* ]] && (( autocd || ! in_command_position )); then

+ # TODO: When we've dropped support for pre-5.0.6 zsh, use the *(Y1) glob qualifier here.

+ local cdpath_dir

+ for cdpath_dir in $cdpath ; do

+ if [[ -d "$cdpath_dir/$expanded_path" && -x "$cdpath_dir/$expanded_path" ]]; then

+ if (( in_command_position && autocd )); then

+ REPLY=autodirectory

+ fi

+ return 0

+ fi

+ done

+ fi

+

+ # If dirname($1) doesn't exist, neither does $1.

+ [[ ! -d ${expanded_path:h} ]] && return 1

+

+ # If this word ends the buffer, check if it's the prefix of a valid path.

+ if (( has_end && (len == end_pos) )) &&

+ (( ! $#in_alias )) &&

+ [[ $WIDGET != zle-line-finish ]]; then

+ # TODO: When we've dropped support for pre-5.0.6 zsh, use the *(Y1) glob qualifier here.

+ local -a tmp

+ if (( in_command_position )); then

+ # We include directories even when autocd is enabled, because those

+ # directories might contain executable files: e.g., BUFFER="/bi" en route

+ # to typing "/bin/sh".

+ tmp=( ${expanded_path}*(N-*,N-/) )

+ else

+ tmp=( ${expanded_path}*(N) )

+ fi

+ (( ${+tmp[1]} )) && REPLY=path_prefix && return 0

+ fi

+

+ # It's not a path.

+ return 1

+}

+

+# Highlight an argument and possibly special chars in quotes starting at $1 in $arg

+# This command will at least highlight $1 to end_pos with the default style

+# If $2 is set to 0, the argument cannot be highlighted as an option.

+#

+# This function currently assumes it's never called for the command word.

+_zsh_highlight_main_highlighter_highlight_argument()

+{

+ local base_style=default i=$1 option_eligible=${2:-1} path_eligible=1 ret start style

+ local -a highlights

+

+ local -a match mbegin mend

+ local MATCH; integer MBEGIN MEND

+

+ case "$arg[i]" in

+ '%')

+ if [[ $arg[i+1] == '?' ]]; then

+ (( i += 2 ))

+ fi

+ ;;

+ '-')

+ if (( option_eligible )); then

+ if [[ $arg[i+1] == - ]]; then

+ base_style=double-hyphen-option

+ else

+ base_style=single-hyphen-option

+ fi

+ path_eligible=0

+ fi

+ ;;

+ '=')

+ if [[ $arg[i+1] == \x28' ]]; then

+ (( i += 2 ))

+ _zsh_highlight_main_highlighter_highlight_list $(( start_pos + i - 1 )) S $has_end $arg[i,-1]

+ ret=$?

+ (( i += REPLY ))

+ highlights+=(

+ $(( start_pos + $1 - 1 )) $(( start_pos + i )) process-substitution

+ $(( start_pos + $1 - 1 )) $(( start_pos + $1 + 1 )) process-substitution-delimiter

+ $reply

+ )

+ if (( ret == 0 )); then

+ highlights+=($(( start_pos + i - 1 )) $(( start_pos + i )) process-substitution-delimiter)

+ fi

+ fi

+ esac

+

+ # This loop is a hot path. Keep it fast!

+ (( --i ))

+ while (( ++i <= $#arg )); do

+ i=${arg[(ib.i.)[\\\'\"\`\$\<\>\*\?]]}

+ case "$arg[$i]" in

+ "") break;;

+ "\\") (( i += 1 )); continue;;

+ "'")

+ _zsh_highlight_main_highlighter_highlight_single_quote $i

+ (( i = REPLY ))

+ highlights+=($reply)

+ ;;

+ '"')

+ _zsh_highlight_main_highlighter_highlight_double_quote $i

+ (( i = REPLY ))

+ highlights+=($reply)

+ ;;

+ '`')

+ _zsh_highlight_main_highlighter_highlight_backtick $i

+ (( i = REPLY ))

+ highlights+=($reply)

+ ;;

+ ' )

+ if [[ $arg[i+1] != "'" ]]; then

+ path_eligible=0

+ fi

+ if [[ $arg[i+1] == "'" ]]; then

+ _zsh_highlight_main_highlighter_highlight_dollar_quote $i

+ (( i = REPLY ))

+ highlights+=($reply)

+ continue

+ elif [[ $arg[i+1] == \x28' ]]; then

+ if [[ $arg[i+2] == \x28' ]] && _zsh_highlight_main_highlighter_highlight_arithmetic $i; then

+ # Arithmetic expansion

+ (( i = REPLY ))

+ highlights+=($reply)

+ continue

+ fi

+ start=$i

+ (( i += 2 ))

+ _zsh_highlight_main_highlighter_highlight_list $(( start_pos + i - 1 )) S $has_end $arg[i,-1]

+ ret=$?

+ (( i += REPLY ))

+ highlights+=(

+ $(( start_pos + start - 1)) $(( start_pos + i )) command-substitution-unquoted

+ $(( start_pos + start - 1)) $(( start_pos + start + 1)) command-substitution-delimiter-unquoted

+ $reply

+ )

+ if (( ret == 0 )); then

+ highlights+=($(( start_pos + i - 1)) $(( start_pos + i )) command-substitution-delimiter-unquoted)

+ fi

+ continue

+ fi

+ while [[ $arg[i+1] == [=~#+'^'] ]]; do

+ (( i += 1 ))

+ done

+ if [[ $arg[i+1] == [*@#?$!-] ]]; then

+ (( i += 1 ))

+ fi;;

+ [\<\>])

+ if [[ $arg[i+1] == \x28' ]]; then # \x28 = open paren

+ start=$i

+ (( i += 2 ))

+ _zsh_highlight_main_highlighter_highlight_list $(( start_pos + i - 1 )) S $has_end $arg[i,-1]

+ ret=$?

+ (( i += REPLY ))

+ highlights+=(

+ $(( start_pos + start - 1)) $(( start_pos + i )) process-substitution

+ $(( start_pos + start - 1)) $(( start_pos + start + 1 )) process-substitution-delimiter

+ $reply

+ )

+ if (( ret == 0 )); then

+ highlights+=($(( start_pos + i - 1)) $(( start_pos + i )) process-substitution-delimiter)

+ fi

+ continue

+ fi

+ ;|

+ *)

+ if $highlight_glob &&

+ [[ $zsyh_user_options[multios] == on || $in_redirection -eq 0 ]] &&

+ [[ ${arg[$i]} =~ ^[*?] || ${arg:$i-1} =~ ^\<[0-9]*-[0-9]*\> ]]; then

+ highlights+=($(( start_pos + i - 1 )) $(( start_pos + i + $#MATCH - 1)) globbing)

+ (( i += $#MATCH - 1 ))

+ path_eligible=0

+ else

+ continue

+ fi

+ ;;

+ esac

+ done

+

+ if (( path_eligible )); then

+ if (( in_redirection )) && [[ $last_arg == *['<>']['&'] && $arg[$1,-1] == (<0->|p|-) ]]; then

+ if [[ $arg[$1,-1] == (p|-) ]]; then

+ base_style=redirection

+ else

+ base_style=numeric-fd

+ fi

+ # This function is currently never called for the command word, so $2 is hard-coded as 0.

+ elif _zsh_highlight_main_highlighter_check_path $arg[$1,-1] 0; then

+ base_style=$REPLY

+ _zsh_highlight_main_highlighter_highlight_path_separators $base_style

+ highlights+=($reply)

+ fi

+ fi

+

+ highlights=($(( start_pos + $1 - 1 )) $end_pos $base_style $highlights)

+ _zsh_highlight_main_add_many_region_highlights $highlights

+}

+

+# Quote Helper Functions

+#

+# $arg is expected to be set to the current argument

+# $start_pos is expected to be set to the start of $arg in $BUFFER

+# $1 is the index in $arg which starts the quote

+# $REPLY is returned as the end of quote index in $arg

+# $reply is returned as an array of region_highlight additions

+

+# Highlight single-quoted strings

+_zsh_highlight_main_highlighter_highlight_single_quote()

+{

+ local arg1=$1 i q=\' style

+ i=$arg[(ib:arg1+1:)$q]

+ reply=()

+

+ if [[ $zsyh_user_options[rcquotes] == on ]]; then

+ while [[ $arg[i+1] == "'" ]]; do

+ reply+=($(( start_pos + i - 1 )) $(( start_pos + i + 1 )) rc-quote)

+ (( i++ ))

+ i=$arg[(ib:i+1:)$q]

+ done

+ fi

+

+ if [[ $arg[i] == "'" ]]; then

+ style=single-quoted-argument

+ else

+ # If unclosed, i points past the end

+ (( i-- ))

+ style=single-quoted-argument-unclosed

+ fi

+ reply=($(( start_pos + arg1 - 1 )) $(( start_pos + i )) $style $reply)

+ REPLY=$i

+}

+

+# Highlight special chars inside double-quoted strings

+_zsh_highlight_main_highlighter_highlight_double_quote()

+{

+ local -a breaks match mbegin mend saved_reply

+ local MATCH; integer last_break=$(( start_pos + $1 - 1 )) MBEGIN MEND

+ local i j k ret style

+ reply=()

+

+ for (( i = $1 + 1 ; i <= $#arg ; i += 1 )) ; do

+ (( j = i + start_pos - 1 ))

+ (( k = j + 1 ))

+ case "$arg[$i]" in

+ ('"') break;;

+ ('`') saved_reply=($reply)

+ _zsh_highlight_main_highlighter_highlight_backtick $i

+ (( i = REPLY ))

+ reply=($saved_reply $reply)

+ continue

+ ;;

+ (' ) style=dollar-double-quoted-argument

+ # Look for an alphanumeric parameter name.

+ if [[ ${arg:$i} =~ ^([A-Za-z_][A-Za-z0-9_]*|[0-9]+) ]] ; then

+ (( k += $#MATCH )) # highlight the parameter name

+ (( i += $#MATCH )) # skip past it

+ elif [[ ${arg:$i} =~ ^[{]([A-Za-z_][A-Za-z0-9_]*|[0-9]+)[}] ]] ; then

+ (( k += $#MATCH )) # highlight the parameter name and braces

+ (( i += $#MATCH )) # skip past it

+ elif [[ $arg[i+1] == ' ]]; then

+ # $ - pid

+ (( k += 1 )) # highlight both dollar signs

+ (( i += 1 )) # don't consider the second one as introducing another parameter expansion

+ elif [[ $arg[i+1] == [-#*@?] ]]; then

+ # $#, $*, $@, $?, $- - like $ above

+ (( k += 1 )) # highlight both dollar signs

+ (( i += 1 )) # don't consider the second one as introducing another parameter expansion

+ elif [[ $arg[i+1] == \x28' ]]; then

+ saved_reply=($reply)

+ if [[ $arg[i+2] == \x28' ]] && _zsh_highlight_main_highlighter_highlight_arithmetic $i; then

+ # Arithmetic expansion

+ (( i = REPLY ))

+ reply=($saved_reply $reply)

+ continue

+ fi

+

+ breaks+=( $last_break $(( start_pos + i - 1 )) )

+ (( i += 2 ))

+ _zsh_highlight_main_highlighter_highlight_list $(( start_pos + i - 1 )) S $has_end $arg[i,-1]

+ ret=$?

+ (( i += REPLY ))

+ last_break=$(( start_pos + i ))

+ reply=(

+ $saved_reply

+ $j $(( start_pos + i )) command-substitution-quoted

+ $j $(( j + 2 )) command-substitution-delimiter-quoted

+ $reply

+ )

+ if (( ret == 0 )); then

+ reply+=($(( start_pos + i - 1 )) $(( start_pos + i )) command-substitution-delimiter-quoted)

+ fi

+ continue

+ else

+ continue

+ fi

+ ;;

+ "\\") style=back-double-quoted-argument

+ if [[ \\\`\"\${histchars[1]} == *$arg[$i+1]* ]]; then

+ (( k += 1 )) # Color following char too.

+ (( i += 1 )) # Skip parsing the escaped char.

+ else

+ continue

+ fi

+ ;;

+ ($histchars[1]) # ! - may be a history expansion

+ if [[ $arg[i+1] != ('='| \x28'| \x7b'|[[:blank:]]) ]]; then

+ style=history-expansion

+ else

+ continue

+ fi

+ ;;

+ *) continue ;;

+

+ esac

+ reply+=($j $k $style)

+ done

+

+ if [[ $arg[i] == '"' ]]; then

+ style=double-quoted-argument

+ else

+ # If unclosed, i points past the end

+ (( i-- ))

+ style=double-quoted-argument-unclosed

+ fi

+ (( last_break != start_pos + i )) && breaks+=( $last_break $(( start_pos + i )) )

+ saved_reply=($reply)

+ reply=()

+ for 1 2 in $breaks; do

+ (( $1 != $2 )) && reply+=($1 $2 $style)

+ done

+ reply+=($saved_reply)

+ REPLY=$i

+}

+

+# Highlight special chars inside dollar-quoted strings

+_zsh_highlight_main_highlighter_highlight_dollar_quote()

+{

+ local -a match mbegin mend

+ local MATCH; integer MBEGIN MEND

+ local i j k style

+ local AA

+ integer c

+ reply=()

+

+ for (( i = $1 + 2 ; i <= $#arg ; i += 1 )) ; do

+ (( j = i + start_pos - 1 ))

+ (( k = j + 1 ))

+ case "$arg[$i]" in

+ "'") break;;

+ "\\") style=back-dollar-quoted-argument

+ for (( c = i + 1 ; c <= $#arg ; c += 1 )); do

+ [[ "$arg[$c]" != ([0-9xXuUa-fA-F]) ]] && break

+ done

+ AA=$arg[$i+1,$c-1]

+ # Matching for HEX and OCT values like \0xA6, \xA6 or \012

+ if [[ "$AA" =~ "^(x|X)[0-9a-fA-F]{1,2}"

+ || "$AA" =~ "^[0-7]{1,3}"

+ || "$AA" =~ "^u[0-9a-fA-F]{1,4}"

+ || "$AA" =~ "^U[0-9a-fA-F]{1,8}"

+ ]]; then

+ (( k += $#MATCH ))

+ (( i += $#MATCH ))

+ else

+ if (( $#arg > $i+1 )) && [[ $arg[$i+1] == [xXuU] ]]; then

+ # \x not followed by hex digits is probably an error

+ style=unknown-token

+ fi

+ (( k += 1 )) # Color following char too.

+ (( i += 1 )) # Skip parsing the escaped char.

+ fi

+ ;;

+ *) continue ;;

+

+ esac

+ reply+=($j $k $style)

+ done

+

+ if [[ $arg[i] == "'" ]]; then

+ style=dollar-quoted-argument

+ else

+ # If unclosed, i points past the end

+ (( i-- ))

+ style=dollar-quoted-argument-unclosed

+ fi

+ reply=($(( start_pos + $1 - 1 )) $(( start_pos + i )) $style $reply)

+ REPLY=$i

+}

+

+# Highlight backtick substitutions

+_zsh_highlight_main_highlighter_highlight_backtick()

+{

+ # buf is the contents of the backticks with a layer of backslashes removed.

+ # last is the index of arg for the start of the string to be copied into buf.

+ # It is either one past the beginning backtick or one past the last backslash.

+ # offset is a count of consumed \ (the delta between buf and arg).

+ # offsets is an array indexed by buf offset of when the delta between buf and arg changes.

+ # It is sparse, so search backwards to the last value

+ local buf highlight style=back-quoted-argument-unclosed style_end

+ local -i arg1=$1 end_ i=$1 last offset=0 start subshell_has_end=0

+ local -a highlight_zone highlights offsets

+ reply=()

+

+ last=$(( arg1 + 1 ))

+ # Remove one layer of backslashes and find the end

+ while i=$arg[(ib:i+1:)[\\\\\`]]; do # find the next \ or `

+ if (( i > $#arg )); then

+ buf=$buf$arg[last,i]

+ offsets[i-arg1-offset]='' # So we never index past the end

+ (( i-- ))

+ subshell_has_end=$(( has_end && (start_pos + i == len) ))

+ break

+ fi

+

+ if [[ $arg[i] == '\' ]]; then

+ (( i++ ))

+ # POSIX XCU 2.6.3

+ if [[ $arg[i] == (' |'`'|'\') ]]; then

+ buf=$buf$arg[last,i-2]

+ (( offset++ ))

+ # offsets is relative to buf, so adjust by -arg1

+ offsets[i-arg1-offset]=$offset

+ else

+ buf=$buf$arg[last,i-1]

+ fi

+ else # it's an unquoted ` and this is the end

+ style=back-quoted-argument

+ style_end=back-quoted-argument-delimiter

+ buf=$buf$arg[last,i-1]

+ offsets[i-arg1-offset]='' # So we never index past the end

+ break

+ fi

+ last=$i

+ done

+

+ _zsh_highlight_main_highlighter_highlight_list 0 '' $subshell_has_end $buf

+

+ # Munge the reply to account for removed backslashes

+ for start end_ highlight in $reply; do

+ start=$(( start_pos + arg1 + start + offsets[(Rb:start:)?*] ))

+ end_=$(( start_pos + arg1 + end_ + offsets[(Rb:end_:)?*] ))

+ highlights+=($start $end_ $highlight)

+ if [[ $highlight == back-quoted-argument-unclosed && $style == back-quoted-argument ]]; then

+ # An inner backtick command substitution is unclosed, but this level is closed

+ style_end=unknown-token

+ fi

+ done

+

+ reply=(

+ $(( start_pos + arg1 - 1 )) $(( start_pos + i )) $style

+ $(( start_pos + arg1 - 1 )) $(( start_pos + arg1 )) back-quoted-argument-delimiter

+ $highlights

+ )

+ if (( $#style_end )); then

+ reply+=($(( start_pos + i - 1)) $(( start_pos + i )) $style_end)

+ fi

+ REPLY=$i

+}

+

+# Highlight special chars inside arithmetic expansions

+_zsh_highlight_main_highlighter_highlight_arithmetic()

+{

+ local -a saved_reply

+ local style

+ integer i j k paren_depth ret

+ reply=()

+

+ for (( i = $1 + 3 ; i <= end_pos - start_pos ; i += 1 )) ; do

+ (( j = i + start_pos - 1 ))

+ (( k = j + 1 ))

+ case "$arg[$i]" in

+ [\'\"\\@{}])

+ style=unknown-token

+ ;;

+ '(')

+ (( paren_depth++ ))

+ continue

+ ;;

+ ')')

+ if (( paren_depth )); then

+ (( paren_depth-- ))

+ continue

+ fi

+ [[ $arg[i+1] == ')' ]] && { (( i++ )); break; }

+ # Special case ) at the end of the buffer to avoid flashing command substitution for a character

+ (( has_end && (len == k) )) && break

+ # This is a single paren and there are no open parens, so this isn't an arithmetic expansion

+ return 1

+ ;;

+ '`')

+ saved_reply=($reply)

+ _zsh_highlight_main_highlighter_highlight_backtick $i

+ (( i = REPLY ))

+ reply=($saved_reply $reply)

+ continue

+ ;;

+ ' )

+ if [[ $arg[i+1] == \x28' ]]; then

+ saved_reply=($reply)

+ if [[ $arg[i+2] == \x28' ]] && _zsh_highlight_main_highlighter_highlight_arithmetic $i; then

+ # Arithmetic expansion

+ (( i = REPLY ))

+ reply=($saved_reply $reply)

+ continue

+ fi

+

+ (( i += 2 ))

+ _zsh_highlight_main_highlighter_highlight_list $(( start_pos + i - 1 )) S $has_end $arg[i,end_pos]

+ ret=$?

+ (( i += REPLY ))

+ reply=(

+ $saved_reply

+ $j $(( start_pos + i )) command-substitution-quoted

+ $j $(( j + 2 )) command-substitution-delimiter-quoted

+ $reply

+ )

+ if (( ret == 0 )); then

+ reply+=($(( start_pos + i - 1 )) $(( start_pos + i )) command-substitution-delimiter)

+ fi

+ continue

+ else

+ continue

+ fi

+ ;;

+ ($histchars[1]) # ! - may be a history expansion

+ if [[ $arg[i+1] != ('='| \x28'| \x7b'|[[:blank:]]) ]]; then

+ style=history-expansion

+ else

+ continue

+ fi

+ ;;

+ *)

+ continue

+ ;;

+

+ esac

+ reply+=($j $k $style)

+ done

+

+ if [[ $arg[i] != ')' ]]; then

+ # If unclosed, i points past the end

+ (( i-- ))

+ fi

+ style=arithmetic-expansion

+ reply=($(( start_pos + $1 - 1)) $(( start_pos + i )) arithmetic-expansion $reply)

+ REPLY=$i

+}

+

+

+# Called with a single positional argument.

+# Perform filename expansion (tilde expansion) on the argument and set $REPLY to the expanded value.

+#

+# Does not perform filename generation (globbing).

+_zsh_highlight_main_highlighter_expand_path()

+{

+ (( $# == 1 )) || print -r -- >&2 "zsh-syntax-highlighting: BUG: _zsh_highlight_main_highlighter_expand_path: called without argument"

+

+ # The $~1 syntax normally performs filename generation, but not when it's on the right-hand side of ${x:=y}.

+ setopt localoptions nonomatch

+ unset REPLY

+ : ${REPLY:=${(Q)${~1}}}

+}

+

+# -------------------------------------------------------------------------------------------------

+# Main highlighter initialization

+# -------------------------------------------------------------------------------------------------

+

+_zsh_highlight_main__precmd_hook() {

+ # Unset the WARN_NESTED_VAR option, taking care not to error if the option

+ # doesn't exist (zsh older than zsh-5.3.1-test-2).

+ setopt localoptions

+ if eval '[[ -o warnnestedvar ]]' 2>/dev/null; then

+ unsetopt warnnestedvar

+ fi

+

+ _zsh_highlight_main__command_type_cache=()

+}

+

+autoload -Uz add-zsh-hook

+if add-zsh-hook precmd _zsh_highlight_main__precmd_hook 2>/dev/null; then

+ # Initialize command type cache

+ typeset -gA _zsh_highlight_main__command_type_cache

+else

+ print -r -- >&2 'zsh-syntax-highlighting: Failed to load add-zsh-hook. Some speed optimizations will not be used.'

+ # Make sure the cache is unset

+ unset _zsh_highlight_main__command_type_cache

+fi

+typeset -ga ZSH_HIGHLIGHT_DIRS_BLACKLIST

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/abspath-in-command-position1.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/abspath-in-command-position1.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..cfc12a5f8931e7331a92d13981a27366b0b09af3

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/abspath-in-command-position1.zsh

@@ -0,0 +1,35 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= /'

+

+expected_region_highlight=(

+ '1 1 path_prefix' # /

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/abspath-in-command-position1b.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/abspath-in-command-position1b.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..88fe60c9de55b97df1266b7b3f4d8743a1f0fece

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/abspath-in-command-position1b.zsh

@@ -0,0 +1,36 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+setopt autocd

+BUFFER= /'

+

+expected_region_highlight=(

+ '1 1 autodirectory' # /

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/abspath-in-command-position2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/abspath-in-command-position2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..5033d2c4703939f017070e03b6d984eb050d1a92

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/abspath-in-command-position2.zsh

@@ -0,0 +1,35 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= /bi'

+

+expected_region_highlight=(

+ '1 3 path_prefix' # /bi

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/abspath-in-command-position3.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/abspath-in-command-position3.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..415e3167dda088d60252fdee704c8b4674dfdeab

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/abspath-in-command-position3.zsh

@@ -0,0 +1,37 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= /bin; /bin'

+

+expected_region_highlight=(

+ '1 4 unknown-token' # /bin (in middle)

+ '5 5 commandseparator' # ;

+ '7 10 path_prefix' # /bin (at end)

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/abspath-in-command-position3b.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/abspath-in-command-position3b.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..0e65c98aca05c3394d68cf6d82f31f7699f24bcc

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/abspath-in-command-position3b.zsh

@@ -0,0 +1,38 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+setopt autocd

+BUFFER= /bin; /bin'

+

+expected_region_highlight=(

+ '1 4 autodirectory' # /bin (in middle)

+ '5 5 commandseparator' # ;

+ '7 10 autodirectory' # /bin (at end)

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/abspath-in-command-position4.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/abspath-in-command-position4.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..9e935bf1845300b7bc84a30e0484e19d7169e934

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/abspath-in-command-position4.zsh

@@ -0,0 +1,35 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= /bin/s'

+

+expected_region_highlight=(

+ '1 6 path_prefix' # /bin/s

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/abspath-in-command-position5.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/abspath-in-command-position5.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..e428b1a0a87fb25820953eb7f6c361421784694b

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/abspath-in-command-position5.zsh

@@ -0,0 +1,35 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= /bin/sh'

+

+expected_region_highlight=(

+ '1 7 command' # /bin/sh

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-assignment1.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-assignment1.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..0c101c8e29fa0bf021233d34be7f61b22f8e1b83

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-assignment1.zsh

@@ -0,0 +1,38 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# Issue #263 (more-pathological case): aliases[x=y]=z works; the ${(z)} splitter considers

+# that a single word; but it's not looked up as an alias. Hence, highlight it as an error.

+aliases[x=y]='lorem ipsum dolor sit amet'

+BUFFER='x=y ls'

+

+expected_region_highlight=(

+ "1 3 unknown-token" # x=y

+ "5 6 default" # ls

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-basic.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-basic.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..7af8b7cdb21ef9e3a0829e9931bd7b9df0a8e69a

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-basic.zsh

@@ -0,0 +1,35 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+alias foo="echo hello world"

+BUFFER="foo"

+

+expected_region_highlight+=(

+ "1 3 alias" # foo

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-brackets.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-brackets.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..ede6c9a9d97b001b682f0ab7b29ad3709d126dec

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-brackets.zsh

@@ -0,0 +1,41 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2021 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# Have to use cat here as it must be a command that exists.

+# Otherwise, the test would fail with the first token being recognized

+# as an "unknown-token".

+alias ]=cat

+

+BUFFER='] /'

+

+expected_region_highlight=(

+ '1 1 alias' # ]

+ '3 3 path' # /

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-command-substitution.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-command-substitution.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..a7b77dfa62fbfc2a8dab766437a2c0e03a6bf9bf

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-command-substitution.zsh

@@ -0,0 +1,37 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2019 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# Alias must be at least 4 characters to test the regression

+# cf. 139ea2b189819c43cc251825981c116959b15cc3

+alias foobar='echo "$(echo foobar)"'

+BUFFER='foobar'

+

+expected_region_highlight=(

+ "1 6 alias" # foobar

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-comment1.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-comment1.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..bae7ef6f71160364668852a61f8b3666d788f19e

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-comment1.zsh

@@ -0,0 +1,37 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# see alias-comment2.zsh and comment-followed.zsh

+setopt interactivecomments

+alias x= # foo\npwd'

+BUFFER='x'

+

+expected_region_highlight=(

+ '1 1 alias' # x

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-comment2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-comment2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..5a4982298d30a7e87103f9d2d2f797cdb0501785

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-comment2.zsh

@@ -0,0 +1,37 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# see alias-comment1.zsh

+setopt NO_interactivecomments

+alias x= # foo\npwd'

+BUFFER='x'

+

+expected_region_highlight=(

+ '1 1 unknown-token' # x (#)

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-complex.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-complex.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..5ad7c0a9cd575cec020d077c5031afa856bc7b04

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-complex.zsh

@@ -0,0 +1,38 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+alias x='echo && ls; >'

+

+BUFFER='x file echo'

+

+expected_region_highlight=(

+ '1 1 alias' # x

+ '3 6 default' # file

+ '8 11 builtin' # echo

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-empty.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-empty.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..535fccc919b9b40b6eca813922b92dcef0f46308

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-empty.zsh

@@ -0,0 +1,38 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+alias x=''

+

+BUFFER='x echo foo'

+

+expected_region_highlight=(

+ '1 1 alias' # x

+ '3 6 builtin' # echo

+ '8 10 default' # foo

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-eponymous1.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-eponymous1.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..2642e14fce7afd6a44833b75f00c5d574b6e8299

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-eponymous1.zsh

@@ -0,0 +1,36 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2019 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+alias ls='command ls'

+

+BUFFER='ls'

+

+expected_region_highlight=(

+ "1 2 alias" # ls

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-eponymous2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-eponymous2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..dcd85653dec37b5998224a1d9546e585d0cc6ddd

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-eponymous2.zsh

@@ -0,0 +1,36 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2019 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+alias ls=tmp tmp='command ls'

+

+BUFFER='ls'

+

+expected_region_highlight=(

+ "1 2 alias" # ls

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-in-cmdsubst.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-in-cmdsubst.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..b3cf777a974fb324c17de3fd545a517ac103c963

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-in-cmdsubst.zsh

@@ -0,0 +1,43 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2019 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+alias p='print -r --'

+

+BUFFER= s=$(p foo)'

+

+expected_region_highlight=(

+ '1 10 assign' # s=$(p foo)

+ '3 10 default' # $(p foo)

+ '3 10 command-substitution-unquoted' # $(p foo)

+ '3 4 command-substitution-delimiter-unquoted' # $(

+ '5 5 alias' # p

+ '7 9 default' # foo

+ '10 10 command-substitution-delimiter-unquoted' # )

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-loop.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-loop.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..83992dbf345c588e44e1e9f643d77ad5d7e72c74

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-loop.zsh

@@ -0,0 +1,44 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+function b() {} # beware of ALIAS_FUNC_DEF

+alias a=b b=c c=b

+

+BUFFER='a foo; :'

+

+expected_region_highlight=(

+ # An alias is ineligible for expansion whilst it's being expanded.

+ # Therefore, the "b" in the expansion of the alias "c" is not considered

+ # as an alias.

+ '1 1 alias' # a

+ '3 5 default' # foo

+ '6 6 commandseparator' # ;

+ '8 8 builtin' # :

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-loop2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-loop2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..29e04ace4ee4d999ef8aeb3cdefc499309ab6a1f

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-loop2.zsh

@@ -0,0 +1,35 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+alias ls="ls"

+BUFFER="ls"

+

+expected_region_highlight+=(

+ "1 2 alias" # ls

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-nested-precommand.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-nested-precommand.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..6d4172bccc99d311e1b69bc4b2553827398682b3

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-nested-precommand.zsh

@@ -0,0 +1,43 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+alias a=b b=sudo

+sudo(){}

+

+BUFFER='a -u phy1729 echo; :'

+

+expected_region_highlight=(

+ '1 1 alias' # a

+ '3 4 single-hyphen-option' # -u

+ '6 12 default' # phy1729

+ '14 17 builtin' # echo

+ '18 18 commandseparator' # ;

+ '20 20 builtin' # :

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-nested.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-nested.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..b24b49674061cd4e474292cd5f93c8cba6ee4f9c

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-nested.zsh

@@ -0,0 +1,40 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+alias a=b b=:

+

+BUFFER='a foo; :'

+

+expected_region_highlight=(

+ '1 1 alias' # a

+ '3 5 default' # foo

+ '6 6 commandseparator' # ;

+ '8 8 builtin' # :

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-parameter.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-parameter.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..21bc6b32a1c4a0c5ed12040b593d7dfa63783e6d

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-parameter.zsh

@@ -0,0 +1,38 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+alias '$foo'='echo alias'

+local foo; foo=(echo param)

+

+BUFFER='$foo'

+

+expected_region_highlight=(

+ '1 4 alias' # $foo

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-precommand-option-argument1.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-precommand-option-argument1.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..2d1f35c68999fdcbd8d587d43c5ba73110617b4a

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-precommand-option-argument1.zsh

@@ -0,0 +1,42 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# See also param-precommand-option-argument1.zsh

+alias sudo_u='sudo -u'

+sudo(){}

+

+BUFFER='sudo_u phy1729 echo foo'

+

+expected_region_highlight=(

+ '1 6 alias' # sudo_u

+ '8 14 default' # phy1729

+ '17 19 command "issue #540"' # echo (not builtin)

+ '21 23 default' # foo

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-precommand-option-argument2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-precommand-option-argument2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..fbc6eec7d483031c6615d61a218ca4f20e168da4

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-precommand-option-argument2.zsh

@@ -0,0 +1,42 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+alias sudo_b='sudo -b'

+alias sudo_b_u='sudo_b -u'

+sudo(){}

+

+BUFFER='sudo_b_u phy1729 echo foo'

+

+expected_region_highlight=(

+ '1 8 alias' # sudo_b_u

+ '10 16 default' # phy1729

+ '18 21 command "issue #540"' # echo (not builtin)

+ '23 25 default' # foo

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-precommand-option-argument3.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-precommand-option-argument3.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..373f12b621ce4104de5ca9ba47ecd7d5b5db929e

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-precommand-option-argument3.zsh

@@ -0,0 +1,42 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2019 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# See also param-precommand-option-argument3.zsh

+alias sudo_u='sudo -u'

+sudo(){}

+

+BUFFER='sudo_u phy1729 ls foo'

+

+expected_region_highlight=(

+ '1 6 alias' # sudo_u

+ '8 14 default' # phy1729

+ '16 17 command' # ls

+ '19 21 default' # foo

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-precommand-option-argument4.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-precommand-option-argument4.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..d47dccb83f5d08b42eb51793776170879467d508

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-precommand-option-argument4.zsh

@@ -0,0 +1,42 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+alias sudo_b='sudo -b'

+alias sudo_b_u='sudo_b -u'

+sudo(){}

+

+BUFFER='sudo_b_u phy1729 ls foo'

+

+expected_region_highlight=(

+ '1 8 alias' # sudo_b_u

+ '10 16 default' # phy1729

+ '18 19 command' # ls

+ '21 23 default' # foo

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-quoted.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-quoted.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..e42e2f0a13d13b1de34391fb9eaf6f9789590fe7

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-quoted.zsh

@@ -0,0 +1,39 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) YYYY zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+alias a=: ls='ls -l'

+BUFFER='"a" foo; \ls'

+

+expected_region_highlight=(

+ '1 3 unknown-token' # "a"

+ '5 7 default' # foo

+ '8 8 commandseparator' # ;

+ '10 12 command' # \ls

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-redirect.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-redirect.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..acc3dcbefee99c293861d2a42e139e585c8451c3

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-redirect.zsh

@@ -0,0 +1,38 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+alias x=\>

+BUFFER='x foo echo bar'

+

+expected_region_highlight=(

+ '1 1 alias' # x

+ '3 5 default' # foo

+ '7 10 builtin' # echo

+ '12 14 default' # bar

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-reuse1.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-reuse1.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..1fd61a0b3ec065ab16647296205601fcd366c666

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-reuse1.zsh

@@ -0,0 +1,39 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+alias a=: b='a | a'

+

+BUFFER='b | b'

+

+expected_region_highlight=(

+ '1 1 alias' # b

+ '3 3 commandseparator' # |

+ '5 5 alias' # b

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-reuse2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-reuse2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..37251fb9c694143e1ebb313dd76a8f0c05f9ecd9

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-reuse2.zsh

@@ -0,0 +1,39 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+alias a=: b='a && a'

+

+BUFFER='b && b'

+

+expected_region_highlight=(

+ '1 1 alias' # b

+ '3 4 commandseparator' # &&

+ '6 6 alias' # b

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-reuse3.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-reuse3.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..5d7150a18b95a4ee79062cdedf81ca260cb3ec96

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-reuse3.zsh

@@ -0,0 +1,39 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+alias a=: b='a; a'

+

+BUFFER='b; b'

+

+expected_region_highlight=(

+ '1 1 alias' # b

+ '2 2 commandseparator' # ;

+ '4 4 alias' # b

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-reuse4.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-reuse4.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..7ad7038c7074f03a7d16bc9269fbe26388e1b0ee

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-reuse4.zsh

@@ -0,0 +1,42 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+alias a=: b='a $(a)'

+

+BUFFER='b $(b)'

+

+expected_region_highlight=(

+ '1 1 alias' # b

+ '3 6 default' # $(b)

+ '3 6 command-substitution-unquoted' # $(b)

+ '3 4 command-substitution-delimiter-unquoted' # $(

+ '5 5 alias' # b

+ '6 6 command-substitution-delimiter-unquoted' # )

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-reuse5.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-reuse5.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..881401b258d8e545959af6b1f256ef2b04b7d209

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-reuse5.zsh

@@ -0,0 +1,43 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+alias a=: b='a < <(a)'

+

+BUFFER='b < <(b)'

+

+expected_region_highlight=(

+ '1 1 alias' # b

+ '3 3 redirection' # <

+ '5 8 default' # <(b)

+ '5 8 process-substitution' # <(b)

+ '5 6 process-substitution-delimiter' # <(

+ '7 7 alias' # b

+ '8 8 process-substitution-delimiter' # )

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-self.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-self.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..c6f12b1a857f1827fdb046f6ab36d5ca4a89c0b3

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-self.zsh

@@ -0,0 +1,38 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+alias echo='echo foo'

+

+BUFFER='echo bar'

+

+expected_region_highlight=(

+ '1 4 alias' # echo

+ '6 8 default' # bar

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-self2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-self2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..fd6ae03f3f39f76d1eda319434aaed560625e937

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-self2.zsh

@@ -0,0 +1,37 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+alias cat='cat | cat'

+

+BUFFER='cat'

+

+expected_region_highlight=(

+ '1 3 alias' # cat

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-to-dir.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-to-dir.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..30390d42519611e3f6ecfc5d6e82617b0f303866

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-to-dir.zsh

@@ -0,0 +1,36 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+alias x=/

+BUFFER= x'

+

+expected_region_highlight=(

+ '1 1 unknown-token' # x (/)

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-to-dir1b.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-to-dir1b.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..62ec5213dda25e2f5bf34c401a2d9696671dd95f

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-to-dir1b.zsh

@@ -0,0 +1,37 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+setopt autocd

+alias x=/

+BUFFER= x'

+

+expected_region_highlight=(

+ '1 1 alias' # x

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-unknown-token1.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-unknown-token1.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..9c996bfe14d2268b8cbca4abf695276276e4c740

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-unknown-token1.zsh

@@ -0,0 +1,37 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2019 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+alias a=b b=foo

+

+BUFFER='a '

+

+expected_region_highlight=(

+ '1 1 unknown-token' # a

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-unknown-token2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-unknown-token2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..ab9facd60a15ebcbd18689c8721ea43b9818ccb3

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias-unknown-token2.zsh

@@ -0,0 +1,37 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2019 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+alias a='() { ls "$@" ; foo }'

+

+BUFFER='a '

+

+expected_region_highlight=(

+ '1 1 unknown-token' # a

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..4cafa8041e5ece62b1f4199ebc369244697cf3c0

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/alias.zsh

@@ -0,0 +1,53 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+alias alias1="ls"

+alias -s alias2="echo"

+function alias1() {} # to check that it's highlighted as an alias, not as a function

+

+BUFFER='x.alias2; alias1; alias2'

+

+# Set expected_region_highlight as a function of zsh version.

+#

+# Highlight of suffix alias requires zsh-5.1.1 or newer; see issue #126,

+# and commit 36403 to zsh itself. Therefore, check if the requisite zsh

+# functionality is present, and skip verifying suffix-alias highlighting

+# if it isn't.

+expected_region_highlight=()

+if zmodload -e zsh/parameter || [[ "$(type -w x.alias2)" == *suffix* ]]; then

+ expected_region_highlight+=(

+ "1 8 suffix-alias" # x.alias2

+ )

+fi

+expected_region_highlight+=(

+ "9 9 commandseparator" # ;

+ "11 16 alias" # alias1

+ "17 17 commandseparator" # ;

+ "19 24 unknown-token" # alias2

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/always1.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/always1.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..ae40a72f7cec87110e24b9599d2694f52234cb90

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/always1.zsh

@@ -0,0 +1,41 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='{ ls } always { pwd }'

+

+expected_region_highlight=(

+ '1 1 reserved-word' # {

+ '3 4 command' # ls

+ '6 6 reserved-word' # }

+ '8 13 reserved-word' # always

+ '15 15 reserved-word' # {

+ '17 19 builtin' # pwd

+ '21 21 reserved-word' # }

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/always2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/always2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..991137c22e260e2b16253e4cce58c3625d5d3a31

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/always2.zsh

@@ -0,0 +1,43 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= {\nls\n} always { pwd }'

+

+expected_region_highlight=(

+ '1 1 reserved-word' # {

+ '2 2 commandseparator' # \n

+ '3 4 command' # ls

+ '5 5 commandseparator' # \n

+ '6 6 reserved-word' # }

+ '8 13 reserved-word' # always

+ '15 15 reserved-word' # {

+ '17 19 builtin' # pwd

+ '21 21 reserved-word' # }

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/always3.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/always3.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..d41beeb5d5562ddbc227c2cc674f5b15ffa431fc

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/always3.zsh

@@ -0,0 +1,43 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+setopt ignorebraces

+BUFFER='echo { foo } always { bar }'

+

+expected_region_highlight=(

+ '1 4 builtin' # echo

+ '6 6 default' # {

+ '8 10 default' # foo

+ '12 12 default' # }

+ '14 19 default' # always

+ '21 21 default' # {

+ '23 25 default' # bar

+ '27 27 default' # }

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/anonymous-function.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/anonymous-function.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..9d67fb1d0cadd8076328584c2403089f0e8643c2

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/anonymous-function.zsh

@@ -0,0 +1,44 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='() echo hello; () { echo world } "argument"'

+

+expected_region_highlight=(

+ "1 2 reserved-word" # ()

+ "4 7 builtin" # echo

+ "9 13 default" # hello

+ "14 14 commandseparator" # ;

+ "16 17 reserved-word" # ()

+ "19 19 reserved-word" # {

+ "21 24 builtin" # echo

+ "26 30 default" # world

+ "32 32 reserved-word" # }

+ "34 43 default" # "argument"

+ "34 43 double-quoted-argument" # "argument"

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arg0-colon.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arg0-colon.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..8955bd28cdda7cd5dae76799b372f0de51434f22

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arg0-colon.zsh

@@ -0,0 +1,35 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER=''\''x: /'

+

+expected_region_highlight=(

+ '1 5 unknown-token' # \'x: /

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arith-cmdsubst-mess.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arith-cmdsubst-mess.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..82268ac19cf2834c01fb46fbf67a901ec9ebefa3

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arith-cmdsubst-mess.zsh

@@ -0,0 +1,46 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= : $((ls); (ls))'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 15 default' # $((ls); (ls))

+ '3 15 command-substitution-unquoted' # $((ls); (ls))

+ '3 4 command-substitution-delimiter-unquoted' # $(

+ '5 5 reserved-word' # (

+ '6 7 command' # ls

+ '8 8 reserved-word' # )

+ '9 9 commandseparator' # ;

+ '11 11 reserved-word' # (

+ '12 13 command' # ls

+ '14 14 reserved-word' # )

+ '15 15 command-substitution-delimiter-unquoted' # )

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arith1.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arith1.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..0462f738f6ee4a8f8c8aab9af5af787857d74c25

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arith1.zsh

@@ -0,0 +1,37 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= : $(( 6 * 9 ))'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 14 default' # $(( 6 * 9 ))

+ '3 14 arithmetic-expansion' # $(( 6 * 9 ))

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arith2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arith2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..af981d7c99cd3c10dcbff2c7d4768699fb18f160

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arith2.zsh

@@ -0,0 +1,38 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= : "$(( 6 * 9 ))"'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 16 default' # "$(( 6 * 9 ))"

+ '3 16 double-quoted-argument' # "$(( 6 * 9 ))"

+ '4 15 arithmetic-expansion' # $(( 6 * 9 ))

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arithmetic-command-substitution.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arithmetic-command-substitution.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..07db0fb29759342f3abe44c287749ecfedf84a7b

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arithmetic-command-substitution.zsh

@@ -0,0 +1,42 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= : $(( $(echo 2) + 2 ))'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 22 default' # $(( $(echo 2) + 2 ))

+ '3 22 arithmetic-expansion' # $(( $(echo 2) + 2 ))

+ '7 15 command-substitution-quoted' # $(echo 2)

+ '7 8 command-substitution-delimiter-quoted' # $(

+ '9 12 builtin' # echo

+ '14 14 default' # 2

+ '15 15 command-substitution-delimiter' # )

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arithmetic-doubled-parens.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arithmetic-doubled-parens.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..d582d67cae0c2322010fdb3636d2fc1bf5367521

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arithmetic-doubled-parens.zsh

@@ -0,0 +1,37 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= : $(( ((42)) ))'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 15 default' # $(( ((42)) ))

+ '3 15 arithmetic-expansion' # $(( ((42)) ))

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arithmetic-empty.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arithmetic-empty.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..bd759966d880fc937c3ce2bae543ecdcf1582acf

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arithmetic-empty.zsh

@@ -0,0 +1,39 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= : "foo"$(())"bar"'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 17 default' # "foo"$(())"bar"

+ '3 7 double-quoted-argument' # "foo"

+ '8 12 arithmetic-expansion' # $(())

+ '13 17 double-quoted-argument' # "bar"

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arithmetic-evaluation.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arithmetic-evaluation.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..e0eb6e751a1423e48cc699e225a855059b706bf0

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arithmetic-evaluation.zsh

@@ -0,0 +1,40 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# Must be at command word, since the word following 'if' isn't currently considered

+# a command word (issue #207).

+#

+# An opening '((' without matching '))' is highlighted correctly under zsh-5.1.1-52-g4bed2cf

+# or newer, only (issue #188).

+BUFFER='(( x == 42 ))'

+

+expected_region_highlight=(

+ "1 2 reserved-word" # ((

+ "12 13 reserved-word" # ))

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arithmetic-hist-expn.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arithmetic-hist-expn.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..79af72330cb7337b5439602867bdb6ad4ea651d1

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arithmetic-hist-expn.zsh

@@ -0,0 +1,38 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= : $(( \!\! ))'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 11 default' # $(( !! ))

+ '3 11 arithmetic-expansion' # $(( !! ))

+ '7 8 history-expansion "issue #713"' # !!

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arithmetic-invalid-chars.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arithmetic-invalid-chars.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..9ace43834796935ea7aa18fa65982b29fae3735e

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arithmetic-invalid-chars.zsh

@@ -0,0 +1,39 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= : $(( 0 * 1\'\'000 ))'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 19 default' # $(( 0 * 1\'\'000 ))

+ '3 19 arithmetic-expansion' # $(( 0 * 1\'\'000 ))

+ '12 12 unknown-token' # \'

+ '13 13 unknown-token' # \'

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arithmetic-multiplication.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arithmetic-multiplication.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..65df0c9fe316605df5f6dd9619274443d7fb251d

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arithmetic-multiplication.zsh

@@ -0,0 +1,39 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= : foo*$(( 42 * 1729 ))*bar'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 26 default' # foo*$(( 42 * 1729 ))*bar

+ '6 6 globbing' # *

+ '7 22 arithmetic-expansion' # $(( 42 * 1729 ))

+ '23 23 globbing' # *

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arithmetic-nested.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arithmetic-nested.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..d734cd34bd988488ff3fb1515293bd235b657ebc

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arithmetic-nested.zsh

@@ -0,0 +1,38 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= : $(( $(( 1 + 2 )) * 3 ))'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 25 default' # $(( $(( 1 + 2 )) * 3 ))

+ '3 25 arithmetic-expansion' # $(( $(( 1 + 2 )) * 3 ))

+ '7 18 arithmetic-expansion' # $(( 1 + 2 ))

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arithmetic-quoted.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arithmetic-quoted.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..917ddf78969357ec15a117e58f8e3f40767ae2f2

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arithmetic-quoted.zsh

@@ -0,0 +1,38 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= : "$(( 1 + 1 ))"'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 16 default' # "$(( 1 + 1 ))"

+ '3 16 double-quoted-argument' # "$(( 1 + 1 ))"

+ '4 15 arithmetic-expansion' # $(( 1 + 1 ))

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arithmetic-unclosed.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arithmetic-unclosed.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..aa4eac7aca48739dfdc6ae1620f2e6f9660dbf81

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arithmetic-unclosed.zsh

@@ -0,0 +1,37 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= : $(( 1'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 7 default' # $(( 1

+ '3 7 arithmetic-expansion' # $(( 1

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arithmetic-unfinished.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arithmetic-unfinished.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..916c3dad036555edf6782457b2ca518205724973

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/arithmetic-unfinished.zsh

@@ -0,0 +1,41 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= : $(( 1729 )'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 12 default' # $(( 1729 )

+ '3 12 arithmetic-expansion' # $(( 1729 )

+)

+

+if [[ ${(z):-'$('} == '$( ' ]]; then # ignore zsh 5.0.8 bug

+ expected_region_highlight[2]='3 13 default' # $(( 1729 )

+fi

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/array-cmdsep1.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/array-cmdsep1.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..2fd55c034e37aa83cd1421d37c46d1f9ae9e317d

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/array-cmdsep1.zsh

@@ -0,0 +1,45 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2019 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= a=( foo | bar )'

+bar(){}

+

+expected_region_highlight=(

+ '1 3 assign' # a=(

+ '3 3 reserved-word' # (

+ '5 7 default' # foo

+ '9 9 unknown-token' # |

+ # zsh reports a parse error at this point. Nevertheless, we test how we

+ # highlight the remainder of $BUFFER. Currently we recover by treating the pipe

+ # as a command separator. That's not the only reasonable behaviour, though; if

+ # we change the behaviour, we should adjust the following expectations accordingly.

+ '11 13 function' # bar

+ '15 15 unknown-token' # )

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/array-cmdsep2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/array-cmdsep2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..0bda676151bece5700af84944bd86d0c431a4713

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/array-cmdsep2.zsh

@@ -0,0 +1,41 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2019 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= a=( foo ; bar )'

+

+expected_region_highlight=(

+ '1 3 assign' # a=(

+ '3 3 reserved-word' # (

+ '5 7 default' # foo

+ '9 9 unknown-token' # ; (not commandseparator; see highlighter source code)

+ '11 13 default' # bar

+ '15 15 assign' # )

+ '15 15 reserved-word' # )

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/array-cmdsep3.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/array-cmdsep3.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..b4b3687c26a2559961d262823b83038531a7df23

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/array-cmdsep3.zsh

@@ -0,0 +1,41 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2019 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= a=( foo \n bar )'

+

+expected_region_highlight=(

+ '1 3 assign' # a=(

+ '3 3 reserved-word' # (

+ '5 7 default' # foo

+ '9 9 commandseparator' # \n

+ '11 13 default' # bar

+ '15 15 assign' # )

+ '15 15 reserved-word' # )

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-append.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-append.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..feb68e53498944456d03689d221f909aa0e17a96

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-append.zsh

@@ -0,0 +1,39 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='a+=(lorem ipsum)'

+

+expected_region_highlight=(

+ "1 4 assign" # a+=(

+ "4 4 reserved-word" # (

+ "5 9 default" # lorem

+ "11 15 default" # ipsum

+ "16 16 assign" # )

+ "16 16 reserved-word" # )

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-argv.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-argv.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..ec5acc24945ed04e67413f34039941f8221451be

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-argv.zsh

@@ -0,0 +1,38 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+touch foo

+BUFFER='42=foo 43+=bar'

+

+expected_region_highlight=(

+ "1 6 assign" # 42=foo

+ "4 6 path" # foo

+ "8 14 assign" # 43+=bar

+ "12 14 default" # bar

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-array.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-array.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..ef0a6669d787de53cca08f8921f1fc94792aa5ca

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-array.zsh

@@ -0,0 +1,41 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='(A=(hello world))'

+

+expected_region_highlight=(

+ "1 1 reserved-word" # (

+ "2 4 assign" # A=(

+ "4 4 reserved-word" # (

+ "5 9 default" # hello

+ "11 15 default" # world

+ "16 16 assign" # )

+ "16 16 reserved-word" # )

+ "17 17 reserved-word" # )

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-array2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-array2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..2d48721161c392f07c7c4af10b42c0351458dbae

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-array2.zsh

@@ -0,0 +1,40 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='A=(hello world) ls'

+

+expected_region_highlight=(

+ "1 3 assign" # A=(

+ "3 3 reserved-word" # (

+ "4 8 default" # hello

+ "10 14 default" # world

+ "15 15 assign" # )

+ "15 15 reserved-word" # )

+ "17 18 command" # ls

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-array3.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-array3.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..5eb645e66ee0c87c291af1d1a54e6b7896da5bda

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-array3.zsh

@@ -0,0 +1,41 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='A=(hello world) b=42'

+

+expected_region_highlight=(

+ "1 3 assign" # A=(

+ "3 3 reserved-word" # (

+ "4 8 default" # hello

+ "10 14 default" # world

+ "15 15 assign" # )

+ "15 15 reserved-word" # )

+ "17 20 assign" # b=42

+ "19 20 default" # 42

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-invalid-command.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-invalid-command.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..557327e8e4d1e19fa81f21ef8050f134adcdeaa4

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-invalid-command.zsh

@@ -0,0 +1,37 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= x=y nosuchcommand'

+

+expected_region_highlight=(

+ '1 3 assign' # x=y

+ '3 3 default' # y

+ '5 17 unknown-token' # nosuchcommand

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-not-array.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-not-array.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..651ab80a4f3d23b165c8c6b16f88c47d7083b836

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-not-array.zsh

@@ -0,0 +1,36 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='a=foo( bar ) :'

+

+expected_region_highlight=(

+ '1 12 assign' # a=foo( bar )

+ '3 12 default' # foo( bar )

+ '14 14 builtin' # :

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-not-array2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-not-array2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..dfda106e34e2f53c9c26cd737624b468b32bfcc6

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-not-array2.zsh

@@ -0,0 +1,36 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='a=foo\( :'

+

+expected_region_highlight=(

+ '1 7 assign' # a=foo\(

+ '3 7 default' # foo\(

+ '9 9 builtin' # :

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-quoted-cmdsubst.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-quoted-cmdsubst.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..d4a62dfab64ca0ec41130cab0804a908c5aec9cb

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-quoted-cmdsubst.zsh

@@ -0,0 +1,45 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= x="$(ls x y z)"'

+

+expected_region_highlight=(

+ '1 15 assign' # x="$(ls x y z)"

+ '3 15 default' # "$(ls x y z)"

+ '3 3 double-quoted-argument' # "

+ '15 15 double-quoted-argument' # "

+ '4 14 command-substitution-quoted' # $(ls x y z)

+ '4 5 command-substitution-delimiter-quoted' # $(

+ '6 7 command' # ls

+ '9 9 default' # x

+ '11 11 default' # y

+ '13 13 default' # z

+ '14 14 command-substitution-delimiter-quoted' # )

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-semicolon.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-semicolon.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..f748c94ee6eb42a32232cb0bf0f4381d70af2298

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-semicolon.zsh

@@ -0,0 +1,39 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='A=1; echo hello world'

+

+expected_region_highlight=(

+ "1 3 assign" # A=1

+ "3 3 default" # 1

+ "4 4 commandseparator" # ;

+ "6 9 builtin" # echo

+ "11 15 default" # hello

+ "17 21 default" # world

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-subshell.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-subshell.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..202288938ea17bf9b95fc92e83a2fd706746576e

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-subshell.zsh

@@ -0,0 +1,37 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='(A=1)'

+

+expected_region_highlight=(

+ "1 1 reserved-word" # (

+ "2 4 assign" # A=1

+ "4 4 default" # 1

+ "5 5 reserved-word" # )

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-value-quote1.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-value-quote1.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..b6d04fe03f206f9e8fec2739b9010a873ad12676

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-value-quote1.zsh

@@ -0,0 +1,37 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= s="foo\'bar"'

+

+expected_region_highlight=(

+ '1 11 assign' # s="foo'bar"

+ '3 11 default' # "foo'bar"

+ '3 11 double-quoted-argument' # "foo'bar"

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-value-quote2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-value-quote2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..3c5f93b47d2ed726391c33a3b3fe537f83abab36

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign-value-quote2.zsh

@@ -0,0 +1,37 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= s="foo \'\' bar"'

+

+expected_region_highlight=(

+ '1 14 assign' # s="foo '' bar"

+ '3 14 default' # "foo '' bar"

+ '3 14 double-quoted-argument' # "foo '' bar"

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..c6e8532dd4f9e8b32f9c9e623560edbad69409d4

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assign.zsh

@@ -0,0 +1,42 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='A=1 b=("foo" bar)'

+

+expected_region_highlight=(

+ "1 3 assign" # A=1

+ "3 3 default" # 1

+ "5 7 assign" # b=(

+ "7 7 reserved-word" # (

+ "8 12 default" # "foo"

+ "8 12 double-quoted-argument" # "foo"

+ "14 16 default" # bar

+ "17 17 assign" # )

+ "17 17 reserved-word" # )

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assignment-before-resword1.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assignment-before-resword1.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..b271d4aa653e47353031499e1e1b0e49eeae280b

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assignment-before-resword1.zsh

@@ -0,0 +1,40 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2017 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= foo=bar { :; }'

+

+expected_region_highlight=(

+ '1 7 assign' # foo=bar

+ '5 7 default' # bar

+ '9 9 unknown-token' # {

+ '11 11 builtin' # :

+ '12 12 commandseparator' # ;

+ '14 14 reserved-word' # }

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assignment-before-resword2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assignment-before-resword2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..247e41eb496109c1beed6e9f496d70f19dc5c048

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assignment-before-resword2.zsh

@@ -0,0 +1,40 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2017 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= foo=bar ( :; )'

+

+expected_region_highlight=(

+ '1 7 assign' # foo=bar

+ '5 7 default' # bar

+ '9 9 unknown-token' # (

+ '11 11 builtin' # :

+ '12 12 commandseparator' # ;

+ '14 14 unknown-token' # )

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assignment-before-resword3.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assignment-before-resword3.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..5204189573091172b2be6760b59ca46029dd1816

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assignment-before-resword3.zsh

@@ -0,0 +1,37 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2017 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= foo=bar (( foo ))'

+

+expected_region_highlight=(

+ '1 7 assign' # foo=bar

+ '5 7 default' # bar

+ '9 17 unknown-token' # (( foo ))

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assignment-before-resword4.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assignment-before-resword4.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..cc3d5231e9ed5ec4dd1a3d4d560ce9ce0a0d421e

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assignment-before-resword4.zsh

@@ -0,0 +1,40 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2017 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= foo=bar [[ -n foo ]]'

+

+expected_region_highlight=(

+ '1 7 assign' # foo=bar

+ '5 7 default' # bar

+ '9 10 unknown-token' # [[

+ '12 13 single-hyphen-option' # -n

+ '15 17 default' # foo

+ '19 20 reserved-word' # ]]

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assignment-before-resword5.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assignment-before-resword5.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..33f1ed144656a96725fc985ec36118637ba45737

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assignment-before-resword5.zsh

@@ -0,0 +1,38 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2017 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= foo=bar \! :'

+

+expected_region_highlight=(

+ '1 7 assign' # foo=bar

+ '5 7 default' # bar

+ '9 9 unknown-token' # \!

+ '11 11 builtin' # :

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assignment-quoted.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assignment-quoted.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..18638adb1099f99372c964526fbb46de17a2a214

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/assignment-quoted.zsh

@@ -0,0 +1,37 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= 1="foo"'

+

+expected_region_highlight=(

+ '1 7 assign' # 1="foo"

+ '3 7 default' # "foo"

+ '3 7 double-quoted-argument' # "foo"

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/back-quoted-argument.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/back-quoted-argument.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..d504a2c7f5ab6fac0f97fc72edbd70271ac061dd

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/back-quoted-argument.zsh

@@ -0,0 +1,58 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='echo `echo \`42\`` "is `echo equal` to" `echo 6 times 9'

+

+expected_region_highlight=(

+ "1 4 builtin" # echo

+ "6 18 default" # `echo \`42\``

+ "6 18 back-quoted-argument" # `echo \`42\``

+ "6 6 back-quoted-argument-delimiter" # `

+ "7 10 builtin" # echo

+ "12 17 default" # \`42\`

+ "12 17 back-quoted-argument" # \`42\`

+ "12 13 back-quoted-argument-delimiter" # \`

+ "14 15 unknown-token" # 42

+ "16 17 back-quoted-argument-delimiter" # \`

+ "18 18 back-quoted-argument-delimiter" # `

+ "20 39 default" # "is `echo equal` to"

+ "20 39 double-quoted-argument" # "is `echo equal` to"

+ "24 35 back-quoted-argument" # `echo equal`

+ "24 24 back-quoted-argument-delimiter" # `

+ "25 28 builtin" # echo

+ "30 34 default" # equal

+ "35 35 back-quoted-argument-delimiter" # `

+ "41 55 default" # `echo 6 times 9

+ "41 55 back-quoted-argument-unclosed" # `echo 6 times 9

+ "41 41 back-quoted-argument-delimiter" # `

+ "42 45 builtin" # echo

+ "47 47 default" # 6

+ "49 53 default" # times

+ "55 55 default" # 9

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/back-quoted-open.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/back-quoted-open.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..f188d811b7fc0e5a08820000a72891edd4bb6f71

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/back-quoted-open.zsh

@@ -0,0 +1,41 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+touch foo

+BUFFER= : `ls fo'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 8 default' # `ls fo

+ '3 8 back-quoted-argument-unclosed' # `ls fo

+ '3 3 back-quoted-argument-delimiter' # `

+ '4 5 command' # ls

+ '7 8 path_prefix' # fo

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/backslash-continuation.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/backslash-continuation.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..ebcf2e17e4e445f6c6fb0c8a8a70345852e25b5e

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/backslash-continuation.zsh

@@ -0,0 +1,35 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+PREBUFFER= echo \\\n'

+BUFFER='noglob'

+

+expected_region_highlight=(

+ "1 6 default" # 'noglob' highlighted as a string, not as a precomand

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/backslash-continuation2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/backslash-continuation2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..9e2ca6232a3b0bc8952c6689f2efd6115db0c8ae

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/backslash-continuation2.zsh

@@ -0,0 +1,37 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= echo foo\\\nbar"baz"'

+

+expected_region_highlight=(

+ '1 4 builtin' # echo

+ '6 18 default "issue #705"' # foo\\\nbar"baz"

+ '14 18 double-quoted-argument "issue #705"' # "baz"

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/backslash-space.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/backslash-space.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..0d8a63c14e7ecc35b0638ed87bdca8d61892bf57

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/backslash-space.zsh

@@ -0,0 +1,39 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= echo \\ \'foo\' ; ls'

+

+expected_region_highlight=(

+ '1 4 builtin' # echo

+ '6 12 default' # \ \'foo\'

+ '8 12 single-quoted-argument' # 'foo'

+ '14 14 commandseparator' # ;

+ '16 17 command' # ls

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/backslash.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/backslash.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..ea0977f6b65d9962c4d41e11986ee46b7d3a9aea

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/backslash.zsh

@@ -0,0 +1,34 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= \\'

+

+expected_region_highlight=(

+ '1 1 unknown-token' # \\

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/bang-assign-array.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/bang-assign-array.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..a54cf2d010c26f11b53dc2f94603d60b47facd82

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/bang-assign-array.zsh

@@ -0,0 +1,42 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= foo=(bar abaz) \! ls'

+

+expected_region_highlight=(

+ '1 5 assign' # foo=(

+ '5 5 reserved-word' # (

+ '6 8 default' # bar

+ '10 13 default' # abaz

+ '14 14 assign' # )

+ '14 14 reserved-word' # )

+ '16 16 unknown-token' # \!

+ '18 19 command' # ls

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/bang-assign-scalar.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/bang-assign-scalar.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..e91905004e3a6707fb99570ea7edd6e21e56ca72

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/bang-assign-scalar.zsh

@@ -0,0 +1,38 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= foo=bar \! ls'

+

+expected_region_highlight=(

+ '1 7 assign' # foo=bar

+ '5 7 default' # bar

+ '9 9 unknown-token' # \!

+ '11 12 command' # ls

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/bang-pipeline.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/bang-pipeline.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..fef25f1097d3c154813cb600f80017e3d4e31238

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/bang-pipeline.zsh

@@ -0,0 +1,39 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= \! ls | \! ls'

+

+expected_region_highlight=(

+ '1 1 reserved-word' # \!

+ '3 4 command' # ls

+ '6 6 commandseparator' # |

+ '8 8 unknown-token' # \!

+ '10 11 command' # ls

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/braces1.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/braces1.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..3c5b1f0f1d1344d4cd1dabf5087acd44c6f1de63

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/braces1.zsh

@@ -0,0 +1,41 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= () { echo }\n}'

+# no special setopts

+

+expected_region_highlight=(

+ '1 2 reserved-word' # ()

+ '4 4 reserved-word' # {

+ '6 9 builtin' # echo

+ '11 11 reserved-word' # }

+ '12 12 commandseparator' # \n

+ '13 13 unknown-token' # }

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/braces2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/braces2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..a3ea7c95a07885e24c02a633dbba955e18b8d1ba

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/braces2.zsh

@@ -0,0 +1,41 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= () { echo }\n}'

+setopt ignorebraces

+

+expected_region_highlight=(

+ '1 2 reserved-word' # ()

+ '4 4 reserved-word' # {

+ '6 9 builtin' # echo

+ '11 11 default' # }

+ '12 12 commandseparator' # \n

+ '13 13 reserved-word' # }

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-matching1.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-matching1.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..7cc6de542c43e24ffabdc97c7aeff1fa5b44f211

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-matching1.zsh

@@ -0,0 +1,38 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='[[ -n foo ]]'

+

+expected_region_highlight=(

+ '1 2 reserved-word' # [[

+ '4 5 single-hyphen-option' # -n

+ '7 9 default' # foo

+ '11 12 reserved-word' # ]]

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-matching2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-matching2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..19c7f0d76cd6fa9ed689aad153b2a4b7a198b3cf

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-matching2.zsh

@@ -0,0 +1,38 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='[ -n foo ]'

+

+expected_region_highlight=(

+ '1 1 builtin' # [

+ '3 4 single-hyphen-option' # -n

+ '6 8 default' # foo

+ '10 10 builtin' # ]

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-mismatch1.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-mismatch1.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..5e6e80f28917e7e67908cee7618c8a27e9cb132a

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-mismatch1.zsh

@@ -0,0 +1,39 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='() { echo foo )'

+

+expected_region_highlight=(

+ '1 2 reserved-word' # ()

+ '4 4 reserved-word' # {

+ '6 9 builtin' # echo

+ '11 13 default' # foo

+ '15 15 unknown-token' # )

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-mismatch10-if-negative.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-mismatch10-if-negative.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..9d0b53c6b6e69879c15d7344b980f01983ad6936

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-mismatch10-if-negative.zsh

@@ -0,0 +1,42 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2017 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='elif true; then echo two; fi'

+

+expected_region_highlight=(

+ '1 4 unknown-token' # elif

+ '6 9 builtin' # true

+ '10 10 commandseparator' # ;

+ '12 15 unknown-token' # then

+ '17 20 builtin' # echo

+ '22 24 default' # two

+ '25 25 commandseparator' # ;

+ '27 28 unknown-token' # fi

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-mismatch2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-mismatch2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..2d98ac21bb4bdeffca3a55fe52456b1be773c119

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-mismatch2.zsh

@@ -0,0 +1,39 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='() ( echo foo }'

+

+expected_region_highlight=(

+ '1 2 reserved-word' # ()

+ '4 4 reserved-word' # (

+ '6 9 builtin' # echo

+ '11 13 default' # foo

+ '15 15 unknown-token' # }

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-mismatch3.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-mismatch3.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..e33040a85c4ddd2289332e4705f669e71ba5a2b0

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-mismatch3.zsh

@@ -0,0 +1,36 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='echo )'

+

+expected_region_highlight=(

+ '1 4 builtin' # echo

+ '6 6 unknown-token' # )

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-mismatch4.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-mismatch4.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..a9b15dcdf79415bb4639175e8dc2132dc6fffc75

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-mismatch4.zsh

@@ -0,0 +1,36 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='echo }'

+

+expected_region_highlight=(

+ '1 4 builtin' # echo

+ '6 6 unknown-token' # }

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-mismatch5.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-mismatch5.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..21e8bb2b9b5a649e5e51785953f6e418afb00943

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-mismatch5.zsh

@@ -0,0 +1,37 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='echo { }'

+

+expected_region_highlight=(

+ '1 4 builtin' # echo

+ '6 6 default' # {

+ '8 8 unknown-token' # }

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-mismatch6.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-mismatch6.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..9df8388307f90c4e3ceab9c24e58bbf32adff2f5

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-mismatch6.zsh

@@ -0,0 +1,40 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='(repeat 1; do)'

+

+expected_region_highlight=(

+ '1 1 reserved-word' # (

+ '2 7 reserved-word' # repeat

+ '9 9 default' # 1

+ '10 10 commandseparator' # ;

+ '12 13 reserved-word' # do

+ '14 14 unknown-token' # )

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-mismatch7.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-mismatch7.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..1caa936c99fbcbf070271666561c495327ef1170

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-mismatch7.zsh

@@ -0,0 +1,45 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2012 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='for n in *; do echo $n; end'

+

+expected_region_highlight=(

+ '1 3 reserved-word' # for

+ '5 5 default' # n

+ '7 8 default' # in

+ '10 10 default' # *

+ '10 10 globbing' # *

+ '11 11 commandseparator' # ;

+ '13 14 reserved-word' # do

+ '16 19 builtin' # echo

+ '21 22 default' # $n

+ '23 23 commandseparator' # ;

+ '25 27 unknown-token' # end

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-mismatch8-if-positive.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-mismatch8-if-positive.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..d6838f0035dda3114a68f58e404fa625bba27084

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-mismatch8-if-positive.zsh

@@ -0,0 +1,53 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2017 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='if false; then echo one; elif true; then echo two; else echo three; fi'

+

+expected_region_highlight=(

+ '1 2 reserved-word' # if

+ '4 8 builtin' # false

+ '9 9 commandseparator' # ;

+ '11 14 reserved-word' # then

+ '16 19 builtin' # echo

+ '21 23 default' # one

+ '24 24 commandseparator' # ;

+ '26 29 reserved-word' # elif

+ '31 34 builtin' # true

+ '35 35 commandseparator' # ;

+ '37 40 reserved-word' # then

+ '42 45 builtin' # echo

+ '47 49 default' # two

+ '50 50 commandseparator' # ;

+ '52 55 reserved-word' # else

+ '57 60 builtin' # echo

+ '62 66 default' # three

+ '67 67 commandseparator' # ;

+ '69 70 reserved-word' # fi

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-mismatch8.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-mismatch8.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..07a42e36ccb7832d60086d9024b621cf70c10f2b

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-mismatch8.zsh

@@ -0,0 +1,38 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='(ls&)'

+

+expected_region_highlight=(

+ '1 1 reserved-word' # (

+ '2 3 command' # ls

+ '4 4 commandseparator' # &

+ '5 5 reserved-word' # )

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-mismatch9-if-positive.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-mismatch9-if-positive.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..87c1ba79aafa4b733012adf81f954bf20c3a6919

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-mismatch9-if-positive.zsh

@@ -0,0 +1,42 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2017 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='if false; then echo one; fi'

+

+expected_region_highlight=(

+ '1 2 reserved-word' # if

+ '4 8 builtin' # false

+ '9 9 commandseparator' # ;

+ '11 14 reserved-word' # then

+ '16 19 builtin' # echo

+ '21 23 default' # one

+ '24 24 commandseparator' # ;

+ '26 27 reserved-word' # fi

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-premature-termination.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-premature-termination.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..fa813da9975231fafeedf34cf2c11c44281a223d

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/brackets-premature-termination.zsh

@@ -0,0 +1,40 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='[[ -n foo; echo ]]'

+

+expected_region_highlight=(

+ '1 2 reserved-word' # [[

+ '4 5 single-hyphen-option' # -n

+ '7 9 default' # foo

+ '10 10 unknown-token' # ;

+ '12 15 builtin' # echo

+ '17 18 default' # ]]

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/cdpath-abspath.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/cdpath-abspath.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..64707b2f5369e9ca20e549b5b5e53fcba2b54247

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/cdpath-abspath.zsh

@@ -0,0 +1,38 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+cdpath=( $PWD )

+mkdir foo foo/bar

+

+BUFFER="/foo"

+

+expected_region_highlight=(

+ '1 4 unknown-token' # x (/)

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/cmdpos-elision-partial.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/cmdpos-elision-partial.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..6eda0d741f2748c93115ec56a2179b7e338412ea

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/cmdpos-elision-partial.zsh

@@ -0,0 +1,44 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# Test elision of some, but not all of the words

+# See issue #667 for the case of eliding all words

+local -a x; x=(sudo "")

+

+sudo(){}

+BUFFER= $x -u phy1729 ls'

+

+expected_region_highlight=(

+ '1 2 precommand' # $x

+ # The "" is elided. If it weren't elided, the «ls» would be highlighted as an ordinary argument.

+ '4 5 single-hyphen-option' # -u

+ '7 13 default' # phy1729

+ '15 16 command' # ls

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/command-substitution-adjacent.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/command-substitution-adjacent.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..3d5c0b9ea8dc2e731da3a690c0201cae8fc38bcc

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/command-substitution-adjacent.zsh

@@ -0,0 +1,45 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2019 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='echo "$(echo)$(echo)'

+

+expected_region_highlight=(

+ '1 4 builtin' # echo

+ '6 20 default' # "$(echo)$(echo)

+ '6 6 double-quoted-argument-unclosed' # "

+ '7 13 command-substitution-quoted' # $(echo)

+ '7 8 command-substitution-delimiter-quoted' # $(

+ '9 12 builtin' # echo

+ '13 13 command-substitution-delimiter-quoted' # )

+ '14 20 command-substitution-quoted' # $(echo)

+ '14 15 command-substitution-delimiter-quoted' # $(

+ '16 19 builtin' # echo

+ '20 20 command-substitution-delimiter-quoted' # )

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/command-substitution-in-assignment.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/command-substitution-in-assignment.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..fafda49c177b579818c86a5de476afcf05af70f9

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/command-substitution-in-assignment.zsh

@@ -0,0 +1,42 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= foo=$(echo bar) :'

+

+expected_region_highlight=(

+ '1 15 assign' # foo=$(echo bar)

+ '5 15 default' # $(echo bar)

+ '5 15 command-substitution-unquoted' # $(echo bar)

+ '5 6 command-substitution-delimiter-unquoted' # $(

+ '7 10 builtin' # echo

+ '12 14 default' # bar

+ '15 15 command-substitution-delimiter-unquoted' # )

+ '17 17 builtin' # :

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/command-substitution-unclosed.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/command-substitution-unclosed.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..3229dfcf4831c5660b38ae884ac344ccd3133dcd

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/command-substitution-unclosed.zsh

@@ -0,0 +1,45 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= : foo$(echo bar'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 15 default' # foo$(echo bar

+ '6 15 command-substitution-unquoted' # $(echo bar

+ '6 7 command-substitution-delimiter-unquoted' # $(

+ '8 11 builtin' # echo

+ '13 15 default' # bar

+)

+

+if [[ ${(z):-'$('} == '$( ' ]]; then # ignore zsh 5.0.8 bug

+ expected_region_highlight[2]='3 16 default' # foo$(echo bar

+ expected_region_highlight[3]='6 16 command-substitution-unquoted' # $(echo bar

+fi

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/commandseparator.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/commandseparator.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..f504847c4324803af9e04f6620ac695c0180b6bc

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/commandseparator.zsh

@@ -0,0 +1,38 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER=':; pwd &! ls'

+

+expected_region_highlight=(

+ "1 1 builtin" # :

+ "2 2 commandseparator" # ;

+ "4 6 builtin" # pwd

+ "8 9 commandseparator" # &!

+ "11 12 command" # ls

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/comment-followed.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/comment-followed.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..044f2830716a6282b3485c7fb31dd3a0bd6947d5

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/comment-followed.zsh

@@ -0,0 +1,39 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# see alias-comment1.zsh

+setopt interactivecomments

+BUFFER= # foo\ntrue'

+

+expected_region_highlight=(

+ '1 5 comment' # # foo

+ '6 6 commandseparator' # \n

+ '7 10 builtin' # true

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/comment-leading.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/comment-leading.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..b4c991059fc17407c0afbf97987c9eb4eb2720d3

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/comment-leading.zsh

@@ -0,0 +1,36 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+setopt interactive_comments

+

+BUFFER='# echo foo'

+

+expected_region_highlight=(

+ "1 10 comment" # # echo foo

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/comment-off.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/comment-off.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..0381bdb029221875a006273d7eeeb2fc5e2ddfbb

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/comment-off.zsh

@@ -0,0 +1,38 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+unsetopt interactive_comments

+

+BUFFER='# echo foo'

+

+expected_region_highlight=(

+ "1 1 unknown-token" # #

+ "3 6 default" # " echo foo"

+ "8 10 default" # " echo foo"

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/comments.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/comments.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..f3cc57e4f6ffaee0c3ae754ae52005626b3ac4ba

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/comments.zsh

@@ -0,0 +1,39 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+setopt interactive_comments

+

+BUFFER='echo "foo #bar" #baz # quux'

+

+expected_region_highlight=(

+ "1 4 builtin" # echo

+ "6 15 default" # "foo #bar"

+ "6 15 double-quoted-argument" # "foo #bar"

+ "17 27 comment" # #baz # quux

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/commmand-parameter.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/commmand-parameter.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..48d20ba8b258224269603184cb92c4a28b20385b

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/commmand-parameter.zsh

@@ -0,0 +1,45 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+local x=/usr/bin/env

+local y=sudo

+local -a z; z=(zsh -f)

+sudo(){}

+

+BUFFER='$x "argument"; $y; $z'

+

+expected_region_highlight=(

+ "1 2 command" # $x

+ "4 13 default" # "argument"

+ "4 13 double-quoted-argument" # "argument"

+ "14 14 commandseparator" # ;

+ "16 17 precommand" # $y (sudo)

+ "18 18 unknown-token" # ;

+ "20 21 command" # $z - 'zsh' being the command

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/control-flow.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/control-flow.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..a610bdc3d225154532bbd0fc547747c13023dfad

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/control-flow.zsh

@@ -0,0 +1,57 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='while if echo Hello; then ls /; else ls; fi; do stat "x"; done; repeat 10 ls'

+

+expected_region_highlight+=(

+ "1 5 reserved-word" # while

+ "7 8 reserved-word" # if

+ "10 13 builtin" # echo

+ "15 19 default" # Hello

+ "20 20 commandseparator" # ;

+ "22 25 reserved-word" # then

+ "27 28 command" # ls

+ "30 30 path" # /

+ "31 31 commandseparator" # ;

+ "33 36 reserved-word" # else

+ "38 39 command" # ls

+ "40 40 commandseparator" # ;

+ "42 43 reserved-word" # fi

+ "44 44 commandseparator" # ;

+ "46 47 reserved-word" # do

+ "49 52 command" # stat

+ "54 56 default" # "x"

+ "54 56 double-quoted-argument" # "x"

+ "57 57 commandseparator" # ;

+ "59 62 reserved-word" # done

+ "63 63 commandseparator" # ;

+ "65 70 reserved-word" # repeat

+ "72 73 default" # 10

+ "75 76 command" # ls

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/control-flow2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/control-flow2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..acf99e1d8364415539474cde39afe489f49ab75b

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/control-flow2.zsh

@@ -0,0 +1,40 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='repeat 42; do ls; done'

+

+expected_region_highlight+=(

+ "1 6 reserved-word" # repeat

+ "8 9 default" # 42

+ "10 10 commandseparator" # ;

+ "12 13 reserved-word" # do

+ "15 16 command" # ls

+ "17 17 commandseparator" # ;

+ "19 22 reserved-word" # done

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/control-flow3.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/control-flow3.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..58f507f9911095ec601d20645eb8e6c7a7d90bbd

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/control-flow3.zsh

@@ -0,0 +1,39 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='repeat 42; ls; pwd'

+

+expected_region_highlight+=(

+ "1 6 reserved-word" # repeat

+ "8 9 default" # 42

+ "10 10 commandseparator" # ;

+ "12 13 command" # ls

+ "14 14 commandseparator" # ;

+ "16 18 builtin" # pwd

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/cthulhu.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/cthulhu.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..c8119a8450a1f52e20fe08b0d6df46ce33518114

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/cthulhu.zsh

@@ -0,0 +1,70 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# 0000000 0 01111111111222222 222233333 3 333344 4 4 444444555555555 5 6 6666 6 6 6667777777777888 8 8 88888999 9 9999 9 9 00 00 0000001111

+# 1234567 8 90123456789012345 678901234 5 678901 2 3 456789012345678 9 0 1234 5 6 7890123456789012 3 4 56789012 3 4567 8 9 01 23 4567890123

+BUFFER= echo Ph\\\'ng`echo lui "mg"\\`echo lw\\\'nafh \\\\\\`echo Cthu"lhu\\\\\\` R\\\\\'ly$(echo eh wag\\\\\\`echo h\\\'nag\\\\\\`\'l\' fht)agn`'

+

+expected_region_highlight=(

+ '1 4 builtin' # echo

+ '6 113 default' # Ph\'ng`echo lui "mg"\`echo lw\'nafh \\\`echo Cthu"lhu\\\` R\\'ly$(echo eh wag\\\`echo h\'nag\\\`'l' fht)agn`

+ '12 113 back-quoted-argument' # `echo lui "mg"\`echo lw\'nafh \\\`echo Cthu"lhu\\\` R\\'ly$(echo eh wag\\\`echo h\'nag\\\`'l' fht)agn`

+ '12 12 back-quoted-argument-delimiter' # `

+ '13 16 builtin' # echo

+ '18 20 default' # lui

+ '22 112 default' # "mg"\`echo lw\'nafh \\\`echo Cthu"lhu\\\` R\\'ly$(echo eh wag\\\`echo h\'nag\\\`'l' fht)agn

+ '22 25 double-quoted-argument' # "mg"

+ '26 112 back-quoted-argument-unclosed' # \`echo lw\'nafh \\\`echo Cthu"lhu\\\` R\\'ly$(echo eh wag\\\`echo h\'nag\\\`'l' fht)agn

+ '26 27 back-quoted-argument-delimiter' # \`

+ '28 31 builtin' # echo

+ '33 40 default' # lw\'nafh

+ '42 62 default' # \\\`echo Cthu"lhu\\\`

+ '42 62 back-quoted-argument' # \\\`echo Cthu"lhu\\\`

+ '42 45 back-quoted-argument-delimiter' # \\\`

+ '46 49 builtin' # echo

+ '51 58 default' # Cthu"lhu

+ '55 58 double-quoted-argument-unclosed' # "lhu

+ '59 62 back-quoted-argument-delimiter' # \\\`

+ '64 112 default' # R\\'ly$(echo eh wag\\\`echo h\'nag\\\`'l' fht)agn

+ '70 109 command-substitution-unquoted' # $(echo eh wag\\\`echo h\'nag\\\`'l' fht)

+ '70 71 command-substitution-delimiter-unquoted' # $(

+ '72 75 builtin' # echo

+ '77 78 default' # eh

+ '80 104 default' # wag\\\`echo h\'nag\\\`'l'

+ '83 101 back-quoted-argument' # \\\`echo h\'nag\\\`

+ '83 86 back-quoted-argument-delimiter' # \\\`

+ '87 90 builtin' # echo

+ '92 97 default' # h\'nag

+ '98 101 back-quoted-argument-delimiter' # \\\`

+ '102 104 single-quoted-argument' # 'l'

+ '106 108 default' # fht

+ '109 109 command-substitution-delimiter-unquoted' # )

+ '113 113 unknown-token' # `

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/dinbrack1.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/dinbrack1.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..e2279d6b8e1b68e3c0afdcc6b0671351a1d1eff5

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/dinbrack1.zsh

@@ -0,0 +1,41 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= [[ foo && bar || baz ]]'

+

+expected_region_highlight=(

+ '1 2 reserved-word' # [[

+ '4 6 default' # foo

+ '8 9 default' # &&

+ '11 13 default' # bar

+ '15 16 default' # ||

+ '18 20 default' # baz

+ '22 23 reserved-word' # ]]

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/dirs_blacklist.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/dirs_blacklist.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..2d0222f0c22b475cb0f0ef96973628a3de6043f5

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/dirs_blacklist.zsh

@@ -0,0 +1,40 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+mkdir foo

+touch foo/bar

+BUFFER=": foo/bar $PWD/foo foo/b"

+ZSH_HIGHLIGHT_DIRS_BLACKLIST=($PWD/foo $PWD/bar)

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 9 default' # foo/bar

+ "11 $(( 14 + $#PWD )) default" # $PWD/foo

+ "$(( 16 + $#PWD )) $(( 20 + $#PWD )) default" # foo/b

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/dollar-dollar.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/dollar-dollar.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..e3f387ce2cb3e85e83ec656064d8ec30958ad1ee

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/dollar-dollar.zsh

@@ -0,0 +1,39 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER=': "$ $foo"'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 12 default' # "$ $foo"

+ '3 12 double-quoted-argument' # "$ $foo"

+ '4 5 dollar-double-quoted-argument' # $

+ '7 8 dollar-double-quoted-argument' # $

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/dollar-noise.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/dollar-noise.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..9bb11bd8d7734c967af375a050de1bbb972f0a8a

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/dollar-noise.zsh

@@ -0,0 +1,42 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER=': "$- $# $* $@ $?"'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 18 default' # "$- $# $* $@ $?"

+ '3 18 double-quoted-argument' # "$- $# $* $@ $?"

+ '4 5 dollar-double-quoted-argument' # $-

+ '7 8 dollar-double-quoted-argument' # $#

+ '10 11 dollar-double-quoted-argument' # $*

+ '13 14 dollar-double-quoted-argument' # $@

+ '16 17 dollar-double-quoted-argument' # $?

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/dollar-paren.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/dollar-paren.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..2bbcef18fcaecad298b06232e5aa3a87623b418a

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/dollar-paren.zsh

@@ -0,0 +1,49 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER=': "$(:)" "foo$(:)bar'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 8 default' # "$(:)"

+ '3 3 double-quoted-argument' # "$(:)"

+ '8 8 double-quoted-argument' # "$(:)"

+ '4 7 command-substitution-quoted' # $(:)

+ '4 5 command-substitution-delimiter-quoted' # $(

+ '6 6 builtin' # :

+ '7 7 command-substitution-delimiter-quoted' # )

+ '10 20 default' # "foo$(:)bar

+ '10 13 double-quoted-argument-unclosed' # "foo

+ '18 20 double-quoted-argument-unclosed' # bar

+ '14 17 command-substitution-quoted' # $(:)

+ '14 15 command-substitution-delimiter-quoted' # $(

+ '16 16 builtin' # :

+ '17 17 command-substitution-delimiter-quoted' # )

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/dollar-quoted.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/dollar-quoted.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..081a365be02056fca38a1329a49cde7686826682

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/dollar-quoted.zsh

@@ -0,0 +1,38 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER=": \ *' 'foo'"

+

+expected_region_highlight=(

+ "1 1 builtin" # :

+ "3 6 default" # *'

+ "3 6 dollar-quoted-argument" # *' - not a glob

+ "8 12 default" # 'foo'

+ "8 12 single-quoted-argument" # 'foo'

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/dollar-quoted2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/dollar-quoted2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..ed7428bd2d29f6c7ea0c13bc88d1defe807e4de1

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/dollar-quoted2.zsh

@@ -0,0 +1,39 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER=": \ foo\xbar\udeadbeef\uzzzz'"

+

+expected_region_highlight=(

+ "1 1 builtin" # :

+ "3 29 default" # foo\xbar\udeadbeef\uzzzz'

+ "3 29 dollar-quoted-argument" # foo\xbar\udeadbeef\uzzzz'

+ "8 11 back-dollar-quoted-argument" # \xba

+ "13 18 back-dollar-quoted-argument" # \dead

+ "23 24 unknown-token" # \u

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/dollar-quoted3.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/dollar-quoted3.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..365f35195647b8f627c3561077c218c10c965d14

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/dollar-quoted3.zsh

@@ -0,0 +1,39 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# Similar to double-quoted2.zsh

+# This test checks that the '1' gets highlighted correctly. Do not append to the BUFFER.

+BUFFER=": \ \xa1"

+

+expected_region_highlight=(

+ "1 1 builtin" # :

+ "3 8 default" # \xa1

+ "3 8 dollar-quoted-argument-unclosed" # \xa1

+ "5 8 back-dollar-quoted-argument" # \xa1

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/double-hyphen-option.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/double-hyphen-option.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..e5cacd37b992cb648c5296dc852a3a975a058232

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/double-hyphen-option.zsh

@@ -0,0 +1,35 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='hello --world'

+

+expected_region_highlight=(

+ "1 5 unknown-token" # hello

+ "7 13 double-hyphen-option" # --world

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/double-quoted.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/double-quoted.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..0a4336cacb44060fd769a62a207065c34a882a25

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/double-quoted.zsh

@@ -0,0 +1,42 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER=': "foo$bar:\`:\":\$:'

+BUFFER+=\\\\:\"

+

+expected_region_highlight=(

+ "1 1 builtin" # :

+ "3 24 default" # "foo$bar:\`:\":\$:\\:"

+ "3 24 double-quoted-argument" # "foo$bar:\`:\":\$:\\:"

+ "7 10 dollar-double-quoted-argument" # $bar

+ "12 13 back-double-quoted-argument" # \`

+ "15 16 back-double-quoted-argument" # \$

+ "18 19 back-double-quoted-argument" # \"

+ "21 22 back-double-quoted-argument" # \\

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/double-quoted2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/double-quoted2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..c400e543296e0b66d1895a66e870e4b66c4e235d

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/double-quoted2.zsh

@@ -0,0 +1,39 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# Similar to dollar-quoted3.zsh

+# This test checks that the 'r' gets highlighted correctly. Do not append to the BUFFER.

+BUFFER=': "foo$bar'

+

+expected_region_highlight=(

+ "1 1 builtin" # :

+ "3 10 default" # "foo$bar

+ "3 10 double-quoted-argument-unclosed" # "foo$bar

+ "7 10 dollar-double-quoted-argument" # $bar

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/double-quoted3.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/double-quoted3.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..86e3ced69e861b463c80370023f07ca8fc19402e

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/double-quoted3.zsh

@@ -0,0 +1,42 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER=': "$" "$42foo"'

+BUFFER+=\ \"\\\'\\x\"

+

+expected_region_highlight=(

+ "1 1 builtin" # :

+ "3 5 default" # "$"

+ "3 5 double-quoted-argument" # "$"

+ "7 14 default" # "$42foo"

+ "7 14 double-quoted-argument" # "$42foo"

+ "8 10 dollar-double-quoted-argument" # $42

+ "16 21 default" # "\'\x"

+ "16 21 double-quoted-argument" # "\'\x" - \' and \x are not escape sequences

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/double-quoted4.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/double-quoted4.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..c59d5d8e46fa3fba1f82c268a3c0a3c46f6b8499

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/double-quoted4.zsh

@@ -0,0 +1,37 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER=': "${foo}bar"'

+

+expected_region_highlight=(

+ "1 1 builtin" # :

+ "3 13 default" # "${foo}bar"

+ "3 13 double-quoted-argument" # "${foo}bar"

+ "4 9 dollar-double-quoted-argument" # ${foo}

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/empty-command-newline.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/empty-command-newline.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..4b7b35c6e2632935d62e7aee0a7ac5ff8a06d855

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/empty-command-newline.zsh

@@ -0,0 +1,39 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2019 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# Newline after semicolon isn't unknown-token

+BUFFER= :;\n:'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '2 2 commandseparator' # ;

+ '3 3 commandseparator' # \n

+ '4 4 builtin' # :

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/empty-command.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/empty-command.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..5831464d48b218181a04a44d65e4b6bdcadecafe

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/empty-command.zsh

@@ -0,0 +1,36 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='echo; ;'

+

+expected_region_highlight=(

+ "1 4 builtin" # echo

+ "5 5 commandseparator" # ;

+ "7 7 unknown-token" # ;

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/empty-command2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/empty-command2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..dcb4e6f73f5e354cb9afaf1354467c996660cc45

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/empty-command2.zsh

@@ -0,0 +1,39 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# Same test data and expectations as empty-command.zsh; the only difference is:

+touch ';'

+

+BUFFER='echo; ;'

+

+expected_region_highlight=(

+ "1 4 builtin" # echo

+ "5 5 commandseparator" # ;

+ "7 7 unknown-token" # ;

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/empty-line.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/empty-line.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..a4d6685bb3e81707aa802a6c6c102525d2583f33

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/empty-line.zsh

@@ -0,0 +1,36 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= \\\n; ls'

+

+expected_region_highlight=(

+ '3 3 unknown-token' # ;

+ '5 6 command' # ls

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/equals1.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/equals1.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..77f46e8d5647d272e1c7c597e232a2787bbb8dea

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/equals1.zsh

@@ -0,0 +1,36 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= : =ls'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 5 path' # =ls

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/equals2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/equals2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..bd59ff7521ad8943227d5f2fdfa4662df7a4ff1c

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/equals2.zsh

@@ -0,0 +1,38 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+unsetopt equals

+

+BUFFER= : =nosuchcommand'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 16 default' # =nosuchcommand

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/equals3.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/equals3.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..8c10789002d808ddb37bbe01df7bb8081ab5fb38

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/equals3.zsh

@@ -0,0 +1,36 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= : =nosuchcommand'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 16 unknown-token' # =nosuchcommand

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/equals4.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/equals4.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..28bc21480b3cd1c1c4b1fb1adb97bab939bdd08d

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/equals4.zsh

@@ -0,0 +1,36 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= : ='

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 3 default' # =

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/escaped-single-quote.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/escaped-single-quote.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..4b2fe4bc8f0eeddabbb568824537fe954abe03ca

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/escaped-single-quote.zsh

@@ -0,0 +1,38 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= : \'foo\'\\\'\'bar\'' # <<<: 'foo'\''bar'>>>

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 14 default' # 'foo'\''bar'

+ '3 7 single-quoted-argument' # 'foo'

+ '10 14 single-quoted-argument' # 'bar'

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/exec-redirection1.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/exec-redirection1.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..78a0c6231753fc96c1aea8d5e3bb4bab6aa72c92

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/exec-redirection1.zsh

@@ -0,0 +1,38 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='exec {foo}>&/tmp ls'

+

+expected_region_highlight=(

+ "1 4 precommand" # exec

+ "6 10 named-fd" # {foo}

+ "11 12 redirection" # >&

+ "13 16 path" # /tmp

+ "18 19 command" # ls

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/fd-target-not-filename.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/fd-target-not-filename.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..5c3cd08951428d63189feae7668030d0836d577a

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/fd-target-not-filename.zsh

@@ -0,0 +1,40 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+touch 2

+

+BUFFER= echo foo>&2'

+

+expected_region_highlight=(

+ '1 4 builtin' # echo

+ '6 8 default' # foo

+ '9 10 redirection' # >&

+ '11 11 numeric-fd' # 2 (not path)

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/function-altsyntax.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/function-altsyntax.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..0f9a833957b69799ec77f22f2cd032c83324614d

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/function-altsyntax.zsh

@@ -0,0 +1,45 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# Define named and anonymous function using the alternative syntax

+BUFFER= function f { pwd }; function { pwd }'

+

+expected_region_highlight=(

+ '1 8 reserved-word' # function

+ '10 10 default' # f

+ '12 12 reserved-word "issue #237"' # {

+ '14 16 command "issue #237"' # pwd

+ '18 18 reserved-word "issue #237"' # }

+ '19 19 commandseparator' # ;

+ '21 28 reserved-word' # function

+ '30 30 reserved-word "issue #237"' # {

+ '32 34 command "issue #237"' # pwd

+ '36 36 reserved-word "issue #237"' # }

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/function-named1.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/function-named1.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..c962ddbb53264fff30fee931102f859eb45e3258

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/function-named1.zsh

@@ -0,0 +1,44 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='f() pwd; f() { balanced braces }'

+

+expected_region_highlight=(

+ '1 1 TBD "issue #223"' # f

+ '2 3 reserved-word' # ()

+ '5 7 builtin' # pwd

+ '8 8 commandseparator' # ;

+ '10 10 TBD "issue #223"' # f

+ '11 12 reserved-word' # ()

+ '14 14 reserved-word' # {

+ '16 23 unknown-token' # balanced

+ '25 30 default' # braces

+ '32 32 reserved-word' # }

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/function-named2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/function-named2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..e12fce6ad445dd22b3de1ce769a2a9e1b4ec63b7

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/function-named2.zsh

@@ -0,0 +1,39 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='f g h () pwd'

+

+expected_region_highlight=(

+ '1 1 TBD "issue #223"' # f

+ '3 3 TBD "issue #223"' # g

+ '5 5 TBD "issue #223"' # h

+ '7 8 reserved-word' # ()

+ '10 12 builtin' # pwd

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/function.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/function.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..b1be8539331d02aad74afdaeab79dd11a4a58a20

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/function.zsh

@@ -0,0 +1,42 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+cd() {

+ builtin cd "$@"

+}

+ls() {

+ command ls "$@"

+}

+BUFFER='cd;ls'

+

+expected_region_highlight=(

+ "1 2 function" # cd

+ "3 3 commandseparator" # ;

+ "4 5 function" # ls

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/glob.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/glob.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..2ff1022e036dffc1e87eb09554decb9ddd6cbce0

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/glob.zsh

@@ -0,0 +1,41 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER=': foo* bar? *baz qux\?'

+

+expected_region_highlight=(

+ "1 1 builtin" # :

+ "3 6 default" # foo*

+ "6 6 globbing" # *

+ "8 11 default" # bar?

+ "11 11 globbing" # ?

+ "13 16 default" # *baz

+ "13 13 globbing" # *

+ "18 22 default" # qux\?

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/global-alias1.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/global-alias1.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..0022de3cee8dacdbc50d7e23172ede63db33d48b

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/global-alias1.zsh

@@ -0,0 +1,38 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+alias -g foo=bar

+

+BUFFER= foo foo'

+

+expected_region_highlight=(

+ '1 3 global-alias' # foo

+ '5 7 global-alias' # foo

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/globs-with-quoting.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/globs-with-quoting.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..d7d74bc4afcaecb82bbbb6337a921f228d15e60f

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/globs-with-quoting.zsh

@@ -0,0 +1,43 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= : "foo"*\'bar\'?"baz?"<17-29>"qu*ux"'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 34 default' # "foo"*'bar'?"baz?"<17-29>"qu*ux"

+ '3 7 double-quoted-argument' # "foo"

+ '8 8 globbing' # *

+ '9 13 single-quoted-argument' # 'bar'

+ '14 14 globbing' # ?

+ '15 20 double-quoted-argument' # "baz?"

+ '21 27 globbing' # <17-29>

+ '28 34 double-quoted-argument' # "qu*ux"

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/hashed-command.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/hashed-command.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..2983ef8df379f0f9f54c29dc07a4cc388f367e27

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/hashed-command.zsh

@@ -0,0 +1,35 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+hash zsh_syntax_highlighting_hash=/doesnotexist

+BUFFER='zsh_syntax_highlighting_hash'

+

+expected_region_highlight=(

+ "1 28 hashed-command 'zsh/parameter cannot distinguish between hashed and command'"

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/history-double-quoted-escaped.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/history-double-quoted-escaped.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..7807cc06e94e3d481df827b4ccd6b664359c72a4

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/history-double-quoted-escaped.zsh

@@ -0,0 +1,38 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='echo "Hello\!"'

+

+expected_region_highlight=(

+ '1 4 builtin' # echo

+ '6 14 default' # "Hello\!"

+ '6 14 double-quoted-argument' # "Hello\!"

+ '12 13 back-double-quoted-argument' # \!

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/history-double-quoted-followed.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/history-double-quoted-followed.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..6421cedafc1390cedfb380a309f129633126ca36

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/history-double-quoted-followed.zsh

@@ -0,0 +1,39 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER=': !!= "!!="'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 4 history-expansion "issue #713"' # !!

+ '7 11 default' # "!!="

+ '7 11 double-quoted-argument' # "!!="

+ '8 9 history-expansion "issue #713' # !!

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/history-double-quoted-no.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/history-double-quoted-no.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..e082dbcfa62861934319b03a5e9a8ab00f651c9c

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/history-double-quoted-no.zsh

@@ -0,0 +1,37 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='echo "foo != bar !{baz}"'

+

+expected_region_highlight=(

+ '1 4 builtin' # echo

+ '6 24 default' # "foo != bar !{baz}"

+ '6 24 double-quoted-argument' # "foo != bar !{baz}" - no history expansions

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/history-double-quoted-unescaped.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/history-double-quoted-unescaped.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..cfe6a11dae8ce1a7c948460291600969863308c6

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/history-double-quoted-unescaped.zsh

@@ -0,0 +1,38 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='echo "Hello!"'

+

+expected_region_highlight=(

+ '1 4 builtin' # echo

+ '6 13 default' # "Hello!"

+ '6 13 double-quoted-argument' # "Hello!"

+ '12 12 history-expansion' # !

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/history-double-quoted-yes.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/history-double-quoted-yes.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..e963c3b94ef4d2bda91af35d680eef0216cfac76

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/history-double-quoted-yes.zsh

@@ -0,0 +1,38 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='echo "foo !bar"'

+

+expected_region_highlight=(

+ '1 4 builtin' # echo

+ '6 15 default' # "foo !bar"

+ '6 15 double-quoted-argument' # "foo !bar"

+ '11 11 history-expansion' # !

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/history-expansion.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/history-expansion.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..05e20fc11c088ce9b68a83a3422cd424c73f8394

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/history-expansion.zsh

@@ -0,0 +1,39 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='!foo bar !baz ! ; !'

+

+expected_region_highlight=(

+ "1 4 history-expansion" # !foo

+ "6 8 default" # bar

+ "10 13 history-expansion" # !baz

+ "15 15 default" # !

+ "17 17 commandseparator" # ;

+ "19 19 reserved-word" # !

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/history-expansion2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/history-expansion2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..386d0df966aac7fb7503712bdac901aa166e02c6

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/history-expansion2.zsh

@@ -0,0 +1,34 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='^foo^bar'

+

+expected_region_highlight=(

+ "1 8 history-expansion" # ^foo^bar

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/inheritance.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/inheritance.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..e851ca3ed43be76274be255a68e706cbbacb5106

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/inheritance.zsh

@@ -0,0 +1,40 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+_zsh_highlight_add_highlight()

+{

+ region_highlight+=("$1 $2 ${(j.,.)argv[3,-1]}")

+}

+

+BUFFER='type'

+

+expected_region_highlight=(

+ '1 4 builtin,arg0' # type

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/jobsubst-isnt-glob.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/jobsubst-isnt-glob.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..3a7e325a48394f053aff4e3384b812f20d0e8b3a

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/jobsubst-isnt-glob.zsh

@@ -0,0 +1,37 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018.9958 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= : %? %?foo'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 4 default' # %?

+ '6 10 default' # %?foo

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/jobsubst-isnt-glob2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/jobsubst-isnt-glob2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..51930bfbe61482517ceedd36be261bb6dab00079

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/jobsubst-isnt-glob2.zsh

@@ -0,0 +1,37 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= : foo%?bar'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 10 default' # foo%?bar

+ '7 7 globbing' # ?

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/loop-newline.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/loop-newline.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..d39ee1123f61f11fe606683214f238fd4362f971

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/loop-newline.zsh

@@ -0,0 +1,40 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2019 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= for i in \\\n; do done'

+

+expected_region_highlight=(

+ '1 3 reserved-word' # for

+ '5 5 default' # i

+ '7 8 default' # in

+ '12 12 commandseparator' # ;

+ '14 15 reserved-word' # do

+ '17 20 reserved-word' # done

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/meta-no-eval1.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/meta-no-eval1.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..bb0407771e7cd14d8767981110a0a0c5ae67e017

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/meta-no-eval1.zsh

@@ -0,0 +1,49 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= : $(kill -9 $) ${:-$(kill -9 $)}'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 15 default' # $(kill -9 $)

+ '3 15 command-substitution-unquoted' # $(kill -9 $)

+ '3 4 command-substitution-delimiter-unquoted' # $(

+ '5 8 builtin' # kill

+ '10 11 single-hyphen-option' # -9

+ '13 14 default' # $

+ '15 15 command-substitution-delimiter-unquoted' # )

+ '17 34 default' # ${:-$(kill -9 $)}

+ '21 33 command-substitution-unquoted' # $(kill -9 $)

+ '21 22 command-substitution-delimiter-unquoted' # $(

+ '23 26 builtin' # kill

+ '28 29 single-hyphen-option' # -9

+ '31 32 default' # $

+ '33 33 command-substitution-delimiter-unquoted' # )

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/meta-no-eval2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/meta-no-eval2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..61ef089229a5925dbdb7fb13345b5835c8687862

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/meta-no-eval2.zsh

@@ -0,0 +1,40 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# We aren't testing how this is highlighted; we're testing that it's not

+# evaluated. If it gets evaluated, the test suite will die.

+BUFFER= : /(e*exit 42*)'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 15 default' # /(e*exit 42*)

+ '6 6 globbing' # *

+ '14 14 globbing' # *

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/multiline-array-assignment1.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/multiline-array-assignment1.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..8906cfdedeba9af0b34345669563d198a3767035

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/multiline-array-assignment1.zsh

@@ -0,0 +1,41 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= foo=(\nbar) env'

+

+expected_region_highlight=(

+ '1 5 assign' # foo=(

+ '5 5 reserved-word' # (

+ '6 6 commandseparator' # \n

+ '7 9 default' # bar

+ '10 10 assign' # )

+ '10 10 reserved-word' # )

+ '12 14 precommand' # env

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/multiline-string.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/multiline-string.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..0127b4bf27803c0d73a55dfd3c48af49a06f2134

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/multiline-string.zsh

@@ -0,0 +1,37 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+PREBUFFER= echo "foo1\n'

+BUFFER='foo2" ./'

+

+expected_region_highlight=(

+ "1 5 default" # 'foo2"'

+ "1 5 double-quoted-argument" # 'foo2"'

+ "7 8 path" # './'

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/multiline-string2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/multiline-string2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..3a90dce82b902dd71429dff9a64f9de10741806c

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/multiline-string2.zsh

@@ -0,0 +1,36 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= echo \'foo1\n'

+

+expected_region_highlight=(

+ "1 4 builtin" # echo

+ "6 11 default" # 'foo1\n

+ "6 11 single-quoted-argument-unclosed" # 'foo1\n

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/multios-negates-globbing.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/multios-negates-globbing.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..7ece6708b59c5f783b5f766a73870259ab023ff7

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/multios-negates-globbing.zsh

@@ -0,0 +1,39 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+unsetopt multios

+

+BUFFER= cat < *'

+

+expected_region_highlight=(

+ '1 3 command' # cat

+ '5 5 redirection' # <

+ '7 7 default' # * - not globbing

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/multios-negates-globbing2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/multios-negates-globbing2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..b6db983d64982c4bc9e46f40cdbe29c27bd9ca0d

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/multios-negates-globbing2.zsh

@@ -0,0 +1,38 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= cat < *'

+

+expected_region_highlight=(

+ '1 3 command' # cat

+ '5 5 redirection' # <

+ '7 7 default' # *

+ '7 7 globbing' # *

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/multiple-quotes.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/multiple-quotes.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..dabf70c838b3b13711b27761647e0ff8012c3034

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/multiple-quotes.zsh

@@ -0,0 +1,42 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2017 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= : \'foo\'bar"baz$quux/foo\\\\bar"baz$\'quux\\nfoo\\001bar\'baz'

+

+expected_region_highlight=(

+ "1 1 builtin" # :

+ "3 54 default" # 'foo'bar"baz$quux/foo\\bar"baz quux\nfoo\001'baz

+ "3 7 single-quoted-argument" # 'foo'

+ "11 29 double-quoted-argument" #"baz

+ "15 19 dollar-double-quoted-argument" # $quux

+ "24 25 back-double-quoted-argument" # \\

+ "33 51 dollar-quoted-argument" # quux\nfoo\001bar'

+ "39 40 back-dollar-quoted-argument" # \n

+ "44 47 back-dollar-quoted-argument" # \001

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/multiple-redirections.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/multiple-redirections.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..778e7129f7fefa66eb2efdd854dd8302e004227a

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/multiple-redirections.zsh

@@ -0,0 +1,46 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2010-2011 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='ps aux | grep java | sort | uniq | tail | head'

+

+expected_region_highlight=(

+ "1 2 command" # ps

+ "4 6 default" # aux

+ "8 8 commandseparator" # |

+ "10 13 command" # grep

+ "15 18 default" # java

+ "20 20 commandseparator" # |

+ "22 25 command" # sort

+ "27 27 commandseparator" # |

+ "29 32 command" # uniq

+ "34 34 commandseparator" # |

+ "36 39 command" # tail

+ "41 41 commandseparator" # |

+ "43 46 command" # head

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/noglob-alias.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/noglob-alias.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..2f96445edfc590886268faffbe4578d5cd40554e

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/noglob-alias.zsh

@@ -0,0 +1,36 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+alias x=command

+BUFFER='x ls'

+

+expected_region_highlight=(

+ "1 1 alias" # x

+ "3 4 command" # ls

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/noglob-always.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/noglob-always.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..6d550489a71c661403381380bfceac2844d1f91f

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/noglob-always.zsh

@@ -0,0 +1,45 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= { noglob echo * } always { echo * }'

+

+expected_region_highlight=(

+ '1 1 reserved-word' # {

+ '3 8 precommand' # noglob

+ '10 13 builtin' # echo

+ '15 15 default' # *

+ '17 17 reserved-word' # }

+ '19 24 reserved-word' # always

+ '26 26 reserved-word' # {

+ '28 31 builtin' # echo

+ '33 33 default' # *

+ '33 33 globbing' # *

+ '35 35 reserved-word' # }

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/noglob1.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/noglob1.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..1857db0c41fb4a39a1005940d4674cfa2b99377e

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/noglob1.zsh

@@ -0,0 +1,38 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER=':; noglob echo *'

+

+expected_region_highlight=(

+ "1 1 builtin" # :

+ "2 2 commandseparator" # ;

+ "4 9 precommand" # noglob

+ "11 14 builtin" # echo

+ "16 16 default" # *

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/noglob2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/noglob2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..3b4fcd7621135e0a71dab92e7d7797a6c08d7d3d

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/noglob2.zsh

@@ -0,0 +1,40 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='noglob echo *; echo *'

+

+expected_region_highlight=(

+ "1 6 precommand" # noglob

+ "8 11 builtin" # echo

+ "13 13 default" # *

+ "14 14 commandseparator" # ;

+ "16 19 builtin" # echo

+ "21 21 default" # *

+ "21 21 globbing" # *

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/noglob3.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/noglob3.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..c404aaac77313b2b305d128fe28f27358d9447a0

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/noglob3.zsh

@@ -0,0 +1,38 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+touch \*

+

+BUFFER='noglob echo *'

+

+expected_region_highlight=(

+ "1 6 precommand" # noglob

+ "8 11 builtin" # echo

+ "13 13 path" # *

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/noglob4.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/noglob4.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..cc7065f5649e2a406e86cdea2f9e2475bdaba545

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/noglob4.zsh

@@ -0,0 +1,45 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= noglob cat <(print -r -- *)'

+

+expected_region_highlight=(

+ '1 6 precommand' # noglob

+ '8 10 command' # cat

+ '12 27 default' # <(print -r -- *)

+ '12 27 process-substitution' # <(print -r -- *)

+ '12 13 process-substitution-delimiter' # <(

+ '14 18 builtin' # print

+ '20 21 single-hyphen-option' # -r

+ '23 24 double-hyphen-option' # --

+ '26 26 default' # *

+ '26 26 globbing' # *

+ '27 27 process-substitution-delimiter' # )

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/null-exec.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/null-exec.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..be1e30646a3b83a78d0d4ecc855aad6399a1b480

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/null-exec.zsh

@@ -0,0 +1,38 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= exec >/dev/null;'

+

+expected_region_highlight=(

+ '1 4 precommand' # exec

+ '6 6 redirection' # >

+ '7 15 path' # /dev/null

+ '16 16 commandseparator' # ;

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/null-exec2-printenv.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/null-exec2-printenv.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..59a2cef70d9e414af0a3acc6ef6e6259770e47b5

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/null-exec2-printenv.zsh

@@ -0,0 +1,38 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2021 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= env | grep $needle'

+

+expected_region_highlight=(

+ '1 3 precommand' # env

+ '5 5 commandseparator' # |

+ '7 10 command' # grep

+ '12 18 default' # $needle

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/number_range-glob.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/number_range-glob.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..c8409510bb1bb90f0a115787bfc59896ea65e1b1

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/number_range-glob.zsh

@@ -0,0 +1,42 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2017 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='print <-> x<->y <foo2-3>'

+

+expected_region_highlight=(

+ '1 5 builtin' # print

+ '7 9 default' # <->

+ '7 9 globbing' # <->

+ '11 15 default' # x<->y

+ '12 14 globbing' # <->

+ '17 17 redirection' # <

+ '18 23 default' # foo2-3 (the filename)

+ '24 24 redirection' # >

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/off-by-one.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/off-by-one.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..872143af28f85e62e862d16c131e2f233de709cb

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/off-by-one.zsh

@@ -0,0 +1,40 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+alias a=:

+f() {}

+

+BUFFER='a;f;'

+

+expected_region_highlight=(

+ "1 1 alias" # a

+ "2 2 commandseparator" # ;

+ "3 3 function" # f

+ "4 4 commandseparator" # ;

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/opt-shwordsplit1.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/opt-shwordsplit1.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..745578554734914295bfd554bae427f3cb61d2a9

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/opt-shwordsplit1.zsh

@@ -0,0 +1,40 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+setopt shwordsplit

+local EDITOR='ed -s'

+

+ed() { command ed "$@" }

+

+BUFFER= $EDITOR'

+

+expected_region_highlight=(

+ '1 7 function "issue #687"' # $EDITOR

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/optimized-cmdsubst-input.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/optimized-cmdsubst-input.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..ca55ef8391585561dc1a3801db24f6d21f04e88a

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/optimized-cmdsubst-input.zsh

@@ -0,0 +1,43 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# See getoutput() and getoutputfile() in zsh's C source code.

+

+BUFFER= : $(<*)'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 7 default' # $(<*)

+ '3 7 command-substitution-unquoted' # $(<*)

+ '3 4 command-substitution-delimiter-unquoted' # $(

+ '5 5 redirection' # <

+ '6 6 default' # * - not globbing!

+ '7 7 command-substitution-delimiter-unquoted' # )

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/option-dollar-quote-isnt-filename.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/option-dollar-quote-isnt-filename.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..897a02e6e68e1d4ba3432b06468731aa371a30c2

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/option-dollar-quote-isnt-filename.zsh

@@ -0,0 +1,39 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= : -$\'n\''

+

+touch ./-n

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 7 single-hyphen-option' # - n'

+ '4 7 dollar-quoted-argument' # n'

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/option-path_dirs.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/option-path_dirs.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..0300c7e53ffe5575f164990b3120554d092ff28a

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/option-path_dirs.zsh

@@ -0,0 +1,44 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+if [[ $OSTYPE == msys ]]; then

+ skip_test='Cannot chmod +x in msys2'

+else

+ setopt PATH_DIRS

+ mkdir -p foo/bar

+ touch foo/bar/testing-issue-228

+ chmod +x foo/bar/testing-issue-228

+ path+=( "$PWD"/foo )

+

+ BUFFER='bar/testing-issue-228'

+

+ expected_region_highlight=(

+ "1 21 command" # bar/testing-issue-228

+ )

+fi

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/option-with-quotes.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/option-with-quotes.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..6286f034905c8a89bd099f60ceeda6d1fdd81f91

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/option-with-quotes.zsh

@@ -0,0 +1,37 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= : --user="phy1729"'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 18 double-hyphen-option' # --user="phy1729"

+ '10 18 double-quoted-argument' # "phy1729"

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/order-path-after-dollar.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/order-path-after-dollar.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..773c1838535395ed0277542ce8671c01a4545ce5

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/order-path-after-dollar.zsh

@@ -0,0 +1,38 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+touch '$foo'

+BUFFER=': $foo \$foo'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 6 default' # $foo - if we add a "unquoted parameter expansion" style then this expectation should change

+ '8 12 path' # \$foo

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/order-path-before-globbing.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/order-path-before-globbing.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..8456b1812601bee0b086826c553ad47a0f88e4f3

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/order-path-before-globbing.zsh

@@ -0,0 +1,39 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2017 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+touch '*'

+BUFFER=': * \*'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 3 default' # *

+ '3 3 globbing' # *

+ '5 6 path' # \*

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/param-positional-in-array-append.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/param-positional-in-array-append.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..bd39e0218b4916000d3aadb466d9b931a55881b1

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/param-positional-in-array-append.zsh

@@ -0,0 +1,39 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# This used to be an infinite loop.

+

+BUFFER= l+=( $1'

+

+expected_region_highlight=(

+ '1 4 assign' # l+=(

+ '4 4 reserved-word' # (

+ '6 7 default' # $1

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/param-precommand-option-argument1.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/param-precommand-option-argument1.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..84cf03accebdc320caa28394b4fd52e63d17504c

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/param-precommand-option-argument1.zsh

@@ -0,0 +1,42 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# See also alias-precommand-option-argument1.zsh

+local -a sudo_u; sudo_u=(sudo -u)

+sudo(){}

+

+BUFFER='$sudo_u phy1729 echo foo'

+

+expected_region_highlight=(

+ '1 7 precommand' # $sudo_u

+ '9 15 default' # phy1729

+ '18 20 command "issue #540"' # echo (not builtin)

+ '22 24 default' # foo

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/param-precommand-option-argument3.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/param-precommand-option-argument3.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..9a8dde2832ca1ac38a15ca84d076e2fe5376dc98

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/param-precommand-option-argument3.zsh

@@ -0,0 +1,42 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# See also alias-precommand-option-argument3.zsh

+local -a sudo_u; sudo_u=(sudo -u)

+sudo(){}

+

+BUFFER='$sudo_u phy1729 ls foo'

+

+expected_region_highlight=(

+ '1 7 precommand' # sudo_u

+ '9 15 default' # phy1729

+ '17 18 command' # ls

+ '20 22 default' # foo

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/parameter-elision-command-word.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/parameter-elision-command-word.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..25f649a2e9a28673d1cdde58e277cc32174924a3

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/parameter-elision-command-word.zsh

@@ -0,0 +1,36 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='$x ls'

+

+expected_region_highlight=(

+ '1 2 comment' # $x

+ '4 5 command' # ls

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/parameter-expansion-untokenized1.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/parameter-expansion-untokenized1.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..8b8b5e4c477713d5b98363f5ca0d6d0a0b7b417c

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/parameter-expansion-untokenized1.zsh

@@ -0,0 +1,38 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+local x="()"

+

+BUFFER= $x ls'

+

+expected_region_highlight=(

+ '1 2 unknown-token' # $x

+ '4 5 command' # ls

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/parameter-expansion-untokenized2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/parameter-expansion-untokenized2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..d23a1f2136b2afcfe590440e4b2822cd83f7630f

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/parameter-expansion-untokenized2.zsh

@@ -0,0 +1,38 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+local x="^foo^bar"

+

+BUFFER= $x ls'

+

+expected_region_highlight=(

+ '1 2 unknown-token' # $x

+ '4 5 default' # ls

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/parameter-star.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/parameter-star.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..2311be07628fbbed4eace753830f2b5c59668fb1

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/parameter-star.zsh

@@ -0,0 +1,40 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2017 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='() { : $* }'

+

+# This tests that $* isn't highlighted as a glob.

+# If we ever add a "unquoted parameter" style, the expectation may change.

+expected_region_highlight=(

+ "1 2 reserved-word" # ()

+ "4 4 reserved-word" # {

+ "6 6 builtin" # :

+ "8 9 default" # $*

+ "11 11 reserved-word" # }

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/parameter-to-global-alias.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/parameter-to-global-alias.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..cd2283bf1e0a012471f323a16d295d1a1f9484bd

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/parameter-to-global-alias.zsh

@@ -0,0 +1,42 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+if type x >/dev/null; then

+ skip_test="Test is written on the assumption that 'x' is not a valid command name, but that assumption does not hold"

+ return 0

+fi

+alias -g x=y

+local s=x

+

+BUFFER= $s'

+

+expected_region_highlight=(

+ '1 2 unknown-token' # $s

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/parameter-value-contains-command-position1.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/parameter-value-contains-command-position1.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..05ea1bfae6517233c3adc01a971b8df45fc55a26

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/parameter-value-contains-command-position1.zsh

@@ -0,0 +1,38 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+local foobar='x=$(ls)'

+

+BUFFER= $foobar'

+

+expected_region_highlight=(

+ # Used to highlight the "ba" as 'command' because the 'ls' showed through; issues #670 and #674

+ '1 7 unknown-token' # $foobar (not an assignment)

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/parameter-value-contains-command-position2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/parameter-value-contains-command-position2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..5042e899448ab875be467a6fcd0e8b8df827d938

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/parameter-value-contains-command-position2.zsh

@@ -0,0 +1,38 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+local y='x=$(ls)'

+

+BUFFER= $y'

+

+expected_region_highlight=(

+ # Used to trigger a "BUG" message on stderr - issues #670 and #674

+ '1 2 unknown-token' # $y (not an assignment)

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/pasted-quotes.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/pasted-quotes.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..f37f21b3673fbf0c1fb6461ec16207f92acb0b74

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/pasted-quotes.zsh

@@ -0,0 +1,38 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2013 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= : \'foo\'bar"baz"'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 15 default' # \'foo\'bar"baz"

+ '3 7 single-quoted-argument' # \'foo\'

+ '11 15 double-quoted-argument' # "baz"

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-broken-symlink.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-broken-symlink.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..baebee3617a9b1d3b2d1d1c78f58e54970b2f922

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-broken-symlink.zsh

@@ -0,0 +1,41 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+if [[ $OSTYPE == msys ]]; then

+ skip_test='Cannot create symlinks in msys2'

+else

+ ln -s /nonexistent broken-symlink

+ BUFFER=': broken-symlink'

+ CURSOR=5 # to make path_prefix ineligible

+

+ expected_region_highlight=(

+ "1 1 builtin" # :

+ "3 16 path" # broken-symlink

+ )

+fi

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-dollared-word.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-dollared-word.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..99055da9a4197142d8f9ab71705b3f06ac2ab220

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-dollared-word.zsh

@@ -0,0 +1,45 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+if [[ $OSTYPE == msys ]]; then

+ skip_test='Cannot chmod +x in msys2' # cargo culted from option-path_dirs.zsh

+else

+ mkdir kappa

+ touch kappa.exe

+ chmod +x kappa.exe

+ cd kappa

+

+ BUFFER='$PWD.exe; ${PWD}.exe'

+

+ expected_region_highlight=(

+ "1 8 unknown-token" # $PWD.exe - not eval'd; issue #328

+ "9 9 commandseparator" # ;

+ "11 20 unknown-token" # ${PWD}.exe

+ )

+fi

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-dollared-word2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-dollared-word2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..f404d5d00d74f85cbd22f956d30086833f487b71

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-dollared-word2.zsh

@@ -0,0 +1,37 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+local lambda="''"

+touch \$lambda

+BUFFER=': \$lambda'

+

+expected_region_highlight=(

+ "1 1 builtin" # :

+ "3 10 path" # \$lambda

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-dollared-word3.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-dollared-word3.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..ec981b1ea13c5c8753dea5c538588060530fd483

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-dollared-word3.zsh

@@ -0,0 +1,40 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# «/usr» at this point would be highlighted as path_prefix; so should

+# a parameter that expands to an equivalent string be highlighted.

+#

+# More complicated parameter substitutions aren't eval'd; issue #328.

+BUFFER='$PWD; ${PWD}'

+

+expected_region_highlight=(

+ "1 4 unknown-token" # $PWD (without AUTO_CD)

+ "5 5 commandseparator" # ;

+ "7 12 path_prefix" # ${PWD}

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-dollared-word3b.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-dollared-word3b.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..72a2f7c444930c72853cc3cdcd7ad4eaa6d172ac

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-dollared-word3b.zsh

@@ -0,0 +1,38 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+setopt autocd

+BUFFER= $PWD; ${PWD}'

+

+expected_region_highlight=(

+ '1 4 autodirectory' # $PWD

+ '5 5 commandseparator' # ;

+ '7 12 autodirectory' # ${PWD}

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-dollared-word4.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-dollared-word4.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..e29182cc0b4bab88d192cff32eb526097c487efe

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-dollared-word4.zsh

@@ -0,0 +1,36 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# This tests for a regression during development of issue #328: an interim version

+# of that branch failed that test with "Bail out! output on stderr".

+BUFFER='${'

+

+expected_region_highlight=(

+ "1 2 unknown-token" # ${

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-mixed-quoting.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-mixed-quoting.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..cbd0b38ee138308058189dff32df3b7e18a5fcac

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-mixed-quoting.zsh

@@ -0,0 +1,39 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+touch foo

+

+BUFFER= : \'f\'oo'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 7 path' # \'f\'oo

+ '3 5 single-quoted-argument' # \'f\'

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-separators.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-separators.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..52749b793e005cb1a3cbb534fa1be10401746ce7

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-separators.zsh

@@ -0,0 +1,53 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# ZSH_HIGHLIGHT_STYLES is empty in tests. The path-separator code however compares its values.

+# Make sure the relevant ones are set to something.

+ZSH_HIGHLIGHT_STYLES[path_pathseparator]=set

+ZSH_HIGHLIGHT_STYLES[path_prefix_pathseparator]=set

+

+mkdir A

+touch A/mu

+BUFFER='ls /bin/ / A/mu A/m'

+

+expected_region_highlight=(

+ "1 2 command" # ls

+ "4 8 path" # /bin/

+ "4 4 path_pathseparator" # /

+ "8 8 path_pathseparator" # /

+

+ "10 10 path" # /

+ "10 10 path_pathseparator" # /

+

+ "12 15 path" # A/mu

+ "13 13 path_pathseparator" # /

+

+ "17 19 path_prefix" # A/m

+ "18 18 path_prefix_pathseparator" # /

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-separators2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-separators2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..bc885a06c75585830b6265ee98da2a8ab93b77f3

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-separators2.zsh

@@ -0,0 +1,40 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# ZSH_HIGHLIGHT_STYLES is empty in tests. The path-separator code however compares its values.

+# For this test, make sure both these styles are set and identical:

+ZSH_HIGHLIGHT_STYLES[path]=value

+ZSH_HIGHLIGHT_STYLES[path_pathseparator]=value

+

+BUFFER='ls /bin/'

+

+expected_region_highlight=(

+ "1 2 command" # ls

+ "4 8 path" # /bin/

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-space.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-space.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..87cc22f9dfc5fe30f94374bc79be3aca1f768d2a

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-space.zsh

@@ -0,0 +1,37 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2010-2011 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+mkdir A

+touch "A/mu with spaces"

+BUFFER='ls A/mu\ with\ spaces'

+

+expected_region_highlight=(

+ "1 2 command" # ls

+ "4 21 path" # A/mu\ with\ spaces

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-tilde-home.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-tilde-home.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..8b1c68051c599cc795a9782739065a0e45c65371

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-tilde-home.zsh

@@ -0,0 +1,36 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2010-2011 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+HOME="."

+BUFFER='ls ~'

+

+expected_region_highlight=(

+ "1 2 command" # ls

+ "4 4 path" # ~

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-tilde-home2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-tilde-home2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..3f7b8200ec4f334ad05338d4fa2c257d7628cd39

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-tilde-home2.zsh

@@ -0,0 +1,37 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+HOME="/nonexistent"

+BUFFER='ls ~'

+

+expected_region_highlight=(

+ "1 2 command" # ls

+ "4 4 default" # ~

+)

+

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-tilde-home3.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-tilde-home3.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..5c076e88d49907ef828e6049d5034cabf4ca151e

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-tilde-home3.zsh

@@ -0,0 +1,36 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+HOME="."

+BUFFER='ls \~'

+

+expected_region_highlight=(

+ "1 2 command" # ls

+ "4 5 default" # \~

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-tilde-named.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-tilde-named.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..335b3fdf7cd259db26d55837c61b6196db703052

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path-tilde-named.zsh

@@ -0,0 +1,39 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+mkdir mydir

+touch mydir/path-tilde-named.test

+hash -d D=mydir

+

+BUFFER='ls ~D/path-tilde-named.test'

+

+expected_region_highlight=(

+ "1 2 command" # ls

+ "4 27 path" # ~D/path-tilde-named.test

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..d387eff3ed6b7b5a5e04a86485d5683ec20ae761

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path.zsh

@@ -0,0 +1,37 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2010-2011 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+mkdir A

+touch A/mu

+BUFFER='ls A/mu'

+

+expected_region_highlight=(

+ "1 2 command" # ls

+ "4 7 path" # A/mu

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path_prefix.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path_prefix.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..3303bfb4e97a8bc06154a0094891400b639a5166

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path_prefix.zsh

@@ -0,0 +1,38 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# Assumes that '/bin/sh' exists and '/bin/s' does not exist.

+# Related to path_prefix2.zsh

+

+BUFFER='ls /bin/s'

+

+expected_region_highlight=(

+ "1 2 command" # ls

+ "4 9 path_prefix" # /bin/s

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path_prefix2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path_prefix2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..4f40f7e948d79333936dac15869f7fc890c399ab

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path_prefix2.zsh

@@ -0,0 +1,39 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# Assumes that '/bin/sh' exists and '/bin/s' does not exist.

+# Related to path_prefix.zsh

+

+BUFFER='ls /bin/s'

+WIDGET=zle-line-finish

+

+expected_region_highlight=(

+ "1 2 command" # ls

+ "4 9 default" # /bin/s

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path_prefix3.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path_prefix3.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..9f34f9438cd2b85bc2149f911f0438fda3565992

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/path_prefix3.zsh

@@ -0,0 +1,38 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# Assumes that '/bin/sh' exists and '/bin/s' does not exist.

+# Related to path_prefix.zsh

+

+PREBUFFER= ls \\\n'

+BUFFER='/bin/s'

+

+expected_region_highlight=(

+ '1 6 path_prefix' # /bin/s

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/plain-file-in-command-position.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/plain-file-in-command-position.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..141fface5e965654ad9d36ee080ec1ac530eee6a

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/plain-file-in-command-position.zsh

@@ -0,0 +1,39 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+touch foo

+chmod -x foo

+BUFFER= ./foo; ./foo'

+

+expected_region_highlight=(

+ '1 5 unknown-token' # ./foo (in middle)

+ '6 6 commandseparator' # ;

+ '8 12 unknown-token' # ./foo (at end)

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/precommand-killing1.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/precommand-killing1.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..75983460c665853b2b329f938ebce4ee12a9cee4

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/precommand-killing1.zsh

@@ -0,0 +1,40 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+hash sudo=false

+touch foo

+

+BUFFER='sudo -e ./foo'

+

+expected_region_highlight=(

+ '1 4 precommand' # sudo

+ '6 7 single-hyphen-option' # -e

+ '9 13 path' # ./foo

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/precommand-killing2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/precommand-killing2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..bc6fc86638fb84fd666283364ed55851ca65d87f

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/precommand-killing2.zsh

@@ -0,0 +1,39 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+hash sudo=false

+

+BUFFER='sudo -e /does/not/exist'

+

+expected_region_highlight=(

+ '1 4 precommand' # sudo

+ '6 7 single-hyphen-option' # -e

+ '9 23 default' # /does/not/exist

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/precommand-then-assignment.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/precommand-then-assignment.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..f0bb75ff91cf4aa40db2796029f8603fea5d086f

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/precommand-then-assignment.zsh

@@ -0,0 +1,37 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2019 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= nice x=y ls'

+

+expected_region_highlight=(

+ '1 4 precommand' # nice

+ '6 8 unknown-token "issue #641.5"' # x=y

+ '10 11 default "issue #641.5 (fallout)"' # ls

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/precommand-type1.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/precommand-type1.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..4ce817c29e5db856ea05ce8c0190842edf3dcf7f

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/precommand-type1.zsh

@@ -0,0 +1,61 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2019 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# Test the behaviour of a builtin that exists as a command as well.

+# The spaces in $BUFFER are to align precommand-type*.zsh test files.

+BUFFER= test ; builtin test ; builtin command test ; nice test '

+

+# Our expectations assumes that a 'test' external command exists (in addition

+# to the 'test' builtin). Let's verify that, using the EQUALS option (which

+# is on by default). If there's no 'test' command, the expansion will fail,

+# diagnose a message on stdout, and the harness will detect a failure.

+#

+# This seems to work on all platforms, insofar as no one ever reported a bug

+# about their system not having a 'test' binary in PATH. That said, if someone

+# ever does see this test fail for this reason, we should explicitly create

+# a 'test' executable in cwd and 'rehash'.

+: =test

+

+expected_region_highlight=(

+ '1 4 builtin' # test

+ '7 7 commandseparator' # ;

+

+ '9 15 precommand' # builtin

+ '17 20 builtin' # test

+ '23 23 commandseparator' # ;

+

+ '25 31 precommand' # builtin

+ '33 39 precommand' # command

+ '41 44 command "issue #608"' # test

+ '47 47 commandseparator' # ;

+

+ '49 52 precommand' # nice

+ '54 57 command "issue #608"' # test

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/precommand-type2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/precommand-type2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..bf75f4b59ebf40d1fed6e702ef11da4e4aea0d05

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/precommand-type2.zsh

@@ -0,0 +1,55 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2019 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# Test the behaviour of a builtin that does not exist as a command.

+# The spaces in $BUFFER are to align precommand-type*.zsh test files.

+BUFFER= zstyle; builtin zstyle; builtin command zstyle; nice zstyle'

+

+# Verify that no $^path/zstyle(N) binary exists.

+if (disable zstyle; type zstyle >/dev/null); then

+ echo >&2 "precommand-type2: error: 'zstyle' exists not only as a builtin"

+fi

+

+expected_region_highlight=(

+ '1 6 builtin' # zstyle

+ '7 7 commandseparator' # ;

+

+ '9 15 precommand' # builtin

+ '17 22 builtin' # zstyle

+ '23 23 commandseparator' # ;

+

+ '25 31 precommand' # builtin

+ '33 39 precommand' # command

+ '41 46 unknown-token "issue #608"' # zstyle

+ '47 47 commandseparator' # ;

+

+ '49 52 precommand' # nice

+ '54 59 unknown-token "issue #608"' # zstyle

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/precommand-type3.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/precommand-type3.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..7fc7e4c56f0568ab2b5d89ed5b8e6fa7f1efa9ea

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/precommand-type3.zsh

@@ -0,0 +1,55 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2019 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# Test an external command that does not exist as a builtin.

+# The spaces in $BUFFER are to align precommand-type*.zsh test files.

+BUFFER= ls ; builtin ls ; builtin command ls ; nice ls '

+

+# Verify that the 'ls' command isn't shadowed.

+if [[ $(type -w ls) != "ls: command" ]]; then

+ echo >&2 "precommand-type3: error: the 'ls' command is shadowed (or possibly missing altogether)"

+fi

+

+expected_region_highlight=(

+ '1 2 command' # ls

+ '7 7 commandseparator' # ;

+

+ '9 15 precommand' # builtin

+ '17 18 unknown-token "issue #608"' # ls

+ '23 23 commandseparator' # ;

+

+ '25 31 precommand' # builtin

+ '33 39 precommand' # command

+ '41 42 command' # ls

+ '47 47 commandseparator' # ;

+

+ '49 52 precommand' # nice

+ '54 55 command' # ls

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/precommand-uninstalled.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/precommand-uninstalled.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..03c8a75a389eb2cd1f3e39d937de09cf72d90b97

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/precommand-uninstalled.zsh

@@ -0,0 +1,44 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# Simulate sudo not being installed.

+#

+# The 'hash' step is because, if sudo _really_ isn't installed, 'unhash sudo'

+# would error out and break the test.

+hash sudo=/usr/bin/env && unhash sudo

+

+local PATH

+

+BUFFER= sudo ls'

+

+expected_region_highlight=(

+ '1 4 unknown-token' # sudo

+ '6 7 default' # ls - not 'command', since sudo isn't installed

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/precommand-unknown-option.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/precommand-unknown-option.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..6baf9ff566a81375a5d2f9ae430474543e409284

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/precommand-unknown-option.zsh

@@ -0,0 +1,43 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+sudo(){}

+

+BUFFER='sudo -ux ls; sudo -x ls'

+

+expected_region_highlight=(

+ '1 4 precommand' # sudo

+ '6 8 single-hyphen-option' # -ux

+ '10 11 command' # ls

+ '12 12 commandseparator' # ;

+ '14 17 precommand' # sudo

+ '19 20 single-hyphen-option' # -x

+ '22 23 command' # ls

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/precommand.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/precommand.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..a03b3317db0c000ce1d6dc143b2b6c1b580bb86b

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/precommand.zsh

@@ -0,0 +1,36 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER=': command zzzzzz'

+

+expected_region_highlight=(

+ "1 1 builtin" # :

+ "3 9 default" # not precommand

+ "11 16 default" # not unknown-token (since 'zzzzzz' is not a command)

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/precommand2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/precommand2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..75dceabea1dd2185b0046e6ba33575348740a326

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/precommand2.zsh

@@ -0,0 +1,36 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='command -v ls'

+

+expected_region_highlight=(

+ "1 7 precommand" # command

+ "9 10 single-hyphen-option" # -v

+ "12 13 command" # ls

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/precommand3.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/precommand3.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..f8b0c7807bec686dcd072bc017a2ce93e28bfffe

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/precommand3.zsh

@@ -0,0 +1,41 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='nice -n10 ls; nice -n 10 ls'

+

+expected_region_highlight=(

+ "1 4 precommand" # nice

+ "6 9 single-hyphen-option" # -n10

+ "11 12 command" # ls

+ "13 13 commandseparator" # ;

+ "15 18 precommand" # nice

+ "20 21 single-hyphen-option" # -n

+ "23 24 default" # 10

+ "26 27 command" # ls

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/precommand4.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/precommand4.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..b9e6119d7687dd99eafcf1d215c2391c68b4c5bd

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/precommand4.zsh

@@ -0,0 +1,39 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+doas(){}

+BUFFER= doas -nu phy1729 ls'

+

+expected_region_highlight=(

+ '1 4 precommand' # doas

+ '6 8 single-hyphen-option' # -nu

+ '10 16 default' # phy1729

+ '18 19 command' # ls

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/prefix-redirection.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/prefix-redirection.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..a0f0ed5a7ce154d9bd2119d44a03a26fbf2c7133

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/prefix-redirection.zsh

@@ -0,0 +1,42 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='>/tmp >/tmp command echo >/tmp foo'

+

+expected_region_highlight=(

+ "1 1 redirection" # >

+ "2 5 path" # /tmp

+ "7 7 redirection" # >

+ "8 11 path" # /tmp

+ "13 19 precommand" # command

+ "21 24 builtin" # echo

+ "26 26 redirection" # >

+ "27 30 path" # /tmp

+ "32 34 default" # foo

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/process-substitution-after-redirection.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/process-substitution-after-redirection.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..2d58016fb2471caca16fd6ad3abf256183f49e4d

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/process-substitution-after-redirection.zsh

@@ -0,0 +1,46 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2017, 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= < <(pwd) > >(nl)'

+

+expected_region_highlight=(

+ '1 1 redirection' # <

+ '3 8 default' # <(pwd)

+ '3 8 process-substitution' # <(pwd)

+ '3 4 process-substitution-delimiter' # <(

+ '5 7 builtin' # pwd

+ '8 8 process-substitution-delimiter' # )

+ '10 10 redirection' # >

+ '12 16 default' # >(nl)

+ '12 16 process-substitution' # >(nl)

+ '12 13 process-substitution-delimiter' # >(

+ '14 15 command' # nl

+ '16 16 process-substitution-delimiter' # )

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/process-substitution-redirection-isnt-globbing.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/process-substitution-redirection-isnt-globbing.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..f8dbd6ba240d893a44afcf8e2809a69b7787f313

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/process-substitution-redirection-isnt-globbing.zsh

@@ -0,0 +1,41 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= : =(<foo)'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 9 default' # =(<foo)

+ '3 9 process-substitution' # =(<foo)

+ '3 4 process-substitution-delimiter' # =(

+ '5 5 redirection' # <foo

+ '6 8 default' # foo

+ '9 9 process-substitution-delimiter' # )

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/process-substitution.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/process-substitution.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..26600347c50af59a6b8ee3f3fa2d80099ee77fe7

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/process-substitution.zsh

@@ -0,0 +1,43 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= : --foo=<(echo bar) "<(:)"'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 19 double-hyphen-option' # --foo=<(echo bar)

+ '9 19 process-substitution' # <(echo bar)

+ '9 10 process-substitution-delimiter' # <(

+ '11 14 builtin' # echo

+ '16 18 default' # bar

+ '19 19 process-substitution-delimiter' # )

+ '21 26 default' # "<(:)"

+ '21 26 double-quoted-argument' # "<(:)"

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/process-substitution2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/process-substitution2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..cc550902687d29494d5e42ce706f7c42286ed1a8

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/process-substitution2.zsh

@@ -0,0 +1,51 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='echo =(:) a=(:) =(echo foo'

+

+expected_region_highlight=(

+ '1 4 builtin' # echo

+ '6 9 default' # =(:)

+ '6 9 process-substitution' # =(:)

+ '6 7 process-substitution-delimiter' # =(

+ '8 8 builtin' # :

+ '9 9 process-substitution-delimiter' # )

+ '11 15 default' # a=(:)

+ '17 26 default' # =(echo foo

+ '17 26 process-substitution' # =(echo foo

+ '17 18 process-substitution-delimiter' # =(

+ '19 22 builtin' # echo

+ '24 26 default' # foo

+)

+

+if [[ ${(z):-'$('} == '$( ' ]]; then # ignore zsh 5.0.8 bug

+ expected_region_highlight[8]='17 27 default' # =(echo foo

+ expected_region_highlight[9]='17 27 process-substitution' # =(echo foo

+fi

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/quoted-command-substitution-empty.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/quoted-command-substitution-empty.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..daf3738b164632ac39b2f10f68e34ee689acb19f

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/quoted-command-substitution-empty.zsh

@@ -0,0 +1,44 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='echo "foo$( '

+

+expected_region_highlight=(

+ '1 4 builtin' # echo

+ '6 12 default' # "foo$(

+ '6 9 double-quoted-argument-unclosed' # "foo

+ '10 12 command-substitution-quoted' # $(

+ '10 11 command-substitution-delimiter-quoted' # $(

+)

+

+if [[ ${(z):-'$('} == '$( ' ]]; then # ignore zsh 5.0.8 bug

+ expected_region_highlight[2]='6 13 default' # "foo$(

+ expected_region_highlight[4]='10 13 command-substitution-quoted' # $(

+fi

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/quoted-redirection-in-command-word.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/quoted-redirection-in-command-word.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..b1a79e100aa8e68eafdfd937ab06c82cdb8f0c9a

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/quoted-redirection-in-command-word.zsh

@@ -0,0 +1,37 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= ">" foo ls'

+

+expected_region_highlight=(

+ '1 3 unknown-token' # ">" - not "redirection"

+ '5 7 default' # foo

+ '9 10 default' # ls - not "command"

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/rc-quotes.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/rc-quotes.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..8cd427aeef73e18fdd507f107e5805d01dd93ac5

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/rc-quotes.zsh

@@ -0,0 +1,39 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2017 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+setopt RC_QUOTES

+

+BUFFER=": 'foo''bar'baz"

+

+expected_region_highlight=(

+ "1 1 builtin" # :

+ "3 15 default" # 'foo''bar'baz

+ "3 12 single-quoted-argument" # 'foo''bar'

+ "7 8 rc-quote" # ''

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/redirection-comment.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/redirection-comment.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..a019100c0ca954b42e45c705c80ca6703b388dc3

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/redirection-comment.zsh

@@ -0,0 +1,38 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2017 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+setopt interactive_comments

+

+BUFFER=': <<#foo'

+

+expected_region_highlight=(

+ "1 1 builtin" # :

+ "3 4 redirection" # <<

+ "5 8 comment" # #foo

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/redirection-from-param.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/redirection-from-param.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..42ae6380f89f9166e1363d7223f5eebec90f7f0d

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/redirection-from-param.zsh

@@ -0,0 +1,40 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+touch file

+local fn=$PWD/file

+

+BUFFER= <$fn cat'

+

+expected_region_highlight=(

+ '1 1 redirection' # <

+ '2 4 path' # $fn

+ '6 8 command' # cat

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/redirection-in-cmdsubst.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/redirection-in-cmdsubst.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..ed5eaef8ddccf03f2fae775dc195fd6265813e4a

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/redirection-in-cmdsubst.zsh

@@ -0,0 +1,41 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= : $(<foo)'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 9 default' # $(<foo)

+ '3 9 command-substitution-unquoted' # $(<foo)

+ '3 4 command-substitution-delimiter-unquoted' # $(

+ '5 5 redirection' # <

+ '6 8 default' # foo

+ '9 9 command-substitution-delimiter-unquoted' # )

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/redirection-inhibits-elision.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/redirection-inhibits-elision.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..c0ca26744f22188394b994a4e59b9d87f8aa7bd3

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/redirection-inhibits-elision.zsh

@@ -0,0 +1,38 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= <$foo cat cat'

+

+expected_region_highlight=(

+ '1 1 redirection' # <

+ '2 5 default' # $foo

+ '7 9 command' # cat

+ '11 13 default' # cat

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/redirection-is-not-option.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/redirection-is-not-option.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..671f21e771d79b7cab983efcfb1988bf0b8cd16f

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/redirection-is-not-option.zsh

@@ -0,0 +1,38 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= : > -x >> --yy'

+

+expected_region_highlight=(

+ '1 1 builtin' # :

+ '3 3 redirection' # >

+ '5 6 default' # -x

+ '8 9 redirection' # >>

+ '11 14 default' # --yy

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/redirection-special-cases.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/redirection-special-cases.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..733cf6bd88c2c8a9d1e7ce13a4708efa15641756

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/redirection-special-cases.zsh

@@ -0,0 +1,44 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2019 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# See xpandredir() in the zsh source.

+

+BUFFER= cat <&p; exec {myfd}>&-'

+

+expected_region_highlight=(

+ '1 3 command' # cat

+ '5 6 redirection' # <&

+ '7 7 redirection' # p

+ '8 8 commandseparator' # ;

+ '10 13 precommand' # exec

+ '15 20 named-fd' # {myfd}

+ '21 22 redirection' # >&

+ '23 23 redirection' # -

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/redirection.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/redirection.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..6a25971a49d84078f34bee2f8f8e4f505cd20119

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/redirection.zsh

@@ -0,0 +1,39 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# Redirection before and after the command word are implemented differently; test both.

+BUFFER='<<<foo echo >>&!bar'

+

+expected_region_highlight=(

+ "1 3 redirection" # <<<

+ "4 6 default" # foo

+ "8 11 builtin" # echo

+ "13 16 redirection" # >>&!

+ "17 19 default" # bar

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/redirection2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/redirection2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..d44c8e7af22301819d2aa170a7de7de8e48256f7

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/redirection2.zsh

@@ -0,0 +1,41 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='ls >(wc) | nl'

+

+expected_region_highlight=(

+ "1 2 command" # ls

+ "4 8 default" # >(wc)

+ "4 8 process-substitution" # >(wc)

+ "4 5 process-substitution-delimiter" # >(

+ "6 7 command" # wc

+ "8 8 process-substitution-delimiter" # )

+ "10 10 commandseparator" # |

+ "12 13 command" # nl

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/redirection3.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/redirection3.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..bf062cfb71e5411748041f64b5e7bc87a1733d2a

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/redirection3.zsh

@@ -0,0 +1,42 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2017 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER=': >>>; : <>\<<<<EOF'

+

+expected_region_highlight=(

+ "1 1 builtin" # :

+ "3 4 redirection" # >>

+ "5 5 unknown-token" # >

+ "6 6 commandseparator" # ;

+ "8 8 builtin" # :

+ "10 11 redirection" # <>

+ "12 13 default" # \<

+ "14 16 redirection" # <<<

+ "17 19 default" # EOF

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/reserved-word.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/reserved-word.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..aca3796d8caf4bc25798292a08ef277c6f3e15db

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/reserved-word.zsh

@@ -0,0 +1,38 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='repeat "1" do done'

+

+expected_region_highlight=(

+ "1 6 reserved-word" # repeat

+ "8 10 default" # "1"

+ "8 10 double-quoted-argument" # "1"

+ "12 13 reserved-word" # do

+ "15 18 reserved-word" # done

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/simple-command.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/simple-command.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..8bb41fd051023736429e7021c869b23513f0984f

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/simple-command.zsh

@@ -0,0 +1,34 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2010-2011 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='ls'

+

+expected_region_highlight=(

+ "1 2 command" # ls

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/simple-redirection.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/simple-redirection.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..e8c25e55d1fdd3004f9d97312ec763055e01adbf

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/simple-redirection.zsh

@@ -0,0 +1,38 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='ps aux | grep java'

+

+expected_region_highlight=(

+ "1 2 command" # ps

+ "4 6 default" # aux

+ "8 8 commandseparator" # |

+ "10 13 command" # grep

+ "15 18 default" # java

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/subshell.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/subshell.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..c068013e084eaac160bcada65b45ae71046ff522

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/subshell.zsh

@@ -0,0 +1,51 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='tar cf - * | (cd /target; tar xfp -) | { cat }'

+

+expected_region_highlight=(

+ "1 3 command" # tar

+ "5 6 default" # cf

+ "8 8 single-hyphen-option" # -

+ "10 10 default" # *

+ "10 10 globbing" # *

+ "12 12 commandseparator" # |

+ "14 14 reserved-word" # (

+ "15 16 builtin" # cd

+ "18 24 default" # /target

+ "25 25 commandseparator" # ;

+ "27 29 command" # tar

+ "31 33 default" # xfp

+ "35 35 single-hyphen-option" # -

+ "36 36 reserved-word" # )

+ "38 38 commandseparator" # |

+ "40 40 reserved-word" # {

+ "42 44 command" # cat

+ "46 46 reserved-word" # }

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/sudo-command.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/sudo-command.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..941349a096d2a32192605e51325996208d25e6a5

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/sudo-command.zsh

@@ -0,0 +1,54 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+sudo(){}

+

+# Tests three codepaths:

+# * -i (no argument)

+# * -C3 (pasted argument)

+# * -u otheruser (non-pasted argument)

+BUFFER='sudo -C3 -u otheruser -i ls /; sudo ; sudo -u ; sudo notacommand'

+

+expected_region_highlight=(

+ "1 4 precommand" # sudo

+ "6 8 single-hyphen-option" # -C3

+ "10 11 single-hyphen-option" # -u

+ "13 21 default" # otheruser

+ "23 24 single-hyphen-option" # -i

+ "26 27 command" # ls

+ "29 29 path" # /

+ "30 30 commandseparator" # ;

+ "32 35 precommand" # sudo

+ "37 37 unknown-token" # ;, error because empty command

+ "39 42 precommand" # sudo

+ "44 45 single-hyphen-option" # -u

+ "47 47 unknown-token" # ;, error because incomplete command

+ "49 52 precommand" # sudo

+ "54 64 unknown-token" # notacommand - doesn't falls back to "not a command word" codepath

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/sudo-comment.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/sudo-comment.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..74cd905a117dc363b23b5bc53d3e241adb2f5698

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/sudo-comment.zsh

@@ -0,0 +1,39 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+sudo(){}

+

+setopt interactive_comments

+BUFFER='sudo -u # comment'

+

+expected_region_highlight=(

+ "1 4 precommand" # sudo

+ "6 7 single-hyphen-option" # -u

+ "9 17 unknown-token" # "# comment" - error because argument missed

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/sudo-longopt.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/sudo-longopt.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..ef768bfbd0cf7d4f8742654f30c15c3c90bd4f4a

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/sudo-longopt.zsh

@@ -0,0 +1,38 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+hash sudo='false'

+BUFFER='sudo --askpass ls'

+

+expected_region_highlight=(

+ '1 4 precommand' # sudo

+ '6 14 double-hyphen-option' # --askpass

+ '16 17 command' # ls (we don't know whether --askpass takes an argument)

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/sudo-redirection.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/sudo-redirection.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..c675d7d27ebfee7e7342bd52064303df34fd58f7

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/sudo-redirection.zsh

@@ -0,0 +1,48 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+sudo(){}

+

+BUFFER='sudo -u >/tmp otheruser ls; sudo ls; sudo -i ls'

+

+expected_region_highlight=(

+ "1 4 precommand" # sudo

+ "6 7 single-hyphen-option" # -u

+ "9 9 redirection" # >

+ "10 13 path" # /tmp

+ "15 23 default" # otheruser

+ "25 26 command" # ls

+ "27 27 commandseparator" # ;

+ "29 32 precommand" # sudo

+ "34 35 command" # ls

+ "36 36 commandseparator" # ;

+ "38 41 precommand" # sudo

+ "43 44 single-hyphen-option" # -i

+ "46 47 command" # ls

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/sudo-redirection2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/sudo-redirection2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..23ada53cbce8a440f4589c1923a28233e70cd9ae

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/sudo-redirection2.zsh

@@ -0,0 +1,41 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+sudo(){}

+

+BUFFER='sudo >/tmp -u otheruser ls'

+

+expected_region_highlight=(

+ "1 4 precommand" # sudo

+ "6 6 redirection" # >

+ "7 10 path" # /tmp

+ "12 13 single-hyphen-option" # -u

+ "15 23 default" # otheruser

+ "25 26 command" # ls

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/sudo-redirection3.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/sudo-redirection3.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..80e55b55f8e68e4a0d0c722c7b95c1f322589fc7

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/sudo-redirection3.zsh

@@ -0,0 +1,41 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+sudo(){}

+

+BUFFER='sudo 2>./. -u otheruser ls'

+

+expected_region_highlight=(

+ "1 4 precommand" # sudo

+ "6 7 redirection" # 2>

+ "8 10 path" # ./. # a 3-character path, for alignment with sudo-redirection2.zsh

+ "12 13 single-hyphen-option" # -u

+ "15 23 default" # otheruser

+ "25 26 command" # ls

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/tilde-command-word.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/tilde-command-word.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..67c996c905ce2ebff919ed4db6ad421a5a30d5d4

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/tilde-command-word.zsh

@@ -0,0 +1,37 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+hash -d D=/usr/bin

+

+BUFFER='~D/env foo'

+

+expected_region_highlight=(

+ "1 6 command" # ~D/env [= /usr/bin/env

+ "8 10 default" # foo

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/time-and-nocorrect1.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/time-and-nocorrect1.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..fb398edff800378f3ae07a31b1168e446f28fbba

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/time-and-nocorrect1.zsh

@@ -0,0 +1,39 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2019 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= time ls; nocorrect ls'

+

+expected_region_highlight=(

+ '1 4 reserved-word' # time

+ '6 7 command' # ls

+ '8 8 commandseparator' # ;

+ '10 18 reserved-word' # nocorrect

+ '20 21 command' # ls

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/time-and-nocorrect2.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/time-and-nocorrect2.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..5549ee926506dfac46719fb0ba183fa58c1c7429

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/time-and-nocorrect2.zsh

@@ -0,0 +1,40 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2019 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER= time ls; nocorrect ls'

+alias time=':' nocorrect=':'

+

+expected_region_highlight=(

+ '1 4 alias' # time

+ '6 7 default' # ls

+ '8 8 commandseparator' # ;

+ '10 18 alias' # nocorrect

+ '20 21 default' # ls

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/unbackslash.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/unbackslash.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..c8dfbd4c6762b38e3967419b3c11bf75dbbabddf

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/unbackslash.zsh

@@ -0,0 +1,34 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='\sh'

+

+expected_region_highlight=(

+ "1 3 command" # \sh (runs 'sh', bypassing aliases)

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/unknown-command.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/unknown-command.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..e71faec58aa34be1686133876161b266263664b4

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/unknown-command.zsh

@@ -0,0 +1,34 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2010-2011 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='azertyuiop'

+

+expected_region_highlight=(

+ "1 10 unknown-token" # azertyuiop

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/vanilla-newline.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/vanilla-newline.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..bd60ad4cc37e85b0982befd7b7afdcc04a1e7215

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/vanilla-newline.zsh

@@ -0,0 +1,39 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+PREBUFFER= echo foo; echo bar\n\n\n'

+BUFFER=' echo baz; echo qux'

+

+expected_region_highlight=(

+ "2 5 builtin" # echo

+ "7 9 default" # baz

+ "10 10 commandseparator" # semicolon

+ "12 15 builtin" # echo

+ "17 19 default" # qux

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/main/test-data/vi-linewise-mode.zsh b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/vi-linewise-mode.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..7003c49ceecf489d528632f19391d81e1479a895

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/main/test-data/vi-linewise-mode.zsh

@@ -0,0 +1,43 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# See issue #267 for the magic numbers

+BUFFER= foo foo\nbar bar'

+REGION_ACTIVE=2

+CURSOR=4

+MARK=12

+

+expected_region_highlight=(

+ "1 3 unknown-token" # foo

+ "5 7 default" # foo

+ "8 8 commandseparator" # \n

+ "9 11 unknown-token" # bar

+ "13 15 default" # bar

+ "1 15 standout" # foo foo\nbar bar

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/pattern/README.md b/zsh/.zsh/zsh-syntax/highlighters/pattern/README.md

new file mode 120000

index 0000000000000000000000000000000000000000..5ff00e645182a877655be38487877cd6307520d8

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/pattern/README.md

@@ -0,0 +1 @@

+../../docs/highlighters/pattern.md

\ No newline at end of file

diff --git a/zsh/.zsh/zsh-syntax/highlighters/pattern/pattern-highlighter.zsh b/zsh/.zsh/zsh-syntax/highlighters/pattern/pattern-highlighter.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..e0422d08484748e18e406419f9787b781148fe12

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/pattern/pattern-highlighter.zsh

@@ -0,0 +1,60 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2010-2011 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+

+# List of keyword and color pairs.

+typeset -gA ZSH_HIGHLIGHT_PATTERNS

+

+# Whether the pattern highlighter should be called or not.

+_zsh_highlight_highlighter_pattern_predicate()

+{

+ _zsh_highlight_buffer_modified

+}

+

+# Pattern syntax highlighting function.

+_zsh_highlight_highlighter_pattern_paint()

+{

+ setopt localoptions extendedglob

+ local pattern

+ for pattern in ${(k)ZSH_HIGHLIGHT_PATTERNS}; do

+ _zsh_highlight_pattern_highlighter_loop "$BUFFER" "$pattern"

+ done

+}

+

+_zsh_highlight_pattern_highlighter_loop()

+{

+ # This does *not* do its job syntactically, sorry.

+ local buf="$1" pat="$2"

+ local -a match mbegin mend

+ local MATCH; integer MBEGIN MEND

+ if [[ "$buf" == (#b)(*)(${~pat})* ]]; then

+ region_highlight+=("$((mbegin[2] - 1)) $mend[2] $ZSH_HIGHLIGHT_PATTERNS[$pat], memo=zsh-syntax-highlighting")

+ "$0" "$match[1]" "$pat"; return $?

+ fi

+}

diff --git a/zsh/.zsh/zsh-syntax/highlighters/pattern/test-data/rm-rf.zsh b/zsh/.zsh/zsh-syntax/highlighters/pattern/test-data/rm-rf.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..2f76929408531a3b0b0e1ca65c95e955bde6af63

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/pattern/test-data/rm-rf.zsh

@@ -0,0 +1,36 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+ZSH_HIGHLIGHT_PATTERNS+=('rm -rf *' 'fg=white,bold,bg=red')

+

+BUFFER='rm -rf /'

+

+expected_region_highlight=(

+ "1 8 fg=white,bold,bg=red" # rm -rf /

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/regexp/README.md b/zsh/.zsh/zsh-syntax/highlighters/regexp/README.md

new file mode 120000

index 0000000000000000000000000000000000000000..9f2522d5197bda6c1c177b68eeed1b63f0283922

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/regexp/README.md

@@ -0,0 +1 @@

+../../docs/highlighters/regexp.md

\ No newline at end of file

diff --git a/zsh/.zsh/zsh-syntax/highlighters/regexp/regexp-highlighter.zsh b/zsh/.zsh/zsh-syntax/highlighters/regexp/regexp-highlighter.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..0d43aacd3ae226f430b20defe43b8f81effea5bc

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/regexp/regexp-highlighter.zsh

@@ -0,0 +1,62 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2010-2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+

+# List of keyword and color pairs.

+typeset -gA ZSH_HIGHLIGHT_REGEXP

+

+# Whether the pattern highlighter should be called or not.

+_zsh_highlight_highlighter_regexp_predicate()

+{

+ _zsh_highlight_buffer_modified

+}

+

+# Pattern syntax highlighting function.

+_zsh_highlight_highlighter_regexp_paint()

+{

+ setopt localoptions extendedglob

+ local pattern

+ for pattern in ${(k)ZSH_HIGHLIGHT_REGEXP}; do

+ _zsh_highlight_regexp_highlighter_loop "$BUFFER" "$pattern"

+ done

+}

+

+_zsh_highlight_regexp_highlighter_loop()

+{

+ local buf="$1" pat="$2"

+ integer OFFSET=0

+ local MATCH; integer MBEGIN MEND

+ local -a match mbegin mend

+ while true; do

+ [[ "$buf" =~ "$pat" ]] || return;

+ region_highlight+=("$((MBEGIN - 1 + OFFSET)) $((MEND + OFFSET)) $ZSH_HIGHLIGHT_REGEXP[$pat], memo=zsh-syntax-highlighting")

+ buf="$buf[$(($MEND+1)),-1]"

+ OFFSET=$((MEND+OFFSET));

+ done

+}

diff --git a/zsh/.zsh/zsh-syntax/highlighters/regexp/test-data/complex.zsh b/zsh/.zsh/zsh-syntax/highlighters/regexp/test-data/complex.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..4e0089b96bc4733d6202625d26094f9dd6e91c1a

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/regexp/test-data/complex.zsh

@@ -0,0 +1,37 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+ZSH_HIGHLIGHT_REGEXP+=('[0-9\+\-]+' 'fg=white,bold,bg=red')

+

+BUFFER='echo 1+9-3 7+2'

+

+expected_region_highlight=(

+ "6 10 fg=white,bold,bg=red"

+ "12 14 fg=white,bold,bg=red"

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/regexp/test-data/subexpression.zsh b/zsh/.zsh/zsh-syntax/highlighters/regexp/test-data/subexpression.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..308cb413f516d93b5fe7c04fb2c6e3aa62989ba1

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/regexp/test-data/subexpression.zsh

@@ -0,0 +1,36 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2018 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+BUFFER='ls foo'

+ZSH_HIGHLIGHT_REGEXP=('(^| )(ls|cd)($| )' 'fg=green')

+

+expected_region_highlight=(

+ '1 3 fg=green' # "ls "

+)

diff --git a/zsh/.zsh/zsh-syntax/highlighters/regexp/test-data/word-boundary.zsh b/zsh/.zsh/zsh-syntax/highlighters/regexp/test-data/word-boundary.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..1f4f6665bff7c79593a50faf08a096efa2eb6a61

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/regexp/test-data/word-boundary.zsh

@@ -0,0 +1,42 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+if zmodload zsh/pcre 2>/dev/null; then

+ setopt RE_MATCH_PCRE

+

+ ZSH_HIGHLIGHT_REGEXP+=('\bsudo\b' 'fg=white,bold,bg=red')

+

+ BUFFER='sudo ls'

+

+ expected_region_highlight=(

+ "1 4 fg=white,bold,bg=red"

+ )

+else

+ skip_test='Test requires zsh/pcre'

+fi

diff --git a/zsh/.zsh/zsh-syntax/highlighters/root/README.md b/zsh/.zsh/zsh-syntax/highlighters/root/README.md

new file mode 120000

index 0000000000000000000000000000000000000000..ca6799d6f1059b74dee455346fd20217eb232a1c

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/root/README.md

@@ -0,0 +1 @@

+../../docs/highlighters/root.md

\ No newline at end of file

diff --git a/zsh/.zsh/zsh-syntax/highlighters/root/root-highlighter.zsh b/zsh/.zsh/zsh-syntax/highlighters/root/root-highlighter.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..3718c449ae43b939766be352e5b2f7d6a494f425

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/highlighters/root/root-highlighter.zsh

@@ -0,0 +1,44 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2010-2011 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+

+# Define default styles.

+: ${ZSH_HIGHLIGHT_STYLES[root]:=standout}

+

+# Whether the root highlighter should be called or not.

+_zsh_highlight_highlighter_root_predicate()

+{

+ _zsh_highlight_buffer_modified

+}

+

+# root highlighting function.

+_zsh_highlight_highlighter_root_paint()

+{

+ if (( EUID == 0 )) { _zsh_highlight_add_highlight 0 $#BUFFER root }

+}

diff --git a/zsh/.zsh/zsh-syntax/images/after1-smaller.png b/zsh/.zsh/zsh-syntax/images/after1-smaller.png

new file mode 100644

index 0000000000000000000000000000000000000000..768294c3b3cdee1b8bb60849faad86aaa05b4ab9

Binary files /dev/null and b/zsh/.zsh/zsh-syntax/images/after1-smaller.png differ

diff --git a/zsh/.zsh/zsh-syntax/images/after1.png b/zsh/.zsh/zsh-syntax/images/after1.png

new file mode 100644

index 0000000000000000000000000000000000000000..ea378d3efbcf363e727d6c0689702d02ebd9700a

Binary files /dev/null and b/zsh/.zsh/zsh-syntax/images/after1.png differ

diff --git a/zsh/.zsh/zsh-syntax/images/after2-smaller.png b/zsh/.zsh/zsh-syntax/images/after2-smaller.png

new file mode 100644

index 0000000000000000000000000000000000000000..8b5b1f8f21d923c80a7d4c787e66774f4d9a170f

Binary files /dev/null and b/zsh/.zsh/zsh-syntax/images/after2-smaller.png differ

diff --git a/zsh/.zsh/zsh-syntax/images/after2.png b/zsh/.zsh/zsh-syntax/images/after2.png

new file mode 100644

index 0000000000000000000000000000000000000000..ddcbfad70bbb9e76d1a259408a4ac34870d922e9

Binary files /dev/null and b/zsh/.zsh/zsh-syntax/images/after2.png differ

diff --git a/zsh/.zsh/zsh-syntax/images/after3-smaller.png b/zsh/.zsh/zsh-syntax/images/after3-smaller.png

new file mode 100644

index 0000000000000000000000000000000000000000..d6aaa7bdf30aea607d98d8fa23f715534cb3bea7

Binary files /dev/null and b/zsh/.zsh/zsh-syntax/images/after3-smaller.png differ

diff --git a/zsh/.zsh/zsh-syntax/images/after3.png b/zsh/.zsh/zsh-syntax/images/after3.png

new file mode 100644

index 0000000000000000000000000000000000000000..7a0af8874bfd4084091c495ff1bf9aede523b11a

Binary files /dev/null and b/zsh/.zsh/zsh-syntax/images/after3.png differ

diff --git a/zsh/.zsh/zsh-syntax/images/after4-smaller.png b/zsh/.zsh/zsh-syntax/images/after4-smaller.png

new file mode 100644

index 0000000000000000000000000000000000000000..fc946cf038822083111f753f7bdb814ba8a22304

Binary files /dev/null and b/zsh/.zsh/zsh-syntax/images/after4-smaller.png differ

diff --git a/zsh/.zsh/zsh-syntax/images/before1-smaller.png b/zsh/.zsh/zsh-syntax/images/before1-smaller.png

new file mode 100644

index 0000000000000000000000000000000000000000..b29551eaf020276e65ae29976892d2e3de3e8453

Binary files /dev/null and b/zsh/.zsh/zsh-syntax/images/before1-smaller.png differ

diff --git a/zsh/.zsh/zsh-syntax/images/before1.png b/zsh/.zsh/zsh-syntax/images/before1.png

new file mode 100644

index 0000000000000000000000000000000000000000..80c6f54ff5941aad6244aa9f3be3cb4d4d0311ec

Binary files /dev/null and b/zsh/.zsh/zsh-syntax/images/before1.png differ

diff --git a/zsh/.zsh/zsh-syntax/images/before2-smaller.png b/zsh/.zsh/zsh-syntax/images/before2-smaller.png

new file mode 100644

index 0000000000000000000000000000000000000000..991a716d54186b242ea0a09c13b5533f5719d6bf

Binary files /dev/null and b/zsh/.zsh/zsh-syntax/images/before2-smaller.png differ

diff --git a/zsh/.zsh/zsh-syntax/images/before2.png b/zsh/.zsh/zsh-syntax/images/before2.png

new file mode 100644

index 0000000000000000000000000000000000000000..48cfc327a65b527fd73a8eaf144298e753e64357

Binary files /dev/null and b/zsh/.zsh/zsh-syntax/images/before2.png differ

diff --git a/zsh/.zsh/zsh-syntax/images/before3-smaller.png b/zsh/.zsh/zsh-syntax/images/before3-smaller.png

new file mode 100644

index 0000000000000000000000000000000000000000..e525c6d4b1478af025a32e29bed9c3883d5e9d2d

Binary files /dev/null and b/zsh/.zsh/zsh-syntax/images/before3-smaller.png differ

diff --git a/zsh/.zsh/zsh-syntax/images/before3.png b/zsh/.zsh/zsh-syntax/images/before3.png

new file mode 100644

index 0000000000000000000000000000000000000000..40c360151a09b90ea2b449b4e8f07c9a16d5837d

Binary files /dev/null and b/zsh/.zsh/zsh-syntax/images/before3.png differ

diff --git a/zsh/.zsh/zsh-syntax/images/before4-smaller.png b/zsh/.zsh/zsh-syntax/images/before4-smaller.png

new file mode 100644

index 0000000000000000000000000000000000000000..2dbd0588b767e802d3ff640de6319e5fdca4de24

Binary files /dev/null and b/zsh/.zsh/zsh-syntax/images/before4-smaller.png differ

diff --git a/zsh/.zsh/zsh-syntax/images/preview-smaller.png b/zsh/.zsh/zsh-syntax/images/preview-smaller.png

new file mode 100644

index 0000000000000000000000000000000000000000..6fb84d18e545b56beef047eea45d7b03f9e50c05

Binary files /dev/null and b/zsh/.zsh/zsh-syntax/images/preview-smaller.png differ

diff --git a/zsh/.zsh/zsh-syntax/images/preview.png b/zsh/.zsh/zsh-syntax/images/preview.png

new file mode 100644

index 0000000000000000000000000000000000000000..545cc511abf0cc90fc9020cf6665f5aad2062eec

Binary files /dev/null and b/zsh/.zsh/zsh-syntax/images/preview.png differ

diff --git a/zsh/.zsh/zsh-syntax/release.md b/zsh/.zsh/zsh-syntax/release.md

new file mode 100644

index 0000000000000000000000000000000000000000..075f22131987196d9d7ccf3987b9c9cdd219ad2c

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/release.md

@@ -0,0 +1,20 @@

+# Release procedure (for developers):

+

+- For minor (A.B.0) releases:

+ - Check whether the release uses any not-yet-released zsh features

+- Check open issues and outstanding pull requests

+- Confirm `make test` passes

+ - check with multiple zsh versions

+ (easiest to check GitHub Actions: https://github.com/zsh-users/zsh-syntax-highlighting/actions)

+- Update changelog.md

+ `tig --abbrev=12 --abbrev-commit 0.4.1..upstream/master`

+- Make sure there are no local commits and that `git status` is clean;

+ Remove `-dev` suffix from `./.version`;

+ Commit that using `git commit -m "Tag version $(<.version)." .version`;

+ Tag it using `git tag -s -m "Tag version $(<.version)" $(<.version)`;

+ Increment `./.version` and restore the `-dev` suffix;

+ Commit that using `git commit -C b5c30ae52638e81a38fe5329081c5613d7bd6ca5 .version`.

+- Push with `git push && git push --tags`

+- Notify downstreams (OS packages)

+ - anitya should autodetect the tag

+- Update /topic on IRC

diff --git a/zsh/.zsh/zsh-syntax/tests/README.md b/zsh/.zsh/zsh-syntax/tests/README.md

new file mode 100644

index 0000000000000000000000000000000000000000..cb3d943cb5140ea7b368c50af873e82df12a3ab9

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/tests/README.md

@@ -0,0 +1,124 @@

+zsh-syntax-highlighting / tests

+===============================

+

+Utility scripts for testing zsh-syntax-highlighting highlighters.

+

+The tests harness expects the highlighter directory to contain a `test-data`

+directory with test data files.

+See the [main highlighter](../highlighters/main/test-data) for examples.

+

+Tests should set the following variables:

+

+1.

+Each test should define the string `$BUFFER` that is to be highlighted and the

+array parameter `$expected_region_highlight`.

+The value of that parameter is a list of strings of the form `"$i $j $style"`.

+or `"$i $j $style $todo"`.

+Each string specifies the highlighting that `$BUFFER[$i,$j]` should have;

+that is, `$i` and `$j` specify a range, 1-indexed, inclusive of both endpoints.

+`$style` is a key of `$ZSH_HIGHLIGHT_STYLES`.

+If `$todo` exists, the test point is marked as TODO (the failure of that test

+point will not fail the test), and `$todo` is used as the explanation.

+

+2.

+If a test sets `$skip_test` to a non-empty string, the test will be skipped

+with the provided string as the reason.

+

+3.

+If a test sets `$fail_test` to a non-empty string, the test will be skipped

+with the provided string as the reason.

+

+4.

+If a test sets `unsorted=1` the order of highlights in `$expected_region_highlight`

+need not match the order in `$region_highlight`.

+

+5.

+Normally, tests fail if `$expected_region_highlight` and `$region_highlight`

+have different numbers of elements. To mark this check as expected to fail,

+tests may set `$expected_mismatch` to an explanation string (like `$todo`);

+this is useful when the only difference between actual and expected is that actual

+has some additional, superfluous elements. This check is skipped if the

+`$todo` component is present in any regular test point.

+

+**Note**: `$region_highlight` uses the same `"$i $j $style"` syntax but

+interprets the indexes differently.

+

+**Note**: Tests are run with `setopt NOUNSET WARN_CREATE_GLOBAL`, so any

+variables the test creates must be declared local.

+

+**Isolation**: Each test is run in a separate subshell, so any variables,

+aliases, functions, etc., it defines will be visible to the tested code (that

+computes `$region_highlight`), but will not affect subsequent tests. The

+current working directory of tests is set to a newly-created empty directory,

+which is automatically cleaned up after the test exits. For example:

+

+```zsh

+setopt PATH_DIRS

+mkdir -p foo/bar

+touch foo/bar/testing-issue-228

+chmod +x foo/bar/testing-issue-228

+path+=( "$PWD"/foo )

+

+BUFFER='bar/testing-issue-228'

+

+expected_region_highlight=(

+ "1 21 command" # bar/testing-issue-228

+)

+```

+

+

+Writing new tests

+-----------------

+

+An experimental tool is available to generate test files:

+

+```zsh

+zsh -f tests/generate.zsh 'ls -x' acme newfile

+```

+

+This generates a `highlighters/acme/test-data/newfile.zsh` test file based on

+the current highlighting of the given `$BUFFER` (in this case, `ls -x`).

+

+_This tool is experimental._ Its interface may change. In particular it may

+grow ways to set `$PREBUFFER` to inject free-form code into the generated file.

+

+

+Highlighting test

+-----------------

+

+[`test-highlighting.zsh`](tests/test-highlighting.zsh) tests the correctness of

+the highlighting. Usage:

+

+```zsh

+zsh test-highlighting.zsh <HIGHLIGHTER NAME>

+```

+

+All tests may be run with

+

+```zsh

+make test

+```

+

+which will run all highlighting tests and report results in [TAP format][TAP].

+By default, the results of all tests will be printed; to show only "interesting"

+results (tests that failed but were expected to succeed, or vice-versa), run

+`make quiet-test` (or `make test QUIET=y`).

+

+[TAP]: http://testanything.org/

+

+

+Performance test

+----------------

+

+[`test-perfs.zsh`](tests/test-perfs.zsh) measures the time spent doing the

+highlighting. Usage:

+

+```zsh

+zsh test-perfs.zsh <HIGHLIGHTER NAME>

+```

+

+All tests may be run with

+

+```zsh

+make perf

+```

diff --git a/zsh/.zsh/zsh-syntax/tests/edit-failed-tests b/zsh/.zsh/zsh-syntax/tests/edit-failed-tests

new file mode 100755

index 0000000000000000000000000000000000000000..e3a76685cddbc513348f62e810764e67607e086e

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/tests/edit-failed-tests

@@ -0,0 +1,40 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+type perl sponge >/dev/null || { print -ru2 -- "$0: This script requires perl(1) and sponge(1) [from moreutils]"; exit 1; }

+

+local editor=( "${(@Q)${(z)${VISUAL:-${EDITOR:-vi}}}}" )

+() {

+ > "$2" perl -nE '$highlighter = $1 if /^Running test (\S*)/; say "highlighters/${highlighter}/test-data/$1.zsh" if /^## (\S*)/' "$1"

+ >>"$2" echo ""

+ >>"$2" cat <"$1"

+ "${editor[@]}" -- "$2"

+} =(${MAKE:-make} quiet-test) =(:)

+# TODO: tee(1) the quiet-test output to /dev/tty as it's happening, with colors.

diff --git a/zsh/.zsh/zsh-syntax/tests/generate.zsh b/zsh/.zsh/zsh-syntax/tests/generate.zsh

new file mode 100755

index 0000000000000000000000000000000000000000..56960202b42e2e426bdd57de92e61d28b605dd2d

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/tests/generate.zsh

@@ -0,0 +1,117 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2016 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+emulate -LR zsh

+setopt localoptions extendedglob

+

+# Required for add-zle-hook-widget.

+zmodload zsh/zle

+

+# Argument parsing.

+if (( $# * $# - 7 * $# + 12 )) || [[ $1 == -* ]]; then

+ print -r -- >&2 "$0: usage: $0 BUFFER HIGHLIGHTER BASENAME [PREAMBLE]"

+ print -r -- >&2 ""

+ print -r -- >&2 "Generate highlighters/HIGHLIGHTER/test-data/BASENAME.zsh based on the"

+ print -r -- >&2 "current highlighting of BUFFER, using the setup code PREAMBLE."

+ exit 1

+fi

+buffer=$1

+ZSH_HIGHLIGHT_HIGHLIGHTERS=( $2 )

+fname=${0:A:h:h}/highlighters/$2/test-data/${3%.zsh}.zsh

+preamble=${4:-""}

+

+# Load the main script.

+. ${0:A:h:h}/zsh-syntax-highlighting.zsh

+

+# Overwrite _zsh_highlight_add_highlight so we get the key itself instead of the style

+_zsh_highlight_add_highlight()

+{

+ region_highlight+=("$1 $2 $3")

+}

+

+

+# Copyright block

+year="`LC_ALL=C date +%Y`"

+if ! { read -q "?Set copyright year to $year? " } always { echo "" }; then

+ year="YYYY"

+fi

+<$0 sed -n -e '1,/^$/p' | sed -e "s/2[0-9][0-9][0-9]/${year}/" > $fname

+# Assumes stdout is line-buffered

+git add -- $fname

+exec > >(tee -a $fname)

+

+# Preamble

+if [[ -n $preamble ]]; then

+ print -rl -- "$preamble" ""

+fi

+

+# Buffer

+print -n 'BUFFER='

+if [[ $buffer != (#s)[ \t -~']#(#e) ]]; then

+ print -r -- ${(qqqq)buffer}

+else

+ print -r -- ${(qq)buffer}

+fi

+echo ""

+

+# Expectations

+print 'expected_region_highlight=('

+() {

+ local i

+ local PREBUFFER

+ local BUFFER

+

+ PREBUFFER=""

+ BUFFER="$buffer"

+ region_highlight=()

+ eval $(

+ exec 3>&1 >/dev/null

+ typeset -r __tests_tmpdir="$(mktemp -d)"

+ {

+ # Use a subshell to ensure $__tests_tmpdir, which is to be rm -rf'd, won't be modified.

+ (cd -- "$__tests_tmpdir" && eval $preamble && _zsh_highlight && typeset -p region_highlight >&3)

+ : # workaround zsh bug workers/45305 with respect to the $(…) subshell we're in

+ } always {

+ rm -rf -- ${__tests_tmpdir}

+ }

+ )

+

+ for ((i=1; i<=${#region_highlight}; i++)); do

+ local -a highlight_zone; highlight_zone=( ${(z)region_highlight[$i]} )

+ integer start=$highlight_zone[1] end=$highlight_zone[2]

+ if (( start < end )) # region_highlight ranges are half-open

+ then

+ (( --end )) # convert to closed range, like expected_region_highlight

+ (( ++start, ++end )) # region_highlight is 0-indexed; expected_region_highlight is 1-indexed

+ fi

+ printf " %s # %s\n" ${(qq):-"$start $end $highlight_zone[3]"} ${${(qqqq)BUFFER[start,end]}[3,-2]}

+ done

+}

+print ')'

diff --git a/zsh/.zsh/zsh-syntax/tests/tap-colorizer.zsh b/zsh/.zsh/zsh-syntax/tests/tap-colorizer.zsh

new file mode 100755

index 0000000000000000000000000000000000000000..f3dc84e7e61b4a28dcb412412edd0a1c70f814e9

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/tests/tap-colorizer.zsh

@@ -0,0 +1,71 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015, 2017 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# This is a stdin-to-stdout filter that takes TAP output (such as 'make test')

+# on stdin and passes it, colorized, to stdout.

+

+emulate -LR zsh

+

+if [[ ! -t 1 ]] ; then

+ exec cat

+fi

+

+while read -r line;

+do

+ case $line in

+ # comment (filename header) or plan

+ (#* | <->..<->)

+ print -nP %F{blue}

+ ;;

+ # SKIP

+ (*# SKIP*)

+ print -nP %F{yellow}

+ ;;

+ # XPASS

+ (ok*# TODO*)

+ print -nP %F{red}

+ ;;

+ # XFAIL

+ (not ok*# TODO*)

+ print -nP %F{yellow}

+ ;;

+ # FAIL

+ (not ok*)

+ print -nP %F{red}

+ ;;

+ # PASS

+ (ok*)

+ print -nP %F{green}

+ ;;

+ esac

+ print -nr - "$line"

+ print -nP %f

+ echo "" # newline

+done

diff --git a/zsh/.zsh/zsh-syntax/tests/tap-filter b/zsh/.zsh/zsh-syntax/tests/tap-filter

new file mode 100755

index 0000000000000000000000000000000000000000..f9aa604143b46ea53de8943eb5ca7ecd50f9fe92

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/tests/tap-filter

@@ -0,0 +1,47 @@

+#!/usr/bin/env perl

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# vim: ft=perl sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# This is a stdin-to-stdout filter that takes TAP output (such as 'make test')

+# on stdin and deletes lines pertaining to expected results.

+#

+# More specifically, if any of the test points in a test file either failed but

+# was expected to pass, or passed but was expected to fail, then emit that test

+# file's output; else, elide that test file's output.

+

+use v5.10.0;

+use warnings;

+use strict;

+

+undef $/; # slurp mode

+print for

+ grep { /^ok.*# TODO/m or /^not ok(?!.*# TODO)/m or /^Bail out!/m }

+ # Split on plan lines and remove them from the output. (To keep them,

+ # use the lookahead syntax, «(?=…)», to make the match zero-length.)

+ split /^\d+\.\.\d+$/m,

+ <STDIN>;

diff --git a/zsh/.zsh/zsh-syntax/tests/test-highlighting.zsh b/zsh/.zsh/zsh-syntax/tests/test-highlighting.zsh

new file mode 100755

index 0000000000000000000000000000000000000000..8b564a8b97c6de3d4a44f7f8232b725dc7a24528

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/tests/test-highlighting.zsh

@@ -0,0 +1,291 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2010-2017 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+

+setopt NO_UNSET WARN_CREATE_GLOBAL

+

+# Required for add-zle-hook-widget.

+zmodload zsh/zle

+

+local -r root=${0:h:h}

+local -a anon_argv; anon_argv=("$@")

+

+(){

+set -- "${(@)anon_argv}"

+# Check an highlighter was given as argument.

+[[ -n "$1" ]] || {

+ echo >&2 "Bail out! You must provide the name of a valid highlighter as argument."

+ exit 2

+}

+

+# Check the highlighter is valid.

+[[ -f $root/highlighters/$1/$1-highlighter.zsh ]] || {

+ echo >&2 "Bail out! Could not find highlighter ${(qq)1}."

+ exit 2

+}

+

+# Check the highlighter has test data.

+[[ -d $root/highlighters/$1/test-data ]] || {

+ echo >&2 "Bail out! Highlighter ${(qq)1} has no test data."

+ exit 2

+}

+

+# Set up results_filter

+local results_filter

+if [[ ${QUIET-} == y ]]; then

+ if type -w perl >/dev/null; then

+ results_filter=$root/tests/tap-filter

+ else

+ echo >&2 "Bail out! quiet mode not supported: perl not found"; exit 2

+ fi

+else

+ results_filter=cat

+fi

+[[ -n $results_filter ]] || { echo >&2 "Bail out! BUG setting \$results_filter"; exit 2 }

+

+# Load the main script.

+# While here, test that it doesn't eat aliases.

+print > >($results_filter | $root/tests/tap-colorizer.zsh) -r -- "# global (driver) tests"

+print > >($results_filter | $root/tests/tap-colorizer.zsh) -r -- "1..1"

+alias -- +plus=plus

+alias -- _other=other

+local original_alias_dash_L_output="$(alias -L)"

+. $root/zsh-syntax-highlighting.zsh

+if [[ $original_alias_dash_L_output == $(alias -L) ]]; then

+ print -r -- "ok 1 # 'alias -- +foo=bar' is preserved"

+else

+ print -r -- "not ok 1 # 'alias -- +foo=bar' is preserved"

+ exit 1

+fi > >($results_filter | $root/tests/tap-colorizer.zsh)

+

+# Overwrite _zsh_highlight_add_highlight so we get the key itself instead of the style

+_zsh_highlight_add_highlight()

+{

+ region_highlight+=("$1 $2 $3")

+}

+

+# Activate the highlighter.

+ZSH_HIGHLIGHT_HIGHLIGHTERS=($1)

+

+# In zsh<5.3, 'typeset -p arrayvar' emits two lines, so we use this wrapper instead.

+typeset_p() {

+ for 1 ; do

+ if [[ ${(tP)1} == *array* ]]; then

+ print -r -- "$1=( ${(@qqqqP)1} )"

+ else

+ print -r -- "$1=${(qqqqP)1}"

+ fi

+ done

+}

+

+# Escape # as ♯ and newline as ↵ they are illegal in the 'description' part of TAP output

+# The string to escape is «"$@"»; the result is returned in $REPLY.

+tap_escape() {

+ local s="${(j. .)@}"

+ REPLY="${${s//'#'/♯}// \n'/↵}"

+}

+

+# Runs a highlighting test

+# $1: data file

+run_test_internal() {

+

+ local tests_tempdir="$1"; shift

+ local srcdir="$PWD"

+ builtin cd -q -- "$tests_tempdir" || { echo >&2 "Bail out! On ${(qq)1}: cd failed: $?"; return 1 }

+

+ # Load the data and prepare checking it.

+ local BUFFER CURSOR MARK PENDING PREBUFFER REGION_ACTIVE WIDGET REPLY skip_test fail_test unsorted=0

+ local expected_mismatch

+ local skip_mismatch

+ local -a expected_region_highlight region_highlight

+

+ local ARG="$1"

+ local RETURN=""

+ () {

+ setopt localoptions

+

+ # WARNING: The remainder of this anonymous function will run with the test's options in effect

+ if { ! . "$srcdir"/"$ARG" } || (( $#fail_test )); then

+ print -r -- "1..1"

+ print -r -- "## ${ARG:t:r}"

+ tap_escape $fail_test; fail_test=$REPLY

+ print -r -- "not ok 1 - failed setup: $fail_test"

+ return ${RETURN:=0}

+ fi

+

+ (( $#skip_test )) && {

+ print -r -- "1..0 # SKIP $skip_test"

+ print -r -- "## ${ARG:t:r}"

+ return ${RETURN:=0}

+ }

+

+ # Check the data declares $PREBUFFER or $BUFFER.

+ [[ -z $PREBUFFER && -z $BUFFER ]] && { echo >&2 "Bail out! On ${(qq)ARG}: Either 'PREBUFFER' or 'BUFFER' must be declared and non-blank"; return ${RETURN:=1}; }

+ [[ $PREBUFFER == (''|* \n') ]] || { echo >&2 "Bail out! On ${(qq)ARG}: PREBUFFER=${(qqqq)PREBUFFER} doesn't end with a newline"; return ${RETURN:=1}; }

+

+ # Set sane defaults for ZLE variables

+ : ${CURSOR=$#BUFFER} ${PENDING=0} ${WIDGET=z-sy-h-test-harness-test-widget}

+

+ # Process the data.

+ _zsh_highlight

+ }; [[ -z $RETURN ]] || return $RETURN

+ unset ARG

+

+ integer print_expected_and_actual=0

+

+ if (( unsorted )); then

+ region_highlight=("${(@n)region_highlight}")

+ expected_region_highlight=("${(@n)expected_region_highlight}")

+ fi

+

+ # Print the plan line, and some comments for human readers

+ echo "1..$(( $#expected_region_highlight + 1))"

+ echo "## ${1:t:r}" # note: tests/edit-failed-tests looks for the "##" emitted by this line

+ [[ -n $PREBUFFER ]] && printf '# %s\n' "$(typeset_p PREBUFFER)"

+ [[ -n $BUFFER ]] && printf '# %s\n' "$(typeset_p BUFFER)"

+

+ local i

+ for ((i=1; i<=$#expected_region_highlight; i++)); do

+ local -a expected_highlight_zone; expected_highlight_zone=( ${(z)expected_region_highlight[i]} )

+ integer exp_start=$expected_highlight_zone[1] exp_end=$expected_highlight_zone[2]

+ local todo=

+ if (( $+expected_highlight_zone[4] )); then

+ todo="# TODO $expected_highlight_zone[4]"

+ skip_mismatch="cardinality check disabled whilst regular test points are expected to fail"

+ fi

+ if ! (( $+region_highlight[i] )); then

+ print -r -- "not ok $i - unmatched expectation ($exp_start $exp_end $expected_highlight_zone[3])" \

+ "${skip_mismatch:+"# TODO ${(qqq)skip_mismatch}"}"

+ if [[ -z $skip_mismatch ]]; then (( ++print_expected_and_actual )); fi

+ continue

+ fi

+ local -a highlight_zone; highlight_zone=( ${(z)region_highlight[i]} )

+ integer start=$(( highlight_zone[1] + 1 )) end=$highlight_zone[2]

+ local desc="[$start,$end] «${BUFFER[$start,$end]}»"

+ tap_escape $desc; desc=$REPLY

+ if

+ [[ $start != $exp_start ]] ||

+ [[ $end != $exp_end ]] ||

+ [[ ${highlight_zone[3]%,} != ${expected_highlight_zone[3]} ]] # remove the comma that's before the memo field

+ then

+ print -r -- "not ok $i - $desc - expected ($exp_start $exp_end ${(qqq)expected_highlight_zone[3]}), observed ($start $end ${(qqq)highlight_zone[3]}). $todo"

+ if [[ -z $todo ]]; then (( ++print_expected_and_actual )); fi

+ else

+ print -r -- "ok $i - $desc${todo:+ - }$todo"

+ fi

+ unset expected_highlight_zone

+ unset exp_start exp_end

+ unset todo

+ unset highlight_zone

+ unset start end

+ unset desc

+ done

+

+ # If both $skip_mismatch and $expected_mismatch are set, that means the test

+ # has some XFail test points, _and_ explicitly sets $expected_mismatch as

+ # well. Explicit settings should have priority, so we ignore $skip_mismatch

+ # if $expected_mismatch is set.

+ if [[ -n $skip_mismatch && -z $expected_mismatch ]]; then

+ tap_escape $skip_mismatch; skip_mismatch=$REPLY

+ print "ok $i - cardinality check" "# SKIP $skip_mismatch"

+ else

+ local todo

+ if [[ -n $expected_mismatch ]]; then

+ tap_escape $expected_mismatch; expected_mismatch=$REPLY

+ todo="# TODO $expected_mismatch"

+ fi

+ if (( $#expected_region_highlight == $#region_highlight )); then

+ print -r -- "ok $i - cardinality check${todo:+ - }$todo"

+ else

+ local details

+ details+="have $#expected_region_highlight expectations and $#region_highlight region_highlight entries: "

+ details+="«$(typeset_p expected_region_highlight)» «$(typeset_p region_highlight)»"

+ tap_escape $details; details=$REPLY

+ print -r -- "not ok $i - cardinality check - $details${todo:+ - }$todo"

+ if [[ -z $todo ]]; then (( ++print_expected_and_actual )); fi

+ fi

+ fi

+ if (( print_expected_and_actual )); then

+ () {

+ local -a left_column right_column

+ left_column=( "expected_region_highlight" "${(qq)expected_region_highlight[@]}" )

+ right_column=( "region_highlight" "${(qq)region_highlight[@]}" )

+ integer difference=$(( $#right_column - $#left_column ))

+ repeat $difference do left_column+=(.); done

+ paste \

+ =(print -rC1 -- $left_column) \

+ =(print -rC1 -- $right_column) \

+ | if type column >/dev/null; then column -t -s \t'; else cat; fi \

+ | sed 's/^/# /'

+ }

+ fi

+}

+

+# Run a single test file. The exit status is 1 if the test harness had

+# an error and 0 otherwise. The exit status does not depend on whether

+# test points succeeded or failed.

+run_test() {

+ # Do not combine the declaration and initialization: «local x="$(false)"» does not set $?.

+ local __tests_tempdir

+ __tests_tempdir="$(mktemp -d)" && [[ -d $__tests_tempdir ]] || {

+ echo >&2 "Bail out! mktemp failed"; return 1

+ }

+ typeset -r __tests_tempdir # don't allow tests to override the variable that we will 'rm -rf' later on

+

+ {

+ # Use a subshell to isolate tests from each other.

+ # (So tests can alter global shell state using 'cd', 'hash', etc)

+ {

+ # These braces are so multios don't come into play.

+ { (run_test_internal "$__tests_tempdir" "$@") 3>&1 >&2 2>&3 } | grep \^

+ local ret=$pipestatus[1] stderr=$pipestatus[2]

+ if (( ! stderr )); then

+ # stdout will become stderr

+ echo "Bail out! On ${(qq)1}: output on stderr"; return 1

+ else

+ return $ret

+ fi

+ } 3>&1 >&2 2>&3

+ } always {

+ rm -rf -- "$__tests_tempdir"

+ }

+}

+

+# Process each test data file in test data directory.

+integer something_failed=0

+ZSH_HIGHLIGHT_STYLES=()

+local data_file

+for data_file in $root/highlighters/$1/test-data/*.zsh; do

+ run_test "$data_file" | tee >($results_filter | $root/tests/tap-colorizer.zsh) | grep -v '^not ok.*# TODO' | grep -Eq '^not ok|^ok.*# TODO' && (( something_failed=1 ))

+ (( $pipestatus[1] )) && exit 2

+done

+

+exit $something_failed

+}

diff --git a/zsh/.zsh/zsh-syntax/tests/test-perfs.zsh b/zsh/.zsh/zsh-syntax/tests/test-perfs.zsh

new file mode 100755

index 0000000000000000000000000000000000000000..aa139aad5c8ea742f37788f414ebf52c9e2074e0

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/tests/test-perfs.zsh

@@ -0,0 +1,103 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2010-2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+

+# Required for add-zle-hook-widget.

+zmodload zsh/zle

+

+# Check an highlighter was given as argument.

+[[ -n "$1" ]] || {

+ echo >&2 "Bail out! You must provide the name of a valid highlighter as argument."

+ exit 2

+}

+

+# Check the highlighter is valid.

+[[ -f ${0:h:h}/highlighters/$1/$1-highlighter.zsh ]] || {

+ echo >&2 "Bail out! Could not find highlighter ${(qq)1}."

+ exit 2

+}

+

+# Check the highlighter has test data.

+[[ -d ${0:h:h}/highlighters/$1/test-data ]] || {

+ echo >&2 "Bail out! Highlighter ${(qq)1} has no test data."

+ exit 2

+}

+

+# Load the main script.

+typeset -a region_highlight

+. ${0:h:h}/zsh-syntax-highlighting.zsh

+

+# Activate the highlighter.

+ZSH_HIGHLIGHT_HIGHLIGHTERS=($1)

+

+# Runs a highlighting test

+# $1: data file

+run_test_internal() {

+ local -a highlight_zone

+

+ local tests_tempdir="$1"; shift

+ local srcdir="$PWD"

+ builtin cd -q -- "$tests_tempdir" || { echo >&2 "Bail out! cd failed: $?"; return 1 }

+

+ # Load the data and prepare checking it.

+ PREBUFFER= BUFFER= ;

+ . "$srcdir"/"$1"

+

+ # Check the data declares $PREBUFFER or $BUFFER.

+ [[ -z $PREBUFFER && -z $BUFFER ]] && { echo >&2 "Bail out! Either 'PREBUFFER' or 'BUFFER' must be declared and non-blank"; return 1; }

+

+ # Set $? for _zsh_highlight

+ true && _zsh_highlight

+}

+

+run_test() {

+ # Do not combine the declaration and initialization: «local x="$(false)"» does not set $?.

+ local __tests_tempdir

+ __tests_tempdir="$(mktemp -d)" && [[ -d $__tests_tempdir ]] || {

+ echo >&2 "Bail out! mktemp failed"; return 1

+ }

+ typeset -r __tests_tempdir # don't allow tests to override the variable that we will 'rm -rf' later on

+

+ {

+ (run_test_internal "$__tests_tempdir" "$@")

+ } always {

+ rm -rf -- "$__tests_tempdir"

+ }

+}

+

+# Process each test data file in test data directory.

+local data_file

+TIMEFMT="%*Es"

+{ time (for data_file in ${0:h:h}/highlighters/$1/test-data/*.zsh; do

+ run_test "$data_file"

+ (( $pipestatus[1] )) && exit 2

+done) } 2>&1 || exit $?

+

+exit 0

diff --git a/zsh/.zsh/zsh-syntax/tests/test-zprof.zsh b/zsh/.zsh/zsh-syntax/tests/test-zprof.zsh

new file mode 100755

index 0000000000000000000000000000000000000000..ada161879831f879de5f884f3d0d0cd2559f0aae

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/tests/test-zprof.zsh

@@ -0,0 +1,78 @@

+#!/usr/bin/env zsh

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2010-2015 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# Load the main script.

+typeset -a region_highlight

+. ${0:h:h}/zsh-syntax-highlighting.zsh

+

+# Activate the highlighter.

+ZSH_HIGHLIGHT_HIGHLIGHTERS=(main)

+

+source_file=0.7.1:highlighters/$1/$1-highlighter.zsh

+

+# Runs a highlighting test

+# $1: data file

+run_test_internal() {

+ setopt interactivecomments

+

+ local -a highlight_zone

+

+ local tests_tempdir="$1"; shift

+ local srcdir="$PWD"

+ builtin cd -q -- "$tests_tempdir" || { echo >&2 "Bail out! cd failed: $?"; return 1 }

+

+ # Load the data and prepare checking it.

+ PREBUFFER=

+ BUFFER=$(cd -- "$srcdir" && git cat-file blob $source_file)

+ expected_region_highlight=()

+

+ zmodload zsh/zprof

+ zprof -c

+ # Set $? for _zsh_highlight

+ true && _zsh_highlight

+ zprof

+}

+

+run_test() {

+ # Do not combine the declaration and initialization: «local x="$(false)"» does not set $?.

+ local __tests_tempdir

+ __tests_tempdir="$(mktemp -d)" && [[ -d $__tests_tempdir ]] || {

+ echo >&2 "Bail out! mktemp failed"; return 1

+ }

+ typeset -r __tests_tempdir # don't allow tests to override the variable that we will 'rm -rf' later on

+

+ {

+ (run_test_internal "$__tests_tempdir" "$@")

+ } always {

+ rm -rf -- "$__tests_tempdir"

+ }

+}

+

+run_test

diff --git a/zsh/.zsh/zsh-syntax/zsh-syntax-highlighting.plugin.zsh b/zsh/.zsh/zsh-syntax/zsh-syntax-highlighting.plugin.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..f2456aecd5de5856dd43b57c3b51f45772adba53

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/zsh-syntax-highlighting.plugin.zsh

@@ -0,0 +1,2 @@

+0=${(%):-%N}

+source ${0:A:h}/zsh-syntax-highlighting.zsh

diff --git a/zsh/.zsh/zsh-syntax/zsh-syntax-highlighting.zsh b/zsh/.zsh/zsh-syntax/zsh-syntax-highlighting.zsh

new file mode 100644

index 0000000000000000000000000000000000000000..d20dc5b24291c7dcc0d28978201b24cd663c0e66

--- /dev/null

+++ b/zsh/.zsh/zsh-syntax/zsh-syntax-highlighting.zsh

@@ -0,0 +1,597 @@

+# -------------------------------------------------------------------------------------------------

+# Copyright (c) 2010-2020 zsh-syntax-highlighting contributors

+# All rights reserved.

+#

+# Redistribution and use in source and binary forms, with or without modification, are permitted

+# provided that the following conditions are met:

+#

+# * Redistributions of source code must retain the above copyright notice, this list of conditions

+# and the following disclaimer.

+# * Redistributions in binary form must reproduce the above copyright notice, this list of

+# conditions and the following disclaimer in the documentation and/or other materials provided

+# with the distribution.

+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors

+# may be used to endorse or promote products derived from this software without specific prior

+# written permission.

+#

+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR

+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND

+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR

+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER

+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+# -------------------------------------------------------------------------------------------------

+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-

+# vim: ft=zsh sw=2 ts=2 et

+# -------------------------------------------------------------------------------------------------

+

+# First of all, ensure predictable parsing.

+typeset zsh_highlight__aliases="$(builtin alias -Lm '[^+]*')"

+# In zsh <= 5.2, aliases that begin with a plus sign ('alias -- +foo=42')

+# are emitted by `alias -L` without a '--' guard, so they don't round trip.

+#

+# Hence, we exclude them from unaliasing:

+builtin unalias -m '[^+]*'

+

+# Set $0 to the expected value, regardless of functionargzero.

+0=${(%):-%N}

+if true; then

+ # $0 is reliable

+ typeset -g ZSH_HIGHLIGHT_VERSION=$(<"${0:A:h}"/.version)

+ typeset -g ZSH_HIGHLIGHT_REVISION=$(<"${0:A:h}"/.revision-hash)

+ if [[ $ZSH_HIGHLIGHT_REVISION == \$Format:* ]]; then

+ # When running from a source tree without 'make install', $ZSH_HIGHLIGHT_REVISION

+ # would be set to '$Format:%H literally. That's an invalid value, and obtaining

+ # the valid value (via `git rev-parse HEAD`, as Makefile does) might be costly, so:

+ ZSH_HIGHLIGHT_REVISION=HEAD

+ fi

+fi

+

+# This function takes a single argument F and returns True iff F is an autoload stub.

+_zsh_highlight__function_is_autoload_stub_p() {

+ if zmodload -e zsh/parameter; then

+ #(( ${+functions[$1]} )) &&

+ [[ "$functions[$1]" == *"builtin autoload -X"* ]]

+ else

+ #[[ $(type -wa -- "$1") == *'function'* ]] &&

+ [[ "${${(@f)"$(which -- "$1")"}[2]}" == \t'$histchars[3]' undefined' ]]

+ fi

+ # Do nothing here: return the exit code of the if.

+}

+

+# Return True iff the argument denotes a function name.

+_zsh_highlight__is_function_p() {

+ if zmodload -e zsh/parameter; then

+ (( ${+functions[$1]} ))

+ else

+ [[ $(type -wa -- "$1") == *'function'* ]]

+ fi

+}

+

+# This function takes a single argument F and returns True iff F denotes the

+# name of a callable function. A function is callable if it is fully defined

+# or if it is marked for autoloading and autoloading it at the first call to it

+# will succeed. In particular, if a function has been marked for autoloading

+# but is not available in $fpath, then this function will return False therefor.

+#

+# See users/21671 http://www.zsh.org/cgi-bin/mla/redirect?USERNUMBER=21671

+_zsh_highlight__function_callable_p() {

+ if _zsh_highlight__is_function_p "$1" &&

+ ! _zsh_highlight__function_is_autoload_stub_p "$1"

+ then

+ # Already fully loaded.

+ return 0 # true

+ else

+ # "$1" is either an autoload stub, or not a function at all.

+ #

+ # Use a subshell to avoid affecting the calling shell.

+ #

+ # We expect 'autoload +X' to return non-zero if it fails to fully load

+ # the function.

+ ( autoload -U +X -- "$1" 2>/dev/null )

+ return $?

+ fi

+}

+

+# -------------------------------------------------------------------------------------------------

+# Core highlighting update system

+# -------------------------------------------------------------------------------------------------

+

+# Use workaround for bug in ZSH?

+# zsh-users/zsh@48cadf4 http://www.zsh.org/mla/workers//2017/msg00034.html

+autoload -Uz is-at-least

+if is-at-least 5.4; then

+ typeset -g zsh_highlight__pat_static_bug=false

+else

+ typeset -g zsh_highlight__pat_static_bug=true

+fi

+

+# Array declaring active highlighters names.

+typeset -ga ZSH_HIGHLIGHT_HIGHLIGHTERS

+

+# Update ZLE buffer syntax highlighting.

+#

+# Invokes each highlighter that needs updating.

+# This function is supposed to be called whenever the ZLE state changes.

+_zsh_highlight()

+{

+ # Store the previous command return code to restore it whatever happens.

+ local ret=$?

+ # Make it read-only. Can't combine this with the previous line when POSIX_BUILTINS may be set.

+ typeset -r ret

+

+ # $region_highlight should be predefined, either by zle or by the test suite's mock (non-special) array.

+ (( ${+region_highlight} )) || {

+ echo >&2 'zsh-syntax-highlighting: error: $region_highlight is not defined'

+ echo >&2 'zsh-syntax-highlighting: (Check whether zsh-syntax-highlighting was installed according to the instructions.)'

+ return $ret

+ }

+

+ # Probe the memo= feature, once.

+ (( ${+zsh_highlight__memo_feature} )) || {

+ region_highlight+=( " 0 0 fg=red, memo=zsh-syntax-highlighting" )

+ case ${region_highlight[-1]} in

+ ("0 0 fg=red")

+ # zsh 5.8 or earlier

+ integer -gr zsh_highlight__memo_feature=0

+ ;;

+ ("0 0 fg=red memo=zsh-syntax-highlighting")

+ # zsh 5.9 or later

+ integer -gr zsh_highlight__memo_feature=1

+ ;;

+ (" 0 0 fg=red, memo=zsh-syntax-highlighting") ;&

+ (*)

+ # We can get here in two ways:

+ #

+ # 1. When not running as a widget. In that case, $region_highlight is

+ # not a special variable (= one with custom getter/setter functions

+ # written in C) but an ordinary one, so the third case pattern matches

+ # and we fall through to this block. (The test suite uses this codepath.)

+ #

+ # 2. When running under a future version of zsh that will have changed

+ # the serialization of $region_highlight elements from their underlying

+ # C structs, so that none of the previous case patterns will match.

+ #

+ # In either case, fall back to a version check.

+ #

+ # The memo= feature was added to zsh in commit zsh-5.8-172-gdd6e702ee.

+ # The version number at the time was 5.8.0.2-dev (see Config/version.mk).

+ # Therefore, on 5.8.0.3 and newer the memo= feature is available.

+ #

+ # On zsh version 5.8.0.2 between the aforementioned commit and the

+ # first Config/version.mk bump after it (which, at the time of writing,

+ # is yet to come), this condition will false negative.

+ if is-at-least 5.8.0.3 $ZSH_VERSION.0.0; then

+ integer -gr zsh_highlight__memo_feature=1

+ else

+ integer -gr zsh_highlight__memo_feature=0

+ fi

+ ;;

+ esac

+ region_highlight[-1]=()

+ }

+

+ # Reset region_highlight to build it from scratch

+ if (( zsh_highlight__memo_feature )); then

+ region_highlight=( "${(@)region_highlight:#*memo=zsh-syntax-highlighting*}" )

+ else

+ # Legacy codepath. Not very interoperable with other plugins (issue #418).

+ region_highlight=()

+ fi

+

+ # Remove all highlighting in isearch, so that only the underlining done by zsh itself remains.

+ # For details see FAQ entry 'Why does syntax highlighting not work while searching history?'.

+ # This disables highlighting during isearch (for reasons explained in README.md) unless zsh is new enough

+ # and doesn't have the pattern matching bug

+ if [[ $WIDGET == zle-isearch-update ]] && { $zsh_highlight__pat_static_bug || ! (( $+ISEARCHMATCH_ACTIVE )) }; then

+ return $ret

+ fi

+

+ # Before we 'emulate -L', save the user's options

+ local -A zsyh_user_options

+ if zmodload -e zsh/parameter; then

+ zsyh_user_options=("${(kv)options[@]}")

+ else

+ local canonical_options onoff option raw_options

+ raw_options=(${(f)"$(emulate -R zsh; set -o)"})

+ canonical_options=(${${${(M)raw_options:#*off}%% *}#no} ${${(M)raw_options:#*on}%% *})

+ for option in "${canonical_options[@]}"; do

+ [[ -o $option ]]

+ case $? in

+ (0) zsyh_user_options+=($option on);;

+ (1) zsyh_user_options+=($option off);;

+ (*) # Can't happen, surely?

+ echo "zsh-syntax-highlighting: warning: '[[ -o $option ]]' returned $?"

+ ;;

+ esac

+ done

+ fi

+ typeset -r zsyh_user_options

+

+ emulate -L zsh

+ setopt localoptions warncreateglobal nobashrematch

+ local REPLY # don't leak $REPLY into global scope

+

+ # Do not highlight if there are more than 300 chars in the buffer. It's most

+ # likely a pasted command or a huge list of files in that case..

+ [[ -n ${ZSH_HIGHLIGHT_MAXLENGTH:-} ]] && [[ $#BUFFER -gt $ZSH_HIGHLIGHT_MAXLENGTH ]] && return $ret

+

+ # Do not highlight if there are pending inputs (copy/paste).

+ [[ $PENDING -gt 0 ]] && return $ret

+

+ {

+ local cache_place

+ local -a region_highlight_copy

+

+ # Select which highlighters in ZSH_HIGHLIGHT_HIGHLIGHTERS need to be invoked.

+ local highlighter; for highlighter in $ZSH_HIGHLIGHT_HIGHLIGHTERS; do

+

+ # eval cache place for current highlighter and prepare it

+ cache_place="_zsh_highlight__highlighter_${highlighter}_cache"

+ typeset -ga ${cache_place}

+

+ # If highlighter needs to be invoked

+ if ! type "_zsh_highlight_highlighter_${highlighter}_predicate" >&/dev/null; then

+ echo "zsh-syntax-highlighting: warning: disabling the ${(qq)highlighter} highlighter as it has not been loaded" >&2

+ # TODO: use ${(b)} rather than ${(q)} if supported

+ ZSH_HIGHLIGHT_HIGHLIGHTERS=( ${ZSH_HIGHLIGHT_HIGHLIGHTERS:#${highlighter}} )

+ elif "_zsh_highlight_highlighter_${highlighter}_predicate"; then

+

+ # save a copy, and cleanup region_highlight

+ region_highlight_copy=("${region_highlight[@]}")

+ region_highlight=()

+

+ # Execute highlighter and save result

+ {

+ "_zsh_highlight_highlighter_${highlighter}_paint"

+ } always {

+ : ${(AP)cache_place::="${region_highlight[@]}"}

+ }

+

+ # Restore saved region_highlight

+ region_highlight=("${region_highlight_copy[@]}")

+

+ fi

+

+ # Use value form cache if any cached

+ region_highlight+=("${(@P)cache_place}")

+

+ done

+

+ # Re-apply zle_highlight settings

+

+ # region

+ () {

+ (( REGION_ACTIVE )) || return

+ integer min max

+ if (( MARK > CURSOR )) ; then

+ min=$CURSOR max=$MARK

+ else

+ min=$MARK max=$CURSOR

+ fi

+ if (( REGION_ACTIVE == 1 )); then

+ [[ $KEYMAP = vicmd ]] && (( max++ ))

+ elif (( REGION_ACTIVE == 2 )); then

+ local needle= \n'

+ # CURSOR and MARK are 0 indexed between letters like region_highlight

+ # Do not include the newline in the highlight

+ (( min = ${BUFFER[(Ib:min:)$needle]} ))

+ (( max = ${BUFFER[(ib:max:)$needle]} - 1 ))

+ fi

+ _zsh_highlight_apply_zle_highlight region standout "$min" "$max"

+ }

+

+ # yank / paste (zsh-5.1.1 and newer)

+ (( $+YANK_ACTIVE )) && (( YANK_ACTIVE )) && _zsh_highlight_apply_zle_highlight paste standout "$YANK_START" "$YANK_END"

+

+ # isearch

+ (( $+ISEARCHMATCH_ACTIVE )) && (( ISEARCHMATCH_ACTIVE )) && _zsh_highlight_apply_zle_highlight isearch underline "$ISEARCHMATCH_START" "$ISEARCHMATCH_END"

+

+ # suffix

+ (( $+SUFFIX_ACTIVE )) && (( SUFFIX_ACTIVE )) && _zsh_highlight_apply_zle_highlight suffix bold "$SUFFIX_START" "$SUFFIX_END"

+

+

+ return $ret

+

+

+ } always {

+ typeset -g _ZSH_HIGHLIGHT_PRIOR_BUFFER="$BUFFER"

+ typeset -gi _ZSH_HIGHLIGHT_PRIOR_CURSOR=$CURSOR

+ }

+}

+

+# Apply highlighting based on entries in the zle_highlight array.

+# This function takes four arguments:

+# 1. The exact entry (no patterns) in the zle_highlight array:

+# region, paste, isearch, or suffix

+# 2. The default highlighting that should be applied if the entry is unset

+# 3. and 4. Two integer values describing the beginning and end of the

+# range. The order does not matter.

+_zsh_highlight_apply_zle_highlight() {

+ local entry="$1" default="$2"

+ integer first="$3" second="$4"

+

+ # read the relevant entry from zle_highlight

+ #

+ # ### In zsh≥5.0.8 we'd use ${(b)entry}, but we support older zsh's, so we don't

+ # ### add (b). The only effect is on the failure mode for callers that violate

+ # ### the precondition.

+ local region="${zle_highlight[(r)${entry}:*]-}"

+

+ if [[ -z "$region" ]]; then

+ # entry not specified at all, use default value

+ region=$default

+ else

+ # strip prefix

+ region="${region#${entry}:}"

+

+ # no highlighting when set to the empty string or to 'none'

+ if [[ -z "$region" ]] || [[ "$region" == none ]]; then

+ return

+ fi

+ fi

+

+ integer start end

+ if (( first < second )); then

+ start=$first end=$second

+ else

+ start=$second end=$first

+ fi

+ region_highlight+=("$start $end $region, memo=zsh-syntax-highlighting")

+}

+

+

+# -------------------------------------------------------------------------------------------------

+# API/utility functions for highlighters

+# -------------------------------------------------------------------------------------------------

+

+# Array used by highlighters to declare user overridable styles.

+typeset -gA ZSH_HIGHLIGHT_STYLES

+

+# Whether the command line buffer has been modified or not.

+#

+# Returns 0 if the buffer has changed since _zsh_highlight was last called.

+_zsh_highlight_buffer_modified()

+{

+ [[ "${_ZSH_HIGHLIGHT_PRIOR_BUFFER:-}" != "$BUFFER" ]]

+}

+

+# Whether the cursor has moved or not.

+#

+# Returns 0 if the cursor has moved since _zsh_highlight was last called.

+_zsh_highlight_cursor_moved()

+{

+ [[ -n $CURSOR ]] && [[ -n ${_ZSH_HIGHLIGHT_PRIOR_CURSOR-} ]] && (($_ZSH_HIGHLIGHT_PRIOR_CURSOR != $CURSOR))

+}

+

+# Add a highlight defined by ZSH_HIGHLIGHT_STYLES.

+#

+# Should be used by all highlighters aside from 'pattern' (cf. ZSH_HIGHLIGHT_PATTERN).

+# Overwritten in tests/test-highlighting.zsh when testing.

+_zsh_highlight_add_highlight()

+{

+ local -i start end

+ local highlight

+ start=$1

+ end=$2

+ shift 2

+ for highlight; do

+ if (( $+ZSH_HIGHLIGHT_STYLES[$highlight] )); then

+ region_highlight+=("$start $end $ZSH_HIGHLIGHT_STYLES[$highlight], memo=zsh-syntax-highlighting")

+ break

+ fi

+ done

+}

+

+# -------------------------------------------------------------------------------------------------

+# Setup functions

+# -------------------------------------------------------------------------------------------------

+

+# Helper for _zsh_highlight_bind_widgets

+# $1 is name of widget to call

+_zsh_highlight_call_widget()

+{

+ builtin zle "$@" &&

+ _zsh_highlight

+}

+

+# Decide whether to use the zle-line-pre-redraw codepath (colloquially known as

+# "feature/redrawhook", after the topic branch's name) or the legacy "bind all

+# widgets" codepath.

+#

+# We use the new codepath under two conditions:

+#

+# 1. If it's available, which we check by testing for add-zle-hook-widget's availability.

+#

+# 2. If zsh has the memo= feature, which is required for interoperability reasons.

+# See issues #579 and #735, and the issues referenced from them.

+#

+# We check this with a plain version number check, since a functional check,

+# as done by _zsh_highlight, can only be done from inside a widget

+# function — a catch-22.

+#

+# See _zsh_highlight for the magic version number. (The use of 5.8.0.2

+# rather than 5.8.0.3 as in the _zsh_highlight is deliberate.)

+if is-at-least 5.8.0.2 $ZSH_VERSION.0.0 && _zsh_highlight__function_callable_p add-zle-hook-widget

+then

+ autoload -U add-zle-hook-widget

+ _zsh_highlight__zle-line-finish() {

+ # Reset $WIDGET since the 'main' highlighter depends on it.

+ #

+ # Since $WIDGET is declared by zle as read-only in this function's scope,

+ # a nested function is required in order to shadow its built-in value;

+ # see "User-defined widgets" in zshall.

+ () {

+ local -h -r WIDGET=zle-line-finish

+ _zsh_highlight

+ }

+ }

+ _zsh_highlight__zle-line-pre-redraw() {

+ # Set $? to 0 for _zsh_highlight. Without this, subsequent

+ # zle-line-pre-redraw hooks won't run, since add-zle-hook-widget happens to

+ # call us with $? == 1 in the common case.

+ true && _zsh_highlight "$@"

+ }

+ _zsh_highlight_bind_widgets(){}

+ if [[ -o zle ]]; then

+ add-zle-hook-widget zle-line-pre-redraw _zsh_highlight__zle-line-pre-redraw

+ add-zle-hook-widget zle-line-finish _zsh_highlight__zle-line-finish

+ fi

+else

+ # Rebind all ZLE widgets to make them invoke _zsh_highlights.

+ _zsh_highlight_bind_widgets()

+ {

+ setopt localoptions noksharrays

+ typeset -F SECONDS

+ local prefix=orig-s$SECONDS-r$RANDOM # unique each time, in case we're sourced more than once

+

+ # Load ZSH module zsh/zleparameter, needed to override user defined widgets.

+ zmodload zsh/zleparameter 2>/dev/null || {

+ print -r -- >&2 'zsh-syntax-highlighting: failed loading zsh/zleparameter.'

+ return 1

+ }

+

+ # Override ZLE widgets to make them invoke _zsh_highlight.

+ local -U widgets_to_bind

+ widgets_to_bind=(${${(k)widgets}:#(.*|run-help|which-command|beep|set-local-history|yank|yank-pop)})

+

+ # Always wrap special zle-line-finish widget. This is needed to decide if the

+ # current line ends and special highlighting logic needs to be applied.

+ # E.g. remove cursor imprint, don't highlight partial paths, ...

+ widgets_to_bind+=(zle-line-finish)

+

+ # Always wrap special zle-isearch-update widget to be notified of updates in isearch.

+ # This is needed because we need to disable highlighting in that case.

+ widgets_to_bind+=(zle-isearch-update)

+

+ local cur_widget

+ for cur_widget in $widgets_to_bind; do

+ case ${widgets[$cur_widget]:-""} in

+

+ # Already rebound event: do nothing.

+ user:_zsh_highlight_widget_*);;

+

+ # The "eval"'s are required to make $cur_widget a closure: the value of the parameter at function

+ # definition time is used.

+ #

+ # We can't use ${0/_zsh_highlight_widget_} because these widgets are always invoked with

+ # NO_function_argzero, regardless of the option's setting here.

+

+ # User defined widget: override and rebind old one with prefix "orig-".

+ user:*) zle -N $prefix-$cur_widget ${widgets[$cur_widget]#*:}

+ eval "_zsh_highlight_widget_${(q)prefix}-${(q)cur_widget}() { _zsh_highlight_call_widget ${(q)prefix}-${(q)cur_widget} -- \"\$@\" }"

+ zle -N $cur_widget _zsh_highlight_widget_$prefix-$cur_widget;;

+

+ # Completion widget: override and rebind old one with prefix "orig-".

+ completion:*) zle -C $prefix-$cur_widget ${${(s.:.)widgets[$cur_widget]}[2,3]}

+ eval "_zsh_highlight_widget_${(q)prefix}-${(q)cur_widget}() { _zsh_highlight_call_widget ${(q)prefix}-${(q)cur_widget} -- \"\$@\" }"

+ zle -N $cur_widget _zsh_highlight_widget_$prefix-$cur_widget;;

+

+ # Builtin widget: override and make it call the builtin ".widget".

+ builtin) eval "_zsh_highlight_widget_${(q)prefix}-${(q)cur_widget}() { _zsh_highlight_call_widget .${(q)cur_widget} -- \"\$@\" }"

+ zle -N $cur_widget _zsh_highlight_widget_$prefix-$cur_widget;;

+

+ # Incomplete or nonexistent widget: Bind to z-sy-h directly.

+ *)

+ if [[ $cur_widget == zle-* ]] && (( ! ${+widgets[$cur_widget]} )); then

+ _zsh_highlight_widget_${cur_widget}() { :; _zsh_highlight }

+ zle -N $cur_widget _zsh_highlight_widget_$cur_widget

+ else

+ # Default: unhandled case.

+ print -r -- >&2 "zsh-syntax-highlighting: unhandled ZLE widget ${(qq)cur_widget}"

+ print -r -- >&2 "zsh-syntax-highlighting: (This is sometimes caused by doing \`bindkey <keys> ${(q-)cur_widget}\` without creating the ${(qq)cur_widget} widget with \`zle -N\` or \`zle -C\`.)"

+ fi

+ esac

+ done

+ }

+fi

+

+# Load highlighters from directory.

+#

+# Arguments:

+# 1) Path to the highlighters directory.

+_zsh_highlight_load_highlighters()

+{

+ setopt localoptions noksharrays bareglobqual

+

+ # Check the directory exists.

+ [[ -d "$1" ]] || {

+ print -r -- >&2 "zsh-syntax-highlighting: highlighters directory ${(qq)1} not found."

+ return 1

+ }

+

+ # Load highlighters from highlighters directory and check they define required functions.

+ local highlighter highlighter_dir

+ for highlighter_dir ($1/*/(/)); do

+ highlighter="${highlighter_dir:t}"

+ [[ -f "$highlighter_dir${highlighter}-highlighter.zsh" ]] &&

+ . "$highlighter_dir${highlighter}-highlighter.zsh"

+ if type "_zsh_highlight_highlighter_${highlighter}_paint" &> /dev/null &&

+ type "_zsh_highlight_highlighter_${highlighter}_predicate" &> /dev/null;

+ then

+ # New (0.5.0) function names

+ elif type "_zsh_highlight_${highlighter}_highlighter" &> /dev/null &&

+ type "_zsh_highlight_${highlighter}_highlighter_predicate" &> /dev/null;

+ then

+ # Old (0.4.x) function names

+ if false; then

+ # TODO: only show this warning for plugin authors/maintainers, not for end users

+ print -r -- >&2 "zsh-syntax-highlighting: warning: ${(qq)highlighter} highlighter uses deprecated entry point names; please ask its maintainer to update it: https://github.com/zsh-users/zsh-syntax-highlighting/issues/329"

+ fi

+ # Make it work.

+ eval "_zsh_highlight_highlighter_${(q)highlighter}_paint() { _zsh_highlight_${(q)highlighter}_highlighter \"\$@\" }"

+ eval "_zsh_highlight_highlighter_${(q)highlighter}_predicate() { _zsh_highlight_${(q)highlighter}_highlighter_predicate \"\$@\" }"

+ else

+ print -r -- >&2 "zsh-syntax-highlighting: ${(qq)highlighter} highlighter should define both required functions '_zsh_highlight_highlighter_${highlighter}_paint' and '_zsh_highlight_highlighter_${highlighter}_predicate' in ${(qq):-"$highlighter_dir${highlighter}-highlighter.zsh"}."

+ fi

+ done

+}

+

+

+# -------------------------------------------------------------------------------------------------

+# Setup

+# -------------------------------------------------------------------------------------------------

+

+# Try binding widgets.

+_zsh_highlight_bind_widgets || {

+ print -r -- >&2 'zsh-syntax-highlighting: failed binding ZLE widgets, exiting.'

+ return 1

+}

+

+# Resolve highlighters directory location.

+_zsh_highlight_load_highlighters "${ZSH_HIGHLIGHT_HIGHLIGHTERS_DIR:-${${0:A}:h}/highlighters}" || {

+ print -r -- >&2 'zsh-syntax-highlighting: failed loading highlighters, exiting.'

+ return 1

+}

+

+# Reset scratch variables when commandline is done.

+_zsh_highlight_preexec_hook()

+{

+ typeset -g _ZSH_HIGHLIGHT_PRIOR_BUFFER=

+ typeset -gi _ZSH_HIGHLIGHT_PRIOR_CURSOR=

+}

+autoload -Uz add-zsh-hook

+add-zsh-hook preexec _zsh_highlight_preexec_hook 2>/dev/null || {

+ print -r -- >&2 'zsh-syntax-highlighting: failed loading add-zsh-hook.'

+ }

+

+# Load zsh/parameter module if available

+zmodload zsh/parameter 2>/dev/null || true

+

+# Initialize the array of active highlighters if needed.

+[[ $#ZSH_HIGHLIGHT_HIGHLIGHTERS -eq 0 ]] && ZSH_HIGHLIGHT_HIGHLIGHTERS=(main)

+

+if (( $+X_ZSH_HIGHLIGHT_DIRS_BLACKLIST )); then

+ print >&2 'zsh-syntax-highlighting: X_ZSH_HIGHLIGHT_DIRS_BLACKLIST is deprecated. Please use ZSH_HIGHLIGHT_DIRS_BLACKLIST.'

+ ZSH_HIGHLIGHT_DIRS_BLACKLIST=($X_ZSH_HIGHLIGHT_DIRS_BLACKLIST)

+ unset X_ZSH_HIGHLIGHT_DIRS_BLACKLIST

+fi

+

+# Restore the aliases we unned

+eval "$zsh_highlight__aliases"

+builtin unset zsh_highlight__aliases

+

+# Set $?.

+true

diff --git a/zsh/.zshrc b/zsh/.zshrc

index b5980b38e046d749828e6ddeac71c3c91eb8a8ef..21b5fd73e6da98bb2e14289c13d9b1e395eb4991 100644

--- a/zsh/.zshrc

+++ b/zsh/.zshrc

@@ -19,6 +19,6 @@ alias n="setsid -f "

alias la='ls --color -h --group-directories-first -A1 '

alias ls='ls --color -h --group-directories-first -1 '

alias f='vifm .'

-source ~/.local/bin/zsh/zsh-syntax-highlighting/zsh-syntax-highlighting.plugin.zsh

+source ~/.zsh/zsh-syntax/zsh-syntax-highlighting.plugin.zsh

set -o vi