diff --git a/.editorconfig b/.editorconfig index cda541d..0f7ae82 100644 --- a/.editorconfig +++ b/.editorconfig @@ -7,9 +7,3 @@ 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/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index cd50b8a..0000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,75 +0,0 @@ ---- -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.9 - - 5.8.1 - - 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: ghcr.io/zsh-users/zsh:${{ matrix.version }} - steps: - - uses: actions/checkout@v4 - - 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@v2 - 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/.travis.yml b/.travis.yml new file mode 100644 index 0000000..39040f8 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,55 @@ +language: generic +sudo: required + +env: + - ZSH=master + - ZSH=5.7.1 + - ZSH=5.7 + - ZSH=5.6.2 + - ZSH=5.6.1 + - ZSH=5.6 + - ZSH=5.5.1 + - ZSH=5.5 + - ZSH=5.4.2 + - ZSH=5.4.1 + - ZSH=5.4 + - ZSH=5.3.1 + - ZSH=5.3 + - ZSH=5.2 + - ZSH=5.1.1 + - ZSH=5.1 + - ZSH=5.0.8 + - ZSH=5.0.7 + - ZSH=5.0.6 + - ZSH=5.0.5 + - ZSH=5.0.4 + - ZSH=5.0.3 + - ZSH=5.0.2 + - ZSH=5.0.1 + - ZSH=5.0.0 + - ZSH=4.3.17 + - ZSH=4.3.16 + - ZSH=4.3.15 + - ZSH=4.3.14 + - ZSH=4.3.13 + - ZSH=4.3.12 + - ZSH=4.3.11 + +script: docker run -v $PWD:/work -w /work zshusers/zsh:${ZSH} /bin/sh -c 'install_packages make procps && make test' + +notifications: + webhooks: + urls: + - https://webhooks.gitter.im/e/367e241cdea60cb2070b + on_success: change + on_failure: always + on_start: never + irc: + channels: + - "chat.freenode.net#zsh-syntax-highlighting" + on_success: change + on_failure: always + on_start: never + use_notice: true + template: + - "%{repository}/%{branch}#%{build_number}: %{message} Changes : %{compare_url} | Build : %{build_url}" diff --git a/.version b/.version index d182dc9..39e898a 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -0.8.1-dev +0.7.1 diff --git a/HACKING.md b/HACKING.md index ddd39a4..71d8a2e 100644 --- a/HACKING.md +++ b/HACKING.md @@ -67,22 +67,6 @@ expected_region_highlight=( ) ``` -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 ---------- @@ -95,5 +79,5 @@ zstyle ':completion:*:*:*:*:globbed-files' ignored-patterns {'*/',}zsh-syntax-hi IRC channel ----------- -We're on #zsh-syntax-highlighting on Libera.Chat. +We're on #zsh-syntax-highlighting on freenode. diff --git a/INSTALL.md b/INSTALL.md index 2e1286d..23acdf5 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -3,67 +3,31 @@ How to install ### Using packages -First, install the package: - * 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` ([formula][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] +* Gentoo: [mv overlay][gentoo-overlay] +* Mac OS X / Homebrew: [brew install zsh-syntax-highlighting][brew-package] * Ubuntu: `zsh-syntax-highlighting` package [in Xenial][ubuntu-package] (or in [OBS repository][obs-repository]) +* RHEL / CentOS / Scientific Linux: `zsh-syntax-highlighting` package in [OBS repository][obs-repository] +* openSUSE / SLE: `zsh-syntax-highlighting` package 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/z/zsh-syntax-highlighting.rb [debian-package]: https://packages.debian.org/zsh-syntax-highlighting +[freebsd-port]: http://www.freshports.org/textproc/zsh-syntax-highlighting/ +[gentoo-overlay]: http://gpo.zugaina.org/app-shells/zsh-syntax-highlighting +[brew-package]: https://github.com/Homebrew/homebrew-core/blob/master/Formula/zsh-syntax-highlighting.rb +[ubuntu-package]: https://launchpad.net/ubuntu/+source/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]: https://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 +[obs-repository]: https://software.opensuse.org//download.html?project=shells%3Azsh-users%3Azsh-syntax-highlighting&package=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) -Second, enable zsh-syntax-highlighting by sourcing the script. Running this command on the terminal will add the source line to the end of your .zshrc: - -* On most Linux distributions (except perhaps NixOS): - - ```zsh - echo "source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ${ZDOTDIR:-$HOME}/.zshrc - ``` - -* NetBSD and OpenBSD: - - ```zsh - echo "source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ${ZDOTDIR:-$HOME}/.zshrc - ``` - -* Mac OS X / Homebrew: - - ```zsh - echo "source $(brew --prefix)/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ${ZDOTDIR:-$HOME}/.zshrc - ``` - -Then restart zsh (such as by opening a new instance of your terminal emulator). - - Alternatively, add the `source` command manually **at the end** of your `.zshrc`: - -* On most Linux distributions (except perhaps NixOS): -`source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh` -* NetBSD and OpenBSD: -`source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh` - -Then restart zsh. ### In your ~/.zshrc @@ -107,12 +71,6 @@ This list is incomplete as there are too many Add `antigen bundle zsh-users/zsh-syntax-highlighting` as the last bundle in your `.zshrc`. -#### [Fig](https://fig.io) - -Click the `Install Plugin` button on the [Fig plugin page][fig-plugin]. - -[fig-plugin]: https://fig.io/plugins/other/zsh-syntax-highlighting - #### [Oh-my-zsh](https://github.com/robbyrussell/oh-my-zsh) 1. Clone this repository in oh-my-zsh's plugins directory: @@ -140,15 +98,15 @@ Zsh-syntax-highlighting is included with Prezto. See the Add `zgen load zsh-users/zsh-syntax-highlighting` to the end of your `.zshrc`. -#### [zinit](https://github.com/zdharma-continuum/zinit) - -Add `zinit light 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 diff --git a/Makefile b/Makefile index bbc1d43..6cc2648 100644 --- a/Makefile +++ b/Makefile @@ -41,7 +41,7 @@ test: 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##*/}"; \ + $(ZSH) -f tests/test-highlighting.zsh "$${test##*/}"; \ : $$(( result |= $$? )); \ fi \ done; \ diff --git a/README.md b/README.md index 4768b3d..08af2b6 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@ -zsh-syntax-highlighting [![Build Status][build-status-image]][build-status] +zsh-syntax-highlighting [![Build Status][build-status-image]][build-status-travis] ======================= **[Fish shell][fish]-like syntax highlighting for [Zsh][zsh].** *Requirements: zsh 4.3.11+.* -[fish]: https://fishshell.com/ -[zsh]: https://www.zsh.org/ +[fish]: http://www.fishshell.com/ +[zsh]: http://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 @@ -27,11 +27,6 @@ Before: [![Screenshot #3.1](images/before3-smaller.png)](images/before3.png)
After:  [![Screenshot #3.2](images/after3-smaller.png)](images/after3.png) -Before: [![Screenshot #4.1](images/before4-smaller.png)](images/before4-smaller.png) -
-After:  [![Screenshot #4.2](images/after4-smaller.png)](images/after4-smaller.png) - - How to install -------------- @@ -44,23 +39,11 @@ 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 +`zsh-syntax-highlighting.zsh` wraps ZLE widgets. It must be sourced after all +custom widgets have been created (i.e., after all `zle -N` calls and after +running `compinit`). Widgets created later 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 @@ -73,7 +56,7 @@ enough information to allow computing the highlighting correctly.) See issues [#288][i288] and [#415][i415] for details. -[zshzle-Character-Highlighting]: https://zsh.sourceforge.io/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting +[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 @@ -93,5 +76,5 @@ 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 +[build-status-image]: https://travis-ci.org/zsh-users/zsh-syntax-highlighting.svg?branch=master +[build-status-travis]: https://travis-ci.org/zsh-users/zsh-syntax-highlighting diff --git a/changelog.md b/changelog.md index 8ee5088..9779223 100644 --- a/changelog.md +++ b/changelog.md @@ -1,242 +1,7 @@ -# Changes in HEAD - - -- Highlight `&>` `>&|` `>&!` `&>|` and `&>!` as redirection. - [#942] - - -# Changes in 0.8.0 - -This is a stable bugfix and feature release. Major new features and changes include: - - -## 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.1.1 and newer, due to interoperability issues with other plugins -(issues #418 and #579). The underlying zsh feature has been available since -zsh 5.3. - -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). - -- Fix highlighting when using an alias twice inside another alias - [#769, #775] - -- Remove lint warning for `env` followed by a pipe - [#797] - -- Recognize `proxychains` as a precommand - [#814, #914] - -- Honor shwordsplit when expanding parameters - [#687, #818] - -- Skip highlighting when keys are still pending in more cases - [#835] - -- Recognize `grc` as a precommand - -- Recognize `torsocks` and `torift` as precommands - [#898] - -- Recognize `cpulimit` as a precommand - [#897] - -- Recognize `ktrace` as a precommand - - -# 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 ⮀ Tab 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]: https://zsh.sourceforge.io/Doc/Release/Completion-System.html#Standard-Styles -[zshcompsys-Standard-Styles-format]: https://zsh.sourceforge.io/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 `ionice` as a precommand - -- 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: @@ -269,7 +34,7 @@ This is a stable bugfix and feature release. Major new features and changes inc - Highlight numeric globs (e.g., `echo /lib<->`) -- Assorted improvements to aliases highlighting +- Assorted improvement to aliases highlighting (e.g., `alias sudo_u='sudo -u'; sudo_u jrandom ls`, `alias x=y y=z z=nosuchcommand; x`, @@ -307,7 +72,6 @@ Known issues include: 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 @@ -325,7 +89,7 @@ This is a stable release, featuring bugfixes and minor improvements. - 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]: https://zsh.sourceforge.io/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting +[zshzle-Character-Highlighting]: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting - Possible history expansions in double-quoted strings. (76ea9e1df316) @@ -771,7 +535,7 @@ in this area. ## Developer-visible changes: -- Test harness converted to [TAP](https://testanything.org/tap-specification.html) format +- 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 diff --git a/docs/highlighters.md b/docs/highlighters.md index fb64c3a..d0c9332 100644 --- a/docs/highlighters.md +++ b/docs/highlighters.md @@ -3,51 +3,34 @@ zsh-syntax-highlighting / highlighters Syntax highlighting is done by pluggable highlighters: -* `main` - the base highlighter, and the only one [active by default][main]. -* `brackets` - [matches brackets][brackets] and parenthesis. -* `pattern` - matches [user-defined patterns][pattern]. -* `regexp` - matches [user-defined regular expressions][regexp]. -* `cursor` - matches [the cursor position][cursor]. -* `root` - highlights the whole command line [if the current user is root][root]. -* `line` - applied to [the whole command line][line]. +* `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]. -[main]: highlighters/main.md -[brackets]: highlighters/brackets.md -[pattern]: highlighters/pattern.md -[regexp]: highlighters/regexp.md -[cursor]: highlighters/cursor.md -[root]: highlighters/root.md -[line]: 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 command lines (for example, with the [`fned`][fned] utility -function). Example: - -[fned]: https://zsh.sourceforge.io/Doc/Release/User-Contributions.html#index-zed - -```zsh -ZSH_HIGHLIGHT_MAXLENGTH=512 -``` +[1]: highlighters/main.md +[2]: highlighters/brackets.md +[3]: highlighters/pattern.md +[4]: highlighters/cursor.md +[5]: highlighters/root.md +[6]: highlighters/line.md How to activate highlighters ---------------------------- -To activate an highlighter, add it to the `ZSH_HIGHLIGHT_HIGHLIGHTERS` array. -By default `ZSH_HIGHLIGHT_HIGHLIGHTERS` is `(main)`. For example to activate -`brackets`, `pattern`, and `cursor` highlighters, in `~/.zshrc` do: +To activate an highlighter, add it to the `ZSH_HIGHLIGHT_HIGHLIGHTERS` array in +`~/.zshrc`, for example: ```zsh -ZSH_HIGHLIGHT_HIGHLIGHTERS+=(brackets pattern cursor) +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 ------------------------- @@ -59,7 +42,7 @@ 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]: https://zsh.sourceforge.io/Doc/Release/Zsh-Line-Editor.html#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. diff --git a/docs/highlighters/brackets.md b/docs/highlighters/brackets.md index 0101699..8410135 100644 --- a/docs/highlighters/brackets.md +++ b/docs/highlighters/brackets.md @@ -28,4 +28,4 @@ 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]: https://zsh.sourceforge.io/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting +[zshzle-Character-Highlighting]: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting diff --git a/docs/highlighters/cursor.md b/docs/highlighters/cursor.md index 3f87d42..c4f22b8 100644 --- a/docs/highlighters/cursor.md +++ b/docs/highlighters/cursor.md @@ -21,4 +21,4 @@ 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]: https://zsh.sourceforge.io/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting +[zshzle-Character-Highlighting]: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting diff --git a/docs/highlighters/line.md b/docs/highlighters/line.md index f76639e..1081fe1 100644 --- a/docs/highlighters/line.md +++ b/docs/highlighters/line.md @@ -21,4 +21,4 @@ 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]: https://zsh.sourceforge.io/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting +[zshzle-Character-Highlighting]: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting diff --git a/docs/highlighters/main.md b/docs/highlighters/main.md index 4a27653..43f6082 100644 --- a/docs/highlighters/main.md +++ b/docs/highlighters/main.md @@ -20,14 +20,12 @@ This highlighter defines the following styles: * `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 @@ -42,7 +40,6 @@ This highlighter defines the following styles: * `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` ``) @@ -61,9 +58,7 @@ This highlighter defines the following styles: * `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`) +* `named-fd` - named file descriptor (`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 @@ -116,6 +111,6 @@ 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]: https://zsh.sourceforge.io/Doc/Release/Shell-Grammar.html#Simple-Commands-_0026-Pipelines +[zshmisc-Simple-Commands-And-Pipelines]: http://zsh.sourceforge.net/Doc/Release/Shell-Grammar.html#Simple-Commands-_0026-Pipelines -[zshzle-Character-Highlighting]: https://zsh.sourceforge.io/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting +[zshzle-Character-Highlighting]: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting diff --git a/docs/highlighters/pattern.md b/docs/highlighters/pattern.md index ecaa6a7..e67d79f 100644 --- a/docs/highlighters/pattern.md +++ b/docs/highlighters/pattern.md @@ -21,4 +21,4 @@ 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]: https://zsh.sourceforge.io/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting +[zshzle-Character-Highlighting]: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting diff --git a/docs/highlighters/regexp.md b/docs/highlighters/regexp.md index 8c711a3..06b21ac 100644 --- a/docs/highlighters/regexp.md +++ b/docs/highlighters/regexp.md @@ -11,45 +11,12 @@ 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+=('^rm .*' fg=red,bold) +typeset -A ZSH_HIGHLIGHT_PATTERNS +ZSH_HIGHLIGHT_REGEXP+=('\bsudo\b' fg=123,bold) ``` -This will highlight lines that start with a call to the `rm` command. - -The regular expressions flavour used is [PCRE][pcresyntax] when the -`RE_MATCH_PCRE` option is set and POSIX Extended Regular Expressions (ERE), -as implemented by the platform's C library, otherwise. For details on the -latter, see [the `zsh/regex` module's documentation][MAN_ZSH_REGEX] and the -`regcomp(3)` and `re_format(7)` manual pages on your system. - -For instance, to highlight `sudo` only as a complete word, i.e., `sudo cmd`, -but not `sudoedit`, one might use: - -* When the `RE_MATCH_PCRE` is set: - - ```zsh - typeset -A ZSH_HIGHLIGHT_REGEXP - ZSH_HIGHLIGHT_REGEXP+=('\bsudo\b' fg=123,bold) - ``` - -* When the `RE_MATCH_PCRE` is unset, on platforms with GNU `libc` (e.g., many GNU/Linux distributions): - - ```zsh - typeset -A ZSH_HIGHLIGHT_REGEXP - ZSH_HIGHLIGHT_REGEXP+=('\' fg=123,bold) - ``` - -* When the `RE_MATCH_PCRE` is unset, on BSD-based platforms (e.g., macOS): - - ```zsh - typeset -A ZSH_HIGHLIGHT_REGEXP - ZSH_HIGHLIGHT_REGEXP+=('[[:<:]]sudo[[:>:]]' fg=123,bold) - ``` - -Note, however, that PCRE and POSIX ERE have a large common subset: -for instance, the regular expressions `[abc]`, `a*`, and `(a|b)` have the same -meaning in both flavours. +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)` @@ -58,8 +25,6 @@ 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]: https://zsh.sourceforge.io/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting -[perlretut]: https://perldoc.perl.org/perlretut -[zshmisc-Conditional-Expressions]: https://zsh.sourceforge.io/Doc/Release/Conditional-Expressions.html#Conditional-Expressions -[MAN_ZSH_REGEX]: https://zsh.sourceforge.io/Doc/Release/Zsh-Modules.html#The-zsh_002fregex-Module -[pcresyntax]: https://www.pcre.org/original/doc/html/pcresyntax.html +[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/docs/highlighters/root.md b/docs/highlighters/root.md index 8197e4b..d120d20 100644 --- a/docs/highlighters/root.md +++ b/docs/highlighters/root.md @@ -22,4 +22,4 @@ 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]: https://zsh.sourceforge.io/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting +[zshzle-Character-Highlighting]: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting diff --git a/highlighters/brackets/brackets-highlighter.zsh b/highlighters/brackets/brackets-highlighter.zsh index bc388fd..fc71f2a 100644 --- a/highlighters/brackets/brackets-highlighter.zsh +++ b/highlighters/brackets/brackets-highlighter.zsh @@ -51,9 +51,8 @@ _zsh_highlight_highlighter_brackets_paint() local -A levelpos lastoflevel matching # Find all brackets and remember which one is matching - pos=0 - for char in ${(s..)BUFFER} ; do - (( ++pos )) + for (( pos = 1; pos <= buflen; pos++ )) ; do + char=$BUFFER[pos] case $char in ["([{"]) levelpos[$pos]=$((++level)) diff --git a/highlighters/main/main-highlighter.zsh b/highlighters/main/main-highlighter.zsh index 3ec96d9..9a48222 100644 --- a/highlighters/main/main-highlighter.zsh +++ b/highlighters/main/main-highlighter.zsh @@ -33,10 +33,8 @@ : ${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]:=} @@ -58,10 +56,9 @@ : ${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[redirection]:=none} : ${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. @@ -76,7 +73,7 @@ _zsh_highlight_main_add_region_highlight() { integer start=$1 end=$2 shift 2 - if (( $#in_alias )); then + if (( in_alias )); then [[ $1 == unknown-token ]] && alias_style=unknown-token return fi @@ -108,19 +105,13 @@ _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(). @@ -182,9 +173,7 @@ _zsh_highlight_main__type() { 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 + if (( $+aliases[(e)$1] )) && (( aliases_allowed )); then REPLY=alias elif [[ $1 == *.* && -n ${1%.*} ]] && (( $+saliases[(e)${1##*.}] )); then REPLY='suffix alias' @@ -254,9 +243,10 @@ _zsh_highlight_main__is_runnable() { _zsh_highlight_main__is_redirection() { # A redirection operator token: # - starts with an optional single-digit number; - # - is one of the tokens listed in zshmisc(1) - # - however (z) normalizes ! to | - [[ ${1#[0-9]} == (\<|\<\>|(\>|\>\>)(|\|)|\<\<(|-)|\<\<\<|\<\&|\&\<|(\>|\>\>)\&(|\|)|\&(\>|\>\>)(|\||\!)) ]] + # - then, has a '<' or '>' character; + # - is not a process substitution [<(...) or >(...)]. + # - is not a numeric glob <-> + [[ $1 == (<0-9>|)(\<|\>)* ]] && [[ $1 != (\<|\>)$'\x28'* ]] && [[ $1 != *'<'*'-'*'>'* ]] } # Resolve alias. @@ -272,18 +262,6 @@ _zsh_highlight_main__resolve_alias() { 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. # @@ -328,13 +306,9 @@ _zsh_highlight_highlighter_main_paint() # $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.) + # $precommand_options maps precommand name to values of $flags_with_argument and + # $flags_sans_argument 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. @@ -348,35 +322,30 @@ _zsh_highlight_highlighter_main_paint() 'noglob' '' # 'time' and 'nocorrect' shouldn't be added here; they're reserved words, not precommands. - # miscellaneous commands '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 + # Argumentless flags that can't be followed by a command: -e -h -K -k -V -v + 'sudo' Cgprtu:AEHPSbilns # 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 - 'proxychains' f:q # proxychains 4.4.0 - 'torsocks' idq:upaP # Torsocks 2.3.0 - 'torify' idq:upaP # Torsocks 2.3.0 - 'ssh-agent' aEPt:csDd:k # As of OpenSSH 8.1p1 - 'tabbed' gnprtTuU:cdfhs:v # suckless-tools v44 - 'chronic' :ev # moreutils 0.62-1 - 'ifne' :n # moreutils 0.62-1 - 'grc' :se # grc - a "generic colouriser" (that's their spelling, not mine) - 'cpulimit' elp:ivz # cpulimit 0.2 - 'ktrace' fgpt:aBCcdiT + # As of OpenSSH 8.1p1; -k is deliberately left out since it may not be followed by a command + 'ssh-agent' aEPt:csDd + # 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 - # _wanted (skip two) if [[ $zsyh_user_options[ignorebraces] == on || ${zsyh_user_options[ignoreclosebraces]:-off} == on ]]; then local right_brace_is_recognised_everywhere=false @@ -390,7 +359,6 @@ _zsh_highlight_highlighter_main_paint() ZSH_HIGHLIGHT_TOKENS_COMMANDSEPARATOR=( '|' '||' ';' '&' '&&' - $'\n' # ${(z)} returns ';' but we convert it to $'\n' '|&' '&!' '&|' # ### 'case' syntax, but followed by a pattern, not by a command @@ -434,63 +402,6 @@ _zsh_highlight_highlighter_main_paint() 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 - if [[ $zsyh_user_options[shwordsplit] == on ]]; then - words=( ${(P)=MATCH} ) - else - words=( ${(P)MATCH} ) - fi - ;; - 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. @@ -502,18 +413,17 @@ _zsh_highlight_main_highlighter__try_expand_parameter() _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 + # 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 alias_style param_style arg buf=$4 highlight_glob=true 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_alias is equal to the number of shifts needed until arg=args[1] pops an + # arg from BUFFER and not added by an alias. # in_param is analogous for parameter expansions - integer in_param=0 len=$#buf - local -a in_alias match mbegin mend list_highlights + integer in_alias=0 in_param=0 len=$#buf + local -a 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 @@ -524,7 +434,7 @@ _zsh_highlight_main_highlighter_highlight_list() # "Q" for square # "Y" for curly # "T" for [[ ]] - # "S" 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' @@ -542,9 +452,6 @@ _zsh_highlight_main_highlighter_highlight_list() # - :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. @@ -573,13 +480,6 @@ _zsh_highlight_main_highlighter_highlight_list() # $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 @@ -590,34 +490,15 @@ _zsh_highlight_main_highlighter_highlight_list() 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 + if (( in_alias )); then + (( in_alias-- )) + 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 @@ -633,7 +514,7 @@ _zsh_highlight_main_highlighter_highlight_list() if (( in_redirection == 0 )); then this_word=$next_word next_word=':regular:' - elif (( !in_param )); then + else # Stall $next_word. (( --in_redirection )) fi @@ -643,7 +524,6 @@ _zsh_highlight_main_highlighter_highlight_list() # $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 @@ -653,19 +533,14 @@ _zsh_highlight_main_highlighter_highlight_list() fi fi - if (( $#in_alias == 0 && in_param == 0 )); then + 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')#)(?|)* ]] + [[ "$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 @@ -709,10 +584,11 @@ _zsh_highlight_main_highlighter_highlight_list() if [[ $res == "alias" ]]; then # Mark insane aliases as unknown-token (cf. #263). if [[ $arg == ?*=* ]]; then + (( in_alias == 0 )) && in_alias=1 _zsh_highlight_main_add_region_highlight $start_pos $end_pos unknown-token continue fi - seen_alias[$arg]=$#in_alias + seen_alias[$arg]=1 _zsh_highlight_main__resolve_alias $arg local -a alias_args # Elision is desired in case alias x='' @@ -722,15 +598,15 @@ _zsh_highlight_main_highlighter_highlight_list() alias_args=(${(z)REPLY}) fi args=( $alias_args $args ) - if (( $#in_alias == 0 )); then + if (( in_alias == 0 )); then alias_style=alias + # Add one because we will in_alias-- on the next loop iteration so + # this iteration should be considered in in_alias as well + (( in_alias += $#alias_args + 1 )) else - # Transfer the count of this arg to the new element about to be appended. - (( in_alias[1]-- )) + # This arg is already included in the count, so no need to + 1. + (( in_alias += $#alias_args )) 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 @@ -743,7 +619,7 @@ _zsh_highlight_main_highlighter_highlight_list() # Analyse the current word. if _zsh_highlight_main__is_redirection $arg ; then if (( in_redirection == 1 )); then - # Two consecutive redirection operators is an error. + # The condition excludes the case that BUFFER='{foo}>&2' and we're on the '>&'. _zsh_highlight_main_add_region_highlight $start_pos $end_pos unknown-token else in_redirection=2 @@ -758,50 +634,58 @@ _zsh_highlight_main_highlighter_highlight_list() fi # Expand parameters. - if (( ! in_param )) && _zsh_highlight_main_highlighter__try_expand_parameter "$arg"; then + # + # ### 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}.) + () { # 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 + local -a match mbegin mend + local MATCH; integer MBEGIN MEND + local parameter_name + local -a words + if [[ $arg[1] == '$' ]] && [[ ${arg[2]} == '{' ]] && [[ ${arg[-1]} == '}' ]]; then + parameter_name=${${arg:2}%?} + elif [[ $arg[1] == '$' ]]; then + parameter_name=${arg:1} + fi + if [[ $res == none ]] && zmodload -e zsh/parameter && + [[ ${parameter_name} =~ ^${~parameter_name_pattern}$ ]] && + (( ${+parameters[(e)${MATCH}]} )) && [[ ${parameters[(e)$MATCH]} != *special* ]] + then + # Set $arg. + case ${(tP)MATCH} in + (*array*|*assoc*) + words=( ${(P)MATCH} ) + ;; + (*) + # scalar, presumably + words=( ${(P)MATCH} ) + ;; + esac + (( in_param = 1 + $#words )) + args=( $words $args ) + arg=$args[1] + _zsh_highlight_main__type "$arg" 0 + res=$REPLY + 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 + { [[ -n $flags_sans_argument ]] && [[ $arg == '-'[$flags_sans_argument]#[$flags_with_argument] ]] || + [[ $arg == '-'[$flags_with_argument] ]] }; 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 + { [[ -n $flags_sans_argument ]] && [[ $arg == '-'[$flags_sans_argument]#[$flags_with_argument]* ]] || + [[ $arg == '-'[$flags_with_argument]* ]] }; then # Argument attached in the same word this_word=${this_word//:start:/} next_word+=':start:' @@ -812,17 +696,6 @@ _zsh_highlight_main_highlighter_highlight_list() 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. @@ -844,94 +717,45 @@ _zsh_highlight_main_highlighter_highlight_list() next_word+=':sudo_opt:' next_word+=':start:' fi - 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 + # The Great Fork: is this a command word? Is this a non-command word? + if [[ -n ${(M)ZSH_HIGHLIGHT_TOKENS_COMMANDSEPARATOR:#"$arg"} ]]; then + if _zsh_highlight_main__stack_pop T || _zsh_highlight_main__stack_pop Q; then + # Missing closing square bracket(s) + style=unknown-token + elif [[ $this_word == *':regular:'* ]]; then + # This highlights empty commands (semicolon follows nothing) as an error. + # Zsh accepts them, though. + style=commandseparator + else + style=unknown-token + fi + if [[ $arg == ';' ]] && $in_array_assignment; then + # literal newline inside an array assignment + next_word=':regular:' + else + next_word=':start:' + highlight_glob=true + 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 + next_word=':start:' # 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 + flags_with_argument=${precommand_options[$arg]%:*} + flags_sans_argument=${precommand_options[$arg]#*:} + next_word=${next_word//:regular:/} + next_word+=':sudo_opt:' + next_word+=':start:' + else + case $res in + reserved) # reserved word style=reserved-word # Match braces and handle special cases. case $arg in @@ -1007,30 +831,20 @@ _zsh_highlight_main_highlighter_highlight_list() 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 + 'suffix alias') style=suffix-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 + 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.) @@ -1054,7 +868,6 @@ _zsh_highlight_main_highlighter_highlight_list() [[ $arg[0,1] == $histchars[2,2] ]]; then style=history-expansion elif (( ! in_param )) && - ! $saw_assignment && [[ $arg[1,2] == '((' ]]; then # Arithmetic evaluation. # @@ -1075,7 +888,6 @@ _zsh_highlight_main_highlighter_highlight_list() # anonymous function style=reserved-word elif (( ! in_param )) && - ! $saw_assignment && [[ $arg == $'\x28' ]]; then # subshell style=reserved-word @@ -1090,86 +902,79 @@ _zsh_highlight_main_highlighter_highlight_list() fi _zsh_highlight_main__stack_pop 'R' reserved-word else - if _zsh_highlight_main_highlighter_check_path $arg 1; then + if _zsh_highlight_main_highlighter_check_path $arg; then style=$REPLY else style=unknown-token fi fi ;; - (*) _zsh_highlight_main_add_region_highlight $start_pos $end_pos arg0_$res + *) _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 + esac + fi + if [[ -n ${(M)ZSH_HIGHLIGHT_TOKENS_CONTROL_FLOW:#"$arg"} ]]; then + next_word=':start::start_of_pipeline:' + fi + 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 - ;; + $'\x29') # subshell or end of array assignment + if $in_array_assignment; then + style=assign + in_array_assignment=false + next_word+=':start:' + 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_alias == 1 )) && in_alias=0 _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 )) @@ -1201,32 +1006,12 @@ _zsh_highlight_main_highlighter_highlight_path_separators() # 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 + REPLY=path [[ -z $expanded_path ]] && return 1 @@ -1243,56 +1028,24 @@ _zsh_highlight_main_highlighter_check_path() 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 + [[ -L $expanded_path ]] && return 0 + [[ -e $expanded_path ]] && return 0 # 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 + local cdpath_dir + for cdpath_dir in $cdpath ; do + [[ -e "$cdpath_dir/$expanded_path" ]] && return 0 + done # 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 + tmp=( ${expanded_path}*(N) ) + (( $#tmp > 0 )) && REPLY=path_prefix && return 0 fi # It's not a path. @@ -1302,8 +1055,6 @@ _zsh_highlight_main_highlighter_check_path() # 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 @@ -1345,12 +1096,8 @@ _zsh_highlight_main_highlighter_highlight_argument() fi esac - # This loop is a hot path. Keep it fast! - (( --i )) - while (( ++i <= $#arg )); do - i=${arg[(ib.i.)[\\\'\"\`\$\<\>\*\?]]} + for (( ; i <= $#arg ; i += 1 )); do case "$arg[$i]" in - "") break;; "\\") (( i += 1 )); continue;; "'") _zsh_highlight_main_highlighter_highlight_single_quote $i @@ -1376,13 +1123,7 @@ _zsh_highlight_main_highlighter_highlight_argument() (( 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 + elif [[ $arg[i+1] == $'\x28' ]]; then start=$i (( i += 2 )) _zsh_highlight_main_highlighter_highlight_list $(( start_pos + i - 1 )) S $has_end $arg[i,-1] @@ -1398,7 +1139,7 @@ _zsh_highlight_main_highlighter_highlight_argument() fi continue fi - while [[ $arg[i+1] == [=~#+'^'] ]]; do + while [[ $arg[i+1] == [\^=~#+] ]]; do (( i += 1 )) done if [[ $arg[i+1] == [*@#?$!-] ]]; then @@ -1423,9 +1164,7 @@ _zsh_highlight_main_highlighter_highlight_argument() fi ;| *) - if $highlight_glob && - [[ $zsyh_user_options[multios] == on || $in_redirection -eq 0 ]] && - [[ ${arg[$i]} =~ ^[*?] || ${arg:$i-1} =~ ^\<[0-9]*-[0-9]*\> ]]; then + if $highlight_glob && [[ ${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 @@ -1436,19 +1175,10 @@ _zsh_highlight_main_highlighter_highlight_argument() 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 + if (( path_eligible )) && _zsh_highlight_main_highlighter_check_path $arg[$1,-1]; then + base_style=$REPLY + _zsh_highlight_main_highlighter_highlight_path_separators $base_style + highlights+=($reply) fi highlights=($(( start_pos + $1 - 1 )) $end_pos $base_style $highlights) @@ -1501,14 +1231,14 @@ _zsh_highlight_main_highlighter_highlight_double_quote() (( 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 + '"') 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 @@ -1525,16 +1255,9 @@ _zsh_highlight_main_highlighter_highlight_double_quote() (( 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 )) + saved_reply=($reply) _zsh_highlight_main_highlighter_highlight_list $(( start_pos + i - 1 )) S $has_end $arg[i,-1] ret=$? (( i += REPLY )) @@ -1715,96 +1438,6 @@ _zsh_highlight_main_highlighter_highlight_backtick() 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. # @@ -1824,13 +1457,6 @@ _zsh_highlight_main_highlighter_expand_path() # ------------------------------------------------------------------------------------------------- _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=() } diff --git a/highlighters/main/test-data/abspath-in-command-position1.zsh b/highlighters/main/test-data/abspath-in-command-position1.zsh index cfc12a5..75140d2 100644 --- a/highlighters/main/test-data/abspath-in-command-position1.zsh +++ b/highlighters/main/test-data/abspath-in-command-position1.zsh @@ -31,5 +31,5 @@ BUFFER=$'/' expected_region_highlight=( - '1 1 path_prefix' # / + '1 1 path' # / ) diff --git a/highlighters/main/test-data/abspath-in-command-position1b.zsh b/highlighters/main/test-data/abspath-in-command-position1b.zsh deleted file mode 100644 index 88fe60c..0000000 --- a/highlighters/main/test-data/abspath-in-command-position1b.zsh +++ /dev/null @@ -1,36 +0,0 @@ -#!/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/highlighters/main/test-data/abspath-in-command-position3.zsh b/highlighters/main/test-data/abspath-in-command-position3.zsh index 415e316..9323ed7 100644 --- a/highlighters/main/test-data/abspath-in-command-position3.zsh +++ b/highlighters/main/test-data/abspath-in-command-position3.zsh @@ -28,10 +28,8 @@ # vim: ft=zsh sw=2 ts=2 et # ------------------------------------------------------------------------------------------------- -BUFFER=$'/bin; /bin' +BUFFER=$'/bin' expected_region_highlight=( - '1 4 unknown-token' # /bin (in middle) - '5 5 commandseparator' # ; - '7 10 path_prefix' # /bin (at end) + '1 4 path' # /bin ) diff --git a/highlighters/main/test-data/abspath-in-command-position3b.zsh b/highlighters/main/test-data/abspath-in-command-position3b.zsh deleted file mode 100644 index 0e65c98..0000000 --- a/highlighters/main/test-data/abspath-in-command-position3b.zsh +++ /dev/null @@ -1,38 +0,0 @@ -#!/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/highlighters/main/test-data/alias-brackets.zsh b/highlighters/main/test-data/alias-brackets.zsh deleted file mode 100644 index ede6c9a..0000000 --- a/highlighters/main/test-data/alias-brackets.zsh +++ /dev/null @@ -1,41 +0,0 @@ -#!/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/highlighters/main/test-data/alias-comment1.zsh b/highlighters/main/test-data/alias-comment1.zsh index bae7ef6..dd5068f 100644 --- a/highlighters/main/test-data/alias-comment1.zsh +++ b/highlighters/main/test-data/alias-comment1.zsh @@ -27,11 +27,11 @@ # vim: ft=zsh sw=2 ts=2 et # ------------------------------------------------------------------------------------------------- -# see alias-comment2.zsh and comment-followed.zsh +# see alias-comment2.zsh setopt interactivecomments alias x=$'# foo\npwd' BUFFER='x' expected_region_highlight=( - '1 1 alias' # x + '1 1 alias "issue #616"' # x ) diff --git a/highlighters/main/test-data/alias-in-cmdsubst.zsh b/highlighters/main/test-data/alias-in-cmdsubst.zsh deleted file mode 100644 index b3cf777..0000000 --- a/highlighters/main/test-data/alias-in-cmdsubst.zsh +++ /dev/null @@ -1,43 +0,0 @@ -#!/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/highlighters/main/test-data/alias-loop.zsh b/highlighters/main/test-data/alias-loop.zsh index 83992db..baa122b 100644 --- a/highlighters/main/test-data/alias-loop.zsh +++ b/highlighters/main/test-data/alias-loop.zsh @@ -28,16 +28,12 @@ # 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 + '1 1 unknown-token' # a (invalid alias loop) '3 5 default' # foo '6 6 commandseparator' # ; '8 8 builtin' # : diff --git a/highlighters/main/test-data/alias-reuse1.zsh b/highlighters/main/test-data/alias-reuse1.zsh deleted file mode 100644 index 1fd61a0..0000000 --- a/highlighters/main/test-data/alias-reuse1.zsh +++ /dev/null @@ -1,39 +0,0 @@ -#!/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/highlighters/main/test-data/alias-reuse2.zsh b/highlighters/main/test-data/alias-reuse2.zsh deleted file mode 100644 index 37251fb..0000000 --- a/highlighters/main/test-data/alias-reuse2.zsh +++ /dev/null @@ -1,39 +0,0 @@ -#!/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/highlighters/main/test-data/alias-reuse3.zsh b/highlighters/main/test-data/alias-reuse3.zsh deleted file mode 100644 index 5d7150a..0000000 --- a/highlighters/main/test-data/alias-reuse3.zsh +++ /dev/null @@ -1,39 +0,0 @@ -#!/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/highlighters/main/test-data/alias-reuse4.zsh b/highlighters/main/test-data/alias-reuse4.zsh deleted file mode 100644 index 7ad7038..0000000 --- a/highlighters/main/test-data/alias-reuse4.zsh +++ /dev/null @@ -1,42 +0,0 @@ -#!/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/highlighters/main/test-data/alias-reuse5.zsh b/highlighters/main/test-data/alias-reuse5.zsh deleted file mode 100644 index 881401b..0000000 --- a/highlighters/main/test-data/alias-reuse5.zsh +++ /dev/null @@ -1,43 +0,0 @@ -#!/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/highlighters/main/test-data/alias-self2.zsh b/highlighters/main/test-data/alias-self2.zsh deleted file mode 100644 index fd6ae03..0000000 --- a/highlighters/main/test-data/alias-self2.zsh +++ /dev/null @@ -1,37 +0,0 @@ -#!/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/highlighters/main/test-data/alias-to-dir.zsh b/highlighters/main/test-data/alias-to-dir.zsh index 30390d4..bfa6e07 100644 --- a/highlighters/main/test-data/alias-to-dir.zsh +++ b/highlighters/main/test-data/alias-to-dir.zsh @@ -32,5 +32,5 @@ alias x=/ BUFFER=$'x' expected_region_highlight=( - '1 1 unknown-token' # x (/) + '1 1 unknown-token "issue #668"' # x (/) ) diff --git a/highlighters/main/test-data/alias-to-dir1b.zsh b/highlighters/main/test-data/alias-to-dir1b.zsh deleted file mode 100644 index 62ec521..0000000 --- a/highlighters/main/test-data/alias-to-dir1b.zsh +++ /dev/null @@ -1,37 +0,0 @@ -#!/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/highlighters/main/test-data/always2.zsh b/highlighters/main/test-data/always2.zsh index 991137c..f5852c6 100644 --- a/highlighters/main/test-data/always2.zsh +++ b/highlighters/main/test-data/always2.zsh @@ -32,7 +32,7 @@ BUFFER=$'{\nls\n} always { pwd }' expected_region_highlight=( '1 1 reserved-word' # { - '2 2 commandseparator' # \n + '2 2 unknown-token' # \n '3 4 command' # ls '5 5 commandseparator' # \n '6 6 reserved-word' # } diff --git a/highlighters/main/test-data/arith-cmdsubst-mess.zsh b/highlighters/main/test-data/arith-cmdsubst-mess.zsh deleted file mode 100644 index 82268ac..0000000 --- a/highlighters/main/test-data/arith-cmdsubst-mess.zsh +++ /dev/null @@ -1,46 +0,0 @@ -#!/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/highlighters/main/test-data/arith1.zsh b/highlighters/main/test-data/arith1.zsh deleted file mode 100644 index 0462f73..0000000 --- a/highlighters/main/test-data/arith1.zsh +++ /dev/null @@ -1,37 +0,0 @@ -#!/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/highlighters/main/test-data/arith2.zsh b/highlighters/main/test-data/arith2.zsh deleted file mode 100644 index af981d7..0000000 --- a/highlighters/main/test-data/arith2.zsh +++ /dev/null @@ -1,38 +0,0 @@ -#!/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/highlighters/main/test-data/arithmetic-command-substitution.zsh b/highlighters/main/test-data/arithmetic-command-substitution.zsh deleted file mode 100644 index 07db0fb..0000000 --- a/highlighters/main/test-data/arithmetic-command-substitution.zsh +++ /dev/null @@ -1,42 +0,0 @@ -#!/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/highlighters/main/test-data/arithmetic-doubled-parens.zsh b/highlighters/main/test-data/arithmetic-doubled-parens.zsh deleted file mode 100644 index d582d67..0000000 --- a/highlighters/main/test-data/arithmetic-doubled-parens.zsh +++ /dev/null @@ -1,37 +0,0 @@ -#!/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/highlighters/main/test-data/arithmetic-empty.zsh b/highlighters/main/test-data/arithmetic-empty.zsh deleted file mode 100644 index bd75996..0000000 --- a/highlighters/main/test-data/arithmetic-empty.zsh +++ /dev/null @@ -1,39 +0,0 @@ -#!/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/highlighters/main/test-data/arithmetic-hist-expn.zsh b/highlighters/main/test-data/arithmetic-hist-expn.zsh deleted file mode 100644 index 79af723..0000000 --- a/highlighters/main/test-data/arithmetic-hist-expn.zsh +++ /dev/null @@ -1,38 +0,0 @@ -#!/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/highlighters/main/test-data/arithmetic-invalid-chars.zsh b/highlighters/main/test-data/arithmetic-invalid-chars.zsh deleted file mode 100644 index 9ace438..0000000 --- a/highlighters/main/test-data/arithmetic-invalid-chars.zsh +++ /dev/null @@ -1,39 +0,0 @@ -#!/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/highlighters/main/test-data/arithmetic-multiplication.zsh b/highlighters/main/test-data/arithmetic-multiplication.zsh deleted file mode 100644 index 65df0c9..0000000 --- a/highlighters/main/test-data/arithmetic-multiplication.zsh +++ /dev/null @@ -1,39 +0,0 @@ -#!/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/highlighters/main/test-data/arithmetic-nested.zsh b/highlighters/main/test-data/arithmetic-nested.zsh deleted file mode 100644 index d734cd3..0000000 --- a/highlighters/main/test-data/arithmetic-nested.zsh +++ /dev/null @@ -1,38 +0,0 @@ -#!/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/highlighters/main/test-data/arithmetic-quoted.zsh b/highlighters/main/test-data/arithmetic-quoted.zsh deleted file mode 100644 index 917ddf7..0000000 --- a/highlighters/main/test-data/arithmetic-quoted.zsh +++ /dev/null @@ -1,38 +0,0 @@ -#!/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/highlighters/main/test-data/arithmetic-unclosed.zsh b/highlighters/main/test-data/arithmetic-unclosed.zsh deleted file mode 100644 index aa4eac7..0000000 --- a/highlighters/main/test-data/arithmetic-unclosed.zsh +++ /dev/null @@ -1,37 +0,0 @@ -#!/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/highlighters/main/test-data/arithmetic-unfinished.zsh b/highlighters/main/test-data/arithmetic-unfinished.zsh deleted file mode 100644 index 916c3da..0000000 --- a/highlighters/main/test-data/arithmetic-unfinished.zsh +++ /dev/null @@ -1,41 +0,0 @@ -#!/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/highlighters/main/test-data/array-cmdsep1.zsh b/highlighters/main/test-data/array-cmdsep1.zsh deleted file mode 100644 index 2fd55c0..0000000 --- a/highlighters/main/test-data/array-cmdsep1.zsh +++ /dev/null @@ -1,45 +0,0 @@ -#!/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/highlighters/main/test-data/array-cmdsep2.zsh b/highlighters/main/test-data/array-cmdsep2.zsh deleted file mode 100644 index 0bda676..0000000 --- a/highlighters/main/test-data/array-cmdsep2.zsh +++ /dev/null @@ -1,41 +0,0 @@ -#!/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/highlighters/main/test-data/array-cmdsep3.zsh b/highlighters/main/test-data/array-cmdsep3.zsh deleted file mode 100644 index b4b3687..0000000 --- a/highlighters/main/test-data/array-cmdsep3.zsh +++ /dev/null @@ -1,41 +0,0 @@ -#!/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/highlighters/main/test-data/assign-append.zsh b/highlighters/main/test-data/assign-append.zsh index feb68e5..eb9fbbd 100644 --- a/highlighters/main/test-data/assign-append.zsh +++ b/highlighters/main/test-data/assign-append.zsh @@ -31,9 +31,7 @@ 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/highlighters/main/test-data/assign-array.zsh b/highlighters/main/test-data/assign-array.zsh index ef0a666..0624f9b 100644 --- a/highlighters/main/test-data/assign-array.zsh +++ b/highlighters/main/test-data/assign-array.zsh @@ -32,10 +32,8 @@ 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/highlighters/main/test-data/assign-array2.zsh b/highlighters/main/test-data/assign-array2.zsh index 2d48721..cdc9e63 100644 --- a/highlighters/main/test-data/assign-array2.zsh +++ b/highlighters/main/test-data/assign-array2.zsh @@ -31,10 +31,8 @@ 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/highlighters/main/test-data/assign-array3.zsh b/highlighters/main/test-data/assign-array3.zsh index 5eb645e..986d71f 100644 --- a/highlighters/main/test-data/assign-array3.zsh +++ b/highlighters/main/test-data/assign-array3.zsh @@ -31,11 +31,9 @@ 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/highlighters/main/test-data/assign-invalid-command.zsh b/highlighters/main/test-data/assign-invalid-command.zsh deleted file mode 100644 index 557327e..0000000 --- a/highlighters/main/test-data/assign-invalid-command.zsh +++ /dev/null @@ -1,37 +0,0 @@ -#!/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/highlighters/main/test-data/assign-quoted-cmdsubst.zsh b/highlighters/main/test-data/assign-quoted-cmdsubst.zsh deleted file mode 100644 index d4a62df..0000000 --- a/highlighters/main/test-data/assign-quoted-cmdsubst.zsh +++ /dev/null @@ -1,45 +0,0 @@ -#!/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/highlighters/main/test-data/assign.zsh b/highlighters/main/test-data/assign.zsh index c6e8532..6e797ac 100644 --- a/highlighters/main/test-data/assign.zsh +++ b/highlighters/main/test-data/assign.zsh @@ -33,10 +33,8 @@ 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/highlighters/main/test-data/assignment-before-resword1.zsh b/highlighters/main/test-data/assignment-before-resword1.zsh deleted file mode 100644 index b271d4a..0000000 --- a/highlighters/main/test-data/assignment-before-resword1.zsh +++ /dev/null @@ -1,40 +0,0 @@ -#!/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/highlighters/main/test-data/assignment-before-resword2.zsh b/highlighters/main/test-data/assignment-before-resword2.zsh deleted file mode 100644 index 247e41e..0000000 --- a/highlighters/main/test-data/assignment-before-resword2.zsh +++ /dev/null @@ -1,40 +0,0 @@ -#!/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/highlighters/main/test-data/assignment-before-resword3.zsh b/highlighters/main/test-data/assignment-before-resword3.zsh deleted file mode 100644 index 5204189..0000000 --- a/highlighters/main/test-data/assignment-before-resword3.zsh +++ /dev/null @@ -1,37 +0,0 @@ -#!/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/highlighters/main/test-data/assignment-before-resword4.zsh b/highlighters/main/test-data/assignment-before-resword4.zsh deleted file mode 100644 index cc3d523..0000000 --- a/highlighters/main/test-data/assignment-before-resword4.zsh +++ /dev/null @@ -1,40 +0,0 @@ -#!/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/highlighters/main/test-data/assignment-before-resword5.zsh b/highlighters/main/test-data/assignment-before-resword5.zsh deleted file mode 100644 index 33f1ed1..0000000 --- a/highlighters/main/test-data/assignment-before-resword5.zsh +++ /dev/null @@ -1,38 +0,0 @@ -#!/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/highlighters/main/test-data/backslash-continuation2.zsh b/highlighters/main/test-data/backslash-continuation2.zsh deleted file mode 100644 index 9e2ca62..0000000 --- a/highlighters/main/test-data/backslash-continuation2.zsh +++ /dev/null @@ -1,37 +0,0 @@ -#!/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/highlighters/main/test-data/bang-assign-array.zsh b/highlighters/main/test-data/bang-assign-array.zsh index a54cf2d..77b57e6 100644 --- a/highlighters/main/test-data/bang-assign-array.zsh +++ b/highlighters/main/test-data/bang-assign-array.zsh @@ -32,11 +32,9 @@ 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/highlighters/main/test-data/block-assignment-no-command.zsh b/highlighters/main/test-data/block-assignment-no-command.zsh deleted file mode 100644 index ec52c98..0000000 --- a/highlighters/main/test-data/block-assignment-no-command.zsh +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env zsh -# ------------------------------------------------------------------------------------------------- -# Copyright (c) 2022 zsh-syntax-highlighting contributors -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without modification, are permitted -# provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, this list of conditions -# and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright notice, this list of -# conditions and the following disclaimer in the documentation and/or other materials provided -# with the distribution. -# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors -# may be used to endorse or promote products derived from this software without specific prior -# written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR -# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT -# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 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=42 }' - -expected_region_highlight=( - '1 1 reserved-word' # { - '3 6 assign' # a=42 - '5 6 default' # 42 - '8 8 reserved word "issue #854"' # } -) diff --git a/highlighters/main/test-data/cdpath-abspath.zsh b/highlighters/main/test-data/cdpath-abspath.zsh deleted file mode 100644 index 64707b2..0000000 --- a/highlighters/main/test-data/cdpath-abspath.zsh +++ /dev/null @@ -1,38 +0,0 @@ -#!/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/highlighters/main/test-data/comment-followed.zsh b/highlighters/main/test-data/comment-followed.zsh index 044f283..8c7e42c 100644 --- a/highlighters/main/test-data/comment-followed.zsh +++ b/highlighters/main/test-data/comment-followed.zsh @@ -28,12 +28,11 @@ # 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 + '6 6 commandseparator "issue #501"' # \n '7 10 builtin' # true ) diff --git a/highlighters/main/test-data/dinbrack1.zsh b/highlighters/main/test-data/dinbrack1.zsh deleted file mode 100644 index e2279d6..0000000 --- a/highlighters/main/test-data/dinbrack1.zsh +++ /dev/null @@ -1,41 +0,0 @@ -#!/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/highlighters/main/test-data/empty-command-newline.zsh b/highlighters/main/test-data/empty-command-newline.zsh index 4b7b35c..783f4b6 100644 --- a/highlighters/main/test-data/empty-command-newline.zsh +++ b/highlighters/main/test-data/empty-command-newline.zsh @@ -34,6 +34,6 @@ BUFFER=$':;\n:' expected_region_highlight=( '1 1 builtin' # : '2 2 commandseparator' # ; - '3 3 commandseparator' # \n + '3 3 commandseparator "issue #616"' # \n '4 4 builtin' # : ) diff --git a/highlighters/main/test-data/equals1.zsh b/highlighters/main/test-data/equals1.zsh deleted file mode 100644 index 77f46e8..0000000 --- a/highlighters/main/test-data/equals1.zsh +++ /dev/null @@ -1,36 +0,0 @@ -#!/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/highlighters/main/test-data/equals2.zsh b/highlighters/main/test-data/equals2.zsh deleted file mode 100644 index bd59ff7..0000000 --- a/highlighters/main/test-data/equals2.zsh +++ /dev/null @@ -1,38 +0,0 @@ -#!/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/highlighters/main/test-data/equals3.zsh b/highlighters/main/test-data/equals3.zsh deleted file mode 100644 index 8c10789..0000000 --- a/highlighters/main/test-data/equals3.zsh +++ /dev/null @@ -1,36 +0,0 @@ -#!/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/highlighters/main/test-data/equals4.zsh b/highlighters/main/test-data/equals4.zsh deleted file mode 100644 index 28bc214..0000000 --- a/highlighters/main/test-data/equals4.zsh +++ /dev/null @@ -1,36 +0,0 @@ -#!/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/highlighters/main/test-data/fd-target-not-filename.zsh b/highlighters/main/test-data/fd-target-not-filename.zsh deleted file mode 100644 index 5c3cd08..0000000 --- a/highlighters/main/test-data/fd-target-not-filename.zsh +++ /dev/null @@ -1,40 +0,0 @@ -#!/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/highlighters/main/test-data/global-alias1.zsh b/highlighters/main/test-data/global-alias1.zsh deleted file mode 100644 index 0022de3..0000000 --- a/highlighters/main/test-data/global-alias1.zsh +++ /dev/null @@ -1,38 +0,0 @@ -#!/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/highlighters/main/test-data/history-double-quoted-followed.zsh b/highlighters/main/test-data/history-double-quoted-followed.zsh deleted file mode 100644 index 6421ced..0000000 --- a/highlighters/main/test-data/history-double-quoted-followed.zsh +++ /dev/null @@ -1,39 +0,0 @@ -#!/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/highlighters/main/test-data/meta-no-eval1.zsh b/highlighters/main/test-data/meta-no-eval1.zsh deleted file mode 100644 index bb04077..0000000 --- a/highlighters/main/test-data/meta-no-eval1.zsh +++ /dev/null @@ -1,49 +0,0 @@ -#!/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/highlighters/main/test-data/meta-no-eval2.zsh b/highlighters/main/test-data/meta-no-eval2.zsh deleted file mode 100644 index 61ef089..0000000 --- a/highlighters/main/test-data/meta-no-eval2.zsh +++ /dev/null @@ -1,40 +0,0 @@ -#!/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/highlighters/main/test-data/multiline-array-assignment1.zsh b/highlighters/main/test-data/multiline-array-assignment1.zsh index 8906cfd..3734c7a 100644 --- a/highlighters/main/test-data/multiline-array-assignment1.zsh +++ b/highlighters/main/test-data/multiline-array-assignment1.zsh @@ -32,10 +32,8 @@ 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 + '12 14 command' # env ) diff --git a/highlighters/main/test-data/multios-negates-globbing.zsh b/highlighters/main/test-data/multios-negates-globbing.zsh deleted file mode 100644 index 7ece670..0000000 --- a/highlighters/main/test-data/multios-negates-globbing.zsh +++ /dev/null @@ -1,39 +0,0 @@ -#!/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/highlighters/main/test-data/multios-negates-globbing2.zsh b/highlighters/main/test-data/multios-negates-globbing2.zsh deleted file mode 100644 index b6db983..0000000 --- a/highlighters/main/test-data/multios-negates-globbing2.zsh +++ /dev/null @@ -1,38 +0,0 @@ -#!/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/highlighters/main/test-data/multiple-redirections.zsh b/highlighters/main/test-data/multiple-redirections.zsh index 1545c1b..778e712 100644 --- a/highlighters/main/test-data/multiple-redirections.zsh +++ b/highlighters/main/test-data/multiple-redirections.zsh @@ -27,7 +27,7 @@ # vim: ft=zsh sw=2 ts=2 et # ------------------------------------------------------------------------------------------------- -BUFFER='id bob | grep java | sort | uniq | tail | head' +BUFFER='ps aux | grep java | sort | uniq | tail | head' expected_region_highlight=( "1 2 command" # ps diff --git a/highlighters/main/test-data/noglob-always.zsh b/highlighters/main/test-data/noglob-always.zsh index 6d55048..481722f 100644 --- a/highlighters/main/test-data/noglob-always.zsh +++ b/highlighters/main/test-data/noglob-always.zsh @@ -39,7 +39,6 @@ expected_region_highlight=( '19 24 reserved-word' # always '26 26 reserved-word' # { '28 31 builtin' # echo - '33 33 default' # * - '33 33 globbing' # * + '33 33 globbing "issue #577"' # * '35 35 reserved-word' # } ) diff --git a/highlighters/main/test-data/null-exec.zsh b/highlighters/main/test-data/null-exec.zsh index be1e306..ab73717 100644 --- a/highlighters/main/test-data/null-exec.zsh +++ b/highlighters/main/test-data/null-exec.zsh @@ -34,5 +34,5 @@ expected_region_highlight=( '1 4 precommand' # exec '6 6 redirection' # > '7 15 path' # /dev/null - '16 16 commandseparator' # ; + '16 16 commandseparator "issue #676"' # ; ) diff --git a/highlighters/main/test-data/null-exec2-printenv.zsh b/highlighters/main/test-data/null-exec2-printenv.zsh deleted file mode 100644 index 59a2cef..0000000 --- a/highlighters/main/test-data/null-exec2-printenv.zsh +++ /dev/null @@ -1,38 +0,0 @@ -#!/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/highlighters/main/test-data/opt-shwordsplit1.zsh b/highlighters/main/test-data/opt-shwordsplit1.zsh deleted file mode 100644 index 4a7689b..0000000 --- a/highlighters/main/test-data/opt-shwordsplit1.zsh +++ /dev/null @@ -1,40 +0,0 @@ -#!/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' # $EDITOR -) diff --git a/highlighters/main/test-data/optimized-cmdsubst-input.zsh b/highlighters/main/test-data/optimized-cmdsubst-input.zsh deleted file mode 100644 index ca55ef8..0000000 --- a/highlighters/main/test-data/optimized-cmdsubst-input.zsh +++ /dev/null @@ -1,43 +0,0 @@ -#!/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/highlighters/main/test-data/param-positional-in-array-append.zsh b/highlighters/main/test-data/param-positional-in-array-append.zsh deleted file mode 100644 index bd39e02..0000000 --- a/highlighters/main/test-data/param-positional-in-array-append.zsh +++ /dev/null @@ -1,39 +0,0 @@ -#!/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/highlighters/main/test-data/parameter-elision-command-word.zsh b/highlighters/main/test-data/parameter-elision-command-word.zsh deleted file mode 100644 index 25f649a..0000000 --- a/highlighters/main/test-data/parameter-elision-command-word.zsh +++ /dev/null @@ -1,36 +0,0 @@ -#!/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/highlighters/main/test-data/parameter-expansion-shwordsplit.zsh b/highlighters/main/test-data/parameter-expansion-shwordsplit.zsh deleted file mode 100644 index 0bf6f4c..0000000 --- a/highlighters/main/test-data/parameter-expansion-shwordsplit.zsh +++ /dev/null @@ -1,38 +0,0 @@ -#!/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 -# ------------------------------------------------------------------------------------------------- - -setopt sh_word_split -local foo='echo foo' - -BUFFER='$foo' - -expected_region_highlight=( - '1 4 builtin' # $foo -) diff --git a/highlighters/main/test-data/parameter-to-global-alias.zsh b/highlighters/main/test-data/parameter-to-global-alias.zsh deleted file mode 100644 index 63f95da..0000000 --- a/highlighters/main/test-data/parameter-to-global-alias.zsh +++ /dev/null @@ -1,42 +0,0 @@ -#!/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 global_alias >/dev/null; then - skip_test="Test is written on the assumption that 'global_alias' is not a valid command name, but that assumption does not hold" - return 0 -fi -alias -g global_alias=y -local s=global_alias - -BUFFER=$'$s' - -expected_region_highlight=( - '1 2 unknown-token' # $s -) diff --git a/highlighters/main/test-data/path-dollared-word3.zsh b/highlighters/main/test-data/path-dollared-word3.zsh index ec981b1..6921cba 100644 --- a/highlighters/main/test-data/path-dollared-word3.zsh +++ b/highlighters/main/test-data/path-dollared-word3.zsh @@ -34,7 +34,7 @@ BUFFER='$PWD; ${PWD}' expected_region_highlight=( - "1 4 unknown-token" # $PWD (without AUTO_CD) + "1 4 path" # $PWD "5 5 commandseparator" # ; - "7 12 path_prefix" # ${PWD} + "7 12 path" # ${PWD} ) diff --git a/highlighters/main/test-data/path-dollared-word3b.zsh b/highlighters/main/test-data/path-dollared-word3b.zsh deleted file mode 100644 index 72a2f7c..0000000 --- a/highlighters/main/test-data/path-dollared-word3b.zsh +++ /dev/null @@ -1,38 +0,0 @@ -#!/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/highlighters/main/test-data/path-mixed-quoting.zsh b/highlighters/main/test-data/path-mixed-quoting.zsh deleted file mode 100644 index cbd0b38..0000000 --- a/highlighters/main/test-data/path-mixed-quoting.zsh +++ /dev/null @@ -1,39 +0,0 @@ -#!/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/highlighters/main/test-data/path_prefix3.zsh b/highlighters/main/test-data/path_prefix3.zsh index 9f34f94..f4a0189 100644 --- a/highlighters/main/test-data/path_prefix3.zsh +++ b/highlighters/main/test-data/path_prefix3.zsh @@ -30,7 +30,7 @@ # Assumes that '/bin/sh' exists and '/bin/s' does not exist. # Related to path_prefix.zsh -PREBUFFER=$'ls \\\n' +PREBUFFER='ls \' BUFFER='/bin/s' expected_region_highlight=( diff --git a/highlighters/main/test-data/plain-file-in-command-position.zsh b/highlighters/main/test-data/plain-file-in-command-position.zsh deleted file mode 100644 index 141ffac..0000000 --- a/highlighters/main/test-data/plain-file-in-command-position.zsh +++ /dev/null @@ -1,39 +0,0 @@ -#!/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/highlighters/main/test-data/precommand-killing1.zsh b/highlighters/main/test-data/precommand-killing1.zsh index 7598346..80d279b 100644 --- a/highlighters/main/test-data/precommand-killing1.zsh +++ b/highlighters/main/test-data/precommand-killing1.zsh @@ -29,12 +29,11 @@ # ------------------------------------------------------------------------------------------------- hash sudo=false -touch foo -BUFFER='sudo -e ./foo' +BUFFER='sudo -e /etc/passwd' expected_region_highlight=( '1 4 precommand' # sudo '6 7 single-hyphen-option' # -e - '9 13 path' # ./foo + '9 19 path' # /etc/passwd ) diff --git a/highlighters/main/test-data/precommand-killing2.zsh b/highlighters/main/test-data/precommand-killing2.zsh index bc6fc86..2e332ae 100644 --- a/highlighters/main/test-data/precommand-killing2.zsh +++ b/highlighters/main/test-data/precommand-killing2.zsh @@ -35,5 +35,5 @@ 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 + '9 23 normal "issue #678"' # /does/not/exist ) diff --git a/highlighters/main/test-data/precommand-then-assignment.zsh b/highlighters/main/test-data/precommand-then-assignment.zsh deleted file mode 100644 index f0bb75f..0000000 --- a/highlighters/main/test-data/precommand-then-assignment.zsh +++ /dev/null @@ -1,37 +0,0 @@ -#!/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/highlighters/main/test-data/precommand-uninstalled.zsh b/highlighters/main/test-data/precommand-uninstalled.zsh deleted file mode 100644 index 03c8a75..0000000 --- a/highlighters/main/test-data/precommand-uninstalled.zsh +++ /dev/null @@ -1,44 +0,0 @@ -#!/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/highlighters/main/test-data/redirection-all.zsh b/highlighters/main/test-data/redirection-all.zsh deleted file mode 100644 index e8ffb5d..0000000 --- a/highlighters/main/test-data/redirection-all.zsh +++ /dev/null @@ -1,95 +0,0 @@ -#!/usr/bin/env zsh -# ------------------------------------------------------------------------------------------------- -# Copyright (c) 2024 zsh-syntax-highlighting contributors -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without modification, are permitted -# provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, this list of conditions -# and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright notice, this list of -# conditions and the following disclaimer in the documentation and/or other materials provided -# with the distribution. -# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors -# may be used to endorse or promote products derived from this software without specific prior -# written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR -# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT -# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 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 9<>foo >foo 9>foo >|foo >\!foo >>foo >>|foo >>\!foo <<&9 <&- >&- <&p >&p >&foo &>foo >&|foo >&\!foo &>|foo &>\!foo >>&foo &>>foo >>&|foo >>&\!foo &>>|foo &>>\!foo' - -expected_region_highlight=( - '1 1 builtin' # : - '3 3 redirection' # < - '4 6 default' # foo - '8 9 redirection' # 9< - '10 12 default' # foo - '14 15 redirection' # <> - '16 18 default' # foo - '20 22 redirection' # 9<> - '23 25 default' # foo - '27 27 redirection' # > - '28 30 default' # foo - '32 33 redirection' # 9> - '34 36 default' # foo - '38 39 redirection' # >| - '40 42 default' # foo - '44 45 redirection' # >\! - '46 48 default' # foo - '50 51 redirection' # >> - '52 54 default' # foo - '56 58 redirection' # >>| - '59 61 default' # foo - '63 65 redirection' # >>\! - '66 68 default' # foo - '70 72 redirection' # <<< - '73 75 default' # foo - '77 78 redirection' # <& - '79 79 numeric-fd' # 9 - '81 82 redirection' # >& - '83 83 numeric-fd' # 9 - '85 86 redirection' # <& - '87 87 redirection' # - - '89 90 redirection' # >& - '91 91 redirection' # - - '93 94 redirection' # <& - '95 95 redirection' # p - '97 98 redirection' # >& - '99 99 redirection' # p - '101 102 redirection' # >& - '103 105 default' # foo - '107 108 redirection' # &> - '109 111 default' # foo - '113 115 redirection' # >&| - '116 118 default' # foo - '120 122 redirection' # >&\! - '123 125 default' # foo - '127 129 redirection' # &>| - '130 132 default' # foo - '134 136 redirection' # &>\! - '137 139 default' # foo - '141 143 redirection' # >>& - '144 146 default' # foo - '148 150 redirection' # &>> - '151 153 default' # foo - '155 158 redirection' # >>&| - '159 161 default' # foo - '163 166 redirection' # >>&\! - '167 169 default' # foo - '171 174 redirection' # &>>| - '175 177 default' # foo - '179 182 redirection' # &>>\! - '183 185 default' # foo -) diff --git a/highlighters/main/test-data/redirection-from-param.zsh b/highlighters/main/test-data/redirection-from-param.zsh deleted file mode 100644 index 42ae638..0000000 --- a/highlighters/main/test-data/redirection-from-param.zsh +++ /dev/null @@ -1,40 +0,0 @@ -#!/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/highlighters/main/test-data/redirection-inhibits-elision.zsh b/highlighters/main/test-data/redirection-inhibits-elision.zsh deleted file mode 100644 index c0ca267..0000000 --- a/highlighters/main/test-data/redirection-inhibits-elision.zsh +++ /dev/null @@ -1,38 +0,0 @@ -#!/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/highlighters/main/test-data/redirection-special-cases.zsh b/highlighters/main/test-data/redirection-special-cases.zsh deleted file mode 100644 index 733cf6b..0000000 --- a/highlighters/main/test-data/redirection-special-cases.zsh +++ /dev/null @@ -1,44 +0,0 @@ -#!/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/highlighters/main/test-data/simple-redirection.zsh b/highlighters/main/test-data/simple-redirection.zsh index fb06f19..e8c25e5 100644 --- a/highlighters/main/test-data/simple-redirection.zsh +++ b/highlighters/main/test-data/simple-redirection.zsh @@ -27,7 +27,7 @@ # vim: ft=zsh sw=2 ts=2 et # ------------------------------------------------------------------------------------------------- -BUFFER='id bob | grep java' +BUFFER='ps aux | grep java' expected_region_highlight=( "1 2 command" # ps diff --git a/highlighters/pattern/pattern-highlighter.zsh b/highlighters/pattern/pattern-highlighter.zsh index e0422d0..054eff7 100644 --- a/highlighters/pattern/pattern-highlighter.zsh +++ b/highlighters/pattern/pattern-highlighter.zsh @@ -54,7 +54,7 @@ _zsh_highlight_pattern_highlighter_loop() 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") + region_highlight+=("$((mbegin[2] - 1)) $mend[2] $ZSH_HIGHLIGHT_PATTERNS[$pat]") "$0" "$match[1]" "$pat"; return $? fi } diff --git a/highlighters/regexp/regexp-highlighter.zsh b/highlighters/regexp/regexp-highlighter.zsh index 0d43aac..26f9da3 100644 --- a/highlighters/regexp/regexp-highlighter.zsh +++ b/highlighters/regexp/regexp-highlighter.zsh @@ -55,7 +55,7 @@ _zsh_highlight_regexp_highlighter_loop() 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") + region_highlight+=("$((MBEGIN - 1 + OFFSET)) $((MEND + OFFSET)) $ZSH_HIGHLIGHT_REGEXP[$pat]") buf="$buf[$(($MEND+1)),-1]" OFFSET=$((MEND+OFFSET)); done diff --git a/images/after4-smaller.png b/images/after4-smaller.png deleted file mode 100644 index fc946cf..0000000 Binary files a/images/after4-smaller.png and /dev/null differ diff --git a/images/before4-smaller.png b/images/before4-smaller.png deleted file mode 100644 index 2dbd058..0000000 Binary files a/images/before4-smaller.png and /dev/null differ diff --git a/release.md b/release.md index f8565e8..8df4b9c 100644 --- a/release.md +++ b/release.md @@ -1,12 +1,11 @@ # Release procedure (for developers): -- Ensure every `is-at-least` invocation passes a stable zsh release's version number as the first argument - 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) + (easiest to check travis: https://travis-ci.org/zsh-users/zsh-syntax-highlighting/) - 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; diff --git a/tests/README.md b/tests/README.md index eefeb54..89aef14 100644 --- a/tests/README.md +++ b/tests/README.md @@ -7,9 +7,6 @@ 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"`. @@ -19,26 +16,15 @@ 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. +have different numbers of elements. Tests may set `$expected_mismatch` to an +explanation string (like `$todo`) to avoid this and mark the cardinality check +as todo. **Note**: `$region_highlight` uses the same `"$i $j $style"` syntax but interprets the indexes differently. @@ -104,7 +90,7 @@ 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]: https://testanything.org/ +[TAP]: http://testanything.org/ Performance test diff --git a/tests/edit-failed-tests b/tests/edit-failed-tests index e3a7668..9112c2a 100755 --- a/tests/edit-failed-tests +++ b/tests/edit-failed-tests @@ -32,7 +32,7 @@ type perl sponge >/dev/null || { print -ru2 -- "$0: This script requires perl(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" 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" diff --git a/tests/generate.zsh b/tests/generate.zsh index 5696020..8b16073 100755 --- a/tests/generate.zsh +++ b/tests/generate.zsh @@ -31,9 +31,6 @@ 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]" diff --git a/tests/test-highlighting.zsh b/tests/test-highlighting.zsh index 8b564a8..ab5f2d5 100755 --- a/tests/test-highlighting.zsh +++ b/tests/test-highlighting.zsh @@ -31,9 +31,6 @@ 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=("$@") @@ -98,9 +95,9 @@ ZSH_HIGHLIGHT_HIGHLIGHTERS=($1) typeset_p() { for 1 ; do if [[ ${(tP)1} == *array* ]]; then - print -r -- "$1=( ${(@qqqqP)1} )" + print -r -- "$1=( ${(@q-P)1} )" else - print -r -- "$1=${(qqqqP)1}" + print -r -- "$1=${(q-P)1}" fi done } @@ -108,7 +105,7 @@ typeset_p() { # 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. .)@}" + local s="$@" REPLY="${${s//'#'/♯}//$'\n'/↵}" } @@ -121,44 +118,24 @@ run_test_internal() { 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 BUFFER CURSOR MARK PENDING PREBUFFER REGION_ACTIVE WIDGET REPLY skip_test unsorted=0 local expected_mismatch - local skip_mismatch local -a expected_region_highlight region_highlight - local ARG="$1" - local RETURN="" - () { - setopt localoptions + . "$srcdir"/"$1" - # 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"; return; } - (( $#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)1}: Either 'PREBUFFER' or 'BUFFER' must be declared and non-blank"; return 1; } + # Check the data declares $expected_region_highlight. + (( $+expected_region_highlight == 0 )) && { echo >&2 "Bail out! On ${(qq)1}: 'expected_region_highlight' is not declared."; return 1; } - # 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} - # 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 + # Process the data. + _zsh_highlight if (( unsorted )); then region_highlight=("${(@n)region_highlight}") @@ -167,7 +144,7 @@ run_test_internal() { # 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 + echo "## ${1:t:r}" [[ -n $PREBUFFER ]] && printf '# %s\n' "$(typeset_p PREBUFFER)" [[ -n $BUFFER ]] && printf '# %s\n' "$(typeset_p BUFFER)" @@ -176,14 +153,9 @@ run_test_internal() { 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 + (( $+expected_highlight_zone[4] )) && todo="# TODO $expected_highlight_zone[4]" 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 + print -r -- "not ok $i - unmatched expectation ($exp_start $exp_end $expected_highlight_zone[3])" continue fi local -a highlight_zone; highlight_zone=( ${(z)region_highlight[i]} ) @@ -193,10 +165,9 @@ run_test_internal() { if [[ $start != $exp_start ]] || [[ $end != $exp_end ]] || - [[ ${highlight_zone[3]%,} != ${expected_highlight_zone[3]} ]] # remove the comma that's before the memo field + [[ $highlight_zone[3] != $expected_highlight_zone[3] ]] 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 @@ -208,43 +179,14 @@ run_test_internal() { 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" + if (( $#expected_region_highlight == $#region_highlight )); then + print -r -- "ok $i - cardinality check" "${expected_mismatch:+"# TODO ${(qqq)expected_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/^/# /' - } + 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 - $details" "${expected_mismatch:+"# TODO ${(qqq)expected_mismatch}"}" fi } diff --git a/tests/test-perfs.zsh b/tests/test-perfs.zsh index aa139aa..a032978 100755 --- a/tests/test-perfs.zsh +++ b/tests/test-perfs.zsh @@ -29,9 +29,6 @@ # ------------------------------------------------------------------------------------------------- -# 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." @@ -51,7 +48,6 @@ zmodload zsh/zle } # Load the main script. -typeset -a region_highlight . ${0:h:h}/zsh-syntax-highlighting.zsh # Activate the highlighter. @@ -66,6 +62,8 @@ run_test_internal() { local srcdir="$PWD" builtin cd -q -- "$tests_tempdir" || { echo >&2 "Bail out! cd failed: $?"; return 1 } + echo -n "# ${1:t:r}: " + # Load the data and prepare checking it. PREBUFFER= BUFFER= ; . "$srcdir"/"$1" @@ -73,8 +71,9 @@ run_test_internal() { # 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 + # Measure the time taken by _zsh_highlight. + TIMEFMT="%*Es" + time (BUFFER="$BUFFER" && _zsh_highlight) } run_test() { @@ -94,10 +93,9 @@ run_test() { # 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 +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 $? +done exit 0 diff --git a/tests/test-zprof.zsh b/tests/test-zprof.zsh deleted file mode 100755 index ada1618..0000000 --- a/tests/test-zprof.zsh +++ /dev/null @@ -1,78 +0,0 @@ -#!/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-syntax-highlighting.zsh b/zsh-syntax-highlighting.zsh index 4295c93..fd2a7c6 100644 --- a/zsh-syntax-highlighting.zsh +++ b/zsh-syntax-highlighting.zsh @@ -1,5 +1,5 @@ # ------------------------------------------------------------------------------------------------- -# Copyright (c) 2010-2020 zsh-syntax-highlighting contributors +# 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 @@ -29,8 +29,8 @@ # 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. +# In zsh <= 5.2, `alias -L` emits aliases that begin with a plus sign ('alias -- +foo=42') +# them without a '--' guard, so they don't round trip. # # Hence, we exclude them from unaliasing: builtin unalias -m '[^+]*' @@ -49,58 +49,12 @@ if true; then 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 F has been marked for autoloading -# but is not available in $fpath, then calling this function on F will return False. -# -# See users/21671 https://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 https://www.zsh.org/mla/workers/2017/msg00034.html +# 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 @@ -119,85 +73,29 @@ _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. - if is-at-least 5.9; 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 + region_highlight=() 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[@]}") + 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 + 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 + # This variable cannot be eliminated c.f. workers/42101. + onoff=${${=:-off on}[2-$?]} + zsyh_user_options+=($option $onoff) done fi typeset -r zsyh_user_options @@ -211,8 +109,11 @@ _zsh_highlight() [[ -n ${ZSH_HIGHLIGHT_MAXLENGTH:-} ]] && [[ $#BUFFER -gt $ZSH_HIGHLIGHT_MAXLENGTH ]] && return $ret # Do not highlight if there are pending inputs (copy/paste). - (( KEYS_QUEUED_COUNT > 0 )) && return $ret - (( PENDING > 0 )) && return $ret + [[ $PENDING -gt 0 ]] && return $ret + + # Reset region highlight to build it from scratch + typeset -ga region_highlight + region_highlight=(); { local cache_place @@ -332,7 +233,7 @@ _zsh_highlight_apply_zle_highlight() { else start=$second end=$first fi - region_highlight+=("$start $end $region, memo=zsh-syntax-highlighting") + region_highlight+=("$start $end $region") } @@ -372,7 +273,7 @@ _zsh_highlight_add_highlight() shift 2 for highlight; do if (( $+ZSH_HIGHLIGHT_STYLES[$highlight] )); then - region_highlight+=("$start $end $ZSH_HIGHLIGHT_STYLES[$highlight], memo=zsh-syntax-highlighting") + region_highlight+=("$start $end $ZSH_HIGHLIGHT_STYLES[$highlight]") break fi done @@ -386,117 +287,76 @@ _zsh_highlight_add_highlight() # $1 is name of widget to call _zsh_highlight_call_widget() { - builtin zle "$@" && + 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. -if is-at-least 5.9 && _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 - } +# 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 } - _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)}) - # 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-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) - # 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 - 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_*);; - # 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. - # 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;; - # 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;; - # 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;; - # 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 ${(q-)cur_widget}\` without creating the ${(qq)cur_widget} widget with \`zle -N\` or \`zle -C\`.)" - fi - esac - done - } -fi + # 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 ${(q-)cur_widget}\` without creating the ${(qq)cur_widget} widget with \`zle -N\` or \`zle -C\`.)" + fi + esac + done +} # Load highlighters from directory. #