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: [![Screenshot #1.2](images/after1-smaller.png)](images/after1.png)
+
+Before: [![Screenshot #2.1](images/before2-smaller.png)](images/before2.png)
+<br/>
+After: [![Screenshot #2.2](images/after2-smaller.png)](images/after2.png)
+
+Before: [![Screenshot #3.1](images/before3-smaller.png)](images/before3.png)
+<br/>
+After: [![Screenshot #3.2](images/after3-smaller.png)](images/after3.png)
+
+Before: [![Screenshot #4.1](images/before4-smaller.png)](images/before4-smaller.png)
+<br/>
+After: [![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 ))
+ ```
+
+-