| @ -1,15 +0,0 @@ | |||
| # Top-most editorconfig file | |||
| root = true | |||
| [*] | |||
| end_of_line = lf | |||
| tab_width = 2 | |||
| indent_size = 2 | |||
| indent_style = space | |||
| [Makefile] | |||
| tab_width = 8 | |||
| indent_size = 8 | |||
| indent_style = tab | |||
| @ -0,0 +1,98 @@ | |||
| # -*- mode: sh; sh-indentation: 4; indent-tabs-mode: nil; sh-basic-offset: 4; -*- | |||
| # Almost all code borrowed from Zshell's _make function | |||
| # | |||
| # Copyright (c) 2018 Sebastian Gniazdowski | |||
| local -a TARGETS | |||
| .make-expandVars() { | |||
| local open close var val front='' rest=$1 | |||
| while [[ $rest == (#b)[^$]#($)* ]]; do | |||
| front=$front${rest[1,$mbegin[1]-1]} | |||
| rest=${rest[$mbegin[1],-1]} | |||
| case $rest[2] in | |||
| ($) # '$$'. may not appear in target and variable's value | |||
| front=$front\$\$ | |||
| rest=${rest[3,-1]} | |||
| continue | |||
| ;; | |||
| (\() # Variable of the form $(foobar) | |||
| open='(' | |||
| close=')' | |||
| ;; | |||
| ({) # ${foobar} | |||
| open='{' | |||
| close='}' | |||
| ;; | |||
| ([[:alpha:]]) # $foobar. This is exactly $(f)oobar. | |||
| open='' | |||
| close='' | |||
| var=$rest[2] | |||
| ;; | |||
| (*) # bad parameter name | |||
| print -- $front$rest | |||
| return 1 | |||
| ;; | |||
| esac | |||
| if [[ -n $open ]]; then | |||
| if [[ $rest == \$$open(#b)([[:alnum:]_]##)(#B)$close* ]]; then | |||
| var=$match | |||
| else # unmatched () or {}, or bad parameter name | |||
| print -- $front$rest | |||
| return 1 | |||
| fi | |||
| fi | |||
| val='' | |||
| if [[ -n ${VAR_ARGS[(i)$var]} ]]; then | |||
| val=${VAR_ARGS[$var]} | |||
| else | |||
| if [[ -n $opt_args[(I)(-e|--environment-overrides)] ]]; then | |||
| if [[ $parameters[$var] == scalar-export* ]]; then | |||
| val=${(P)var} | |||
| elif [[ -n ${VARIABLES[(i)$var]} ]]; then | |||
| val=${VARIABLES[$var]} | |||
| fi | |||
| else | |||
| if [[ -n ${VARIABLES[(i)$var]} ]]; then | |||
| val=${VARIABLES[$var]} | |||
| elif [[ $parameters[$var] == scalar-export* ]]; then | |||
| val=${(P)var} | |||
| fi | |||
| fi | |||
| fi | |||
| rest=${rest//\$$open$var$close/$val} | |||
| done | |||
| print -- ${front}${rest} | |||
| } | |||
| .make-parseMakefile () { | |||
| local input var val target dep TAB=$'\t' tmp IFS= | |||
| while read input | |||
| do | |||
| case "$input " in | |||
| # TARGET: dependencies | |||
| # TARGET1 TARGET2 TARGET3: dependencies | |||
| ([[*?[:alnum:]$][^$TAB:=%]#:[^=]*) | |||
| target=$(.make-expandVars ${input%%:*}) | |||
| TARGETS+=( ${(z)target} ) | |||
| ;; | |||
| esac | |||
| done | |||
| } | |||
| if [[ -z "${FAST_HIGHLIGHT[chroma-make-cache]}" || $(( EPOCHSECONDS - FAST_HIGHLIGHT[chroma-make-cache-born-at] )) -gt 7 ]]; then | |||
| .make-parseMakefile | |||
| FAST_HIGHLIGHT[chroma-make-cache-born-at]="$EPOCHSECONDS" | |||
| FAST_HIGHLIGHT[chroma-make-cache]="${(j:;:)TARGETS}" | |||
| fi | |||
| reply2=( "${(s:;:)FAST_HIGHLIGHT[chroma-make-cache]}" ) | |||
| # vim:ft=zsh:et | |||
| @ -0,0 +1,30 @@ | |||
| # Copyright (c) 2018 Sebastian Gniazdowski | |||
| # | |||
| # $1 - path to the ini file to parse | |||
| # $2 - name of output hash (INI by default) | |||
| # $3 - prefix for keys in the hash (can be empty) | |||
| # | |||
| # Writes to given hash under keys built in following way: ${3}<section>_field. | |||
| # Values are values from ini file. | |||
| local __ini_file="$1" __out_hash="${2:-INI}" __key_prefix="$3" | |||
| local IFS='' __line __cur_section="void" __access_string | |||
| local -a match mbegin mend | |||
| [[ ! -r "$__ini_file" ]] && { builtin print -r "fast-syntax-highlighting: an ini file is unreadable ($__ini_file)"; return 1; } | |||
| while read -r -t 1 __line; do | |||
| if [[ "$__line" = [[:blank:]]#\;* ]]; then | |||
| continue | |||
| elif [[ "$__line" = (#b)[[:blank:]]#\[([^\]]##)\][[:blank:]]# ]]; then | |||
| __cur_section="${match[1]}" | |||
| elif [[ "$__line" = (#b)[[:blank:]]#([^[:blank:]=]##)[[:blank:]]#[=][[:blank:]]#(*) ]]; then | |||
| match[2]="${match[2]%"${match[2]##*[! $'\t']}"}" # remove trailing whitespace | |||
| __access_string="${__out_hash}[${__key_prefix}<$__cur_section>_${match[1]}]" | |||
| : "${(P)__access_string::=${match[2]}}" | |||
| fi | |||
| done < "$__ini_file" | |||
| return 0 | |||
| # vim:ft=zsh:sw=4:sts=4:et | |||
| @ -0,0 +1,37 @@ | |||
| # -*- mode: sh; sh-indentation: 4; indent-tabs-mode: nil; sh-basic-offset: 4; -*- | |||
| # Copyright (c) 2018 Sebastian Gniazdowski | |||
| # | |||
| # FAST_HIGHLIGHT hash serves as container for variables that | |||
| # prevents creating them in global scope. (P) flag is not used, | |||
| # output array is fixed (__lines_list). | |||
| # | |||
| # $1 - the command, e.g. "git remote"; 2>/dev/null redirection is | |||
| # added automatically | |||
| # $2 - FAST_HIGHLIGHT field name, e.g. "chroma-git-branches"; two | |||
| # additional fields will be used, $2-cache, $2-cache-born-at | |||
| # $3 - what to remove from beginning of the lines returned by the | |||
| # command | |||
| # $4 - cache validity time, default 5 (seconds) | |||
| # | |||
| # Output: array __lines_list, with output of the command ran | |||
| # User should not forget to define this array, the below code | |||
| # will only ensure that it's array (can also define a global) | |||
| typeset -ga __lines_list | |||
| local -a __response | |||
| if [[ -z "${FAST_HIGHLIGHT[$2-cache]}" || $(( EPOCHSECONDS - FAST_HIGHLIGHT[$2-cache-born-at] )) -gt ${4:-5} ]]; then | |||
| FAST_HIGHLIGHT[$2-cache-born-at]="$EPOCHSECONDS" | |||
| __response=( ${${(f)"$(command ${(Qz)1#+} 2>/dev/null)"}#${~3}} ) | |||
| [[ "$1" = "+"* ]] && __lines_list+=( "${__response[@]}" ) || __lines_list=( "${__response[@]}" ) | |||
| FAST_HIGHLIGHT[$2-cache]="${(j:;:)__response}" | |||
| else | |||
| # Quoted (s:;:) flag without @ will skip empty elements. It | |||
| # still produces array output, interesingly. All this is for | |||
| # the trailing ";" above, to skip last, empty element. | |||
| [[ "$1" = "+"* ]] && \ | |||
| __lines_list+=( "${(@s:;:)FAST_HIGHLIGHT[$2-cache]}" ) || \ | |||
| __lines_list=( "${(@s:;:)FAST_HIGHLIGHT[$2-cache]}" ) | |||
| fi | |||
| # vim:ft=zsh:et:sw=4 | |||
| @ -0,0 +1,60 @@ | |||
| # -*- mode: sh; sh-indentation: 4; indent-tabs-mode: nil; sh-basic-offset: 4; -*- | |||
| # Copyright (c) 2018 Sebastian Gniazdowski | |||
| # | |||
| # It runs given command, which in general will be a git command, | |||
| # automatically looking at cache first (a field named *-cache, | |||
| # in FAST_HIGHLIGHT), which is valid for 5 seconds, and in case | |||
| # of outdated or not existing cache, runs the command, splitting | |||
| # on new-lines, first checking if PWD is inside git repository. | |||
| # | |||
| # FAST_HIGHLIGHT hash serves as container for variables that | |||
| # prevents creating them in global scope. (P) flag is not used, | |||
| # output array is fixed (__lines_list). | |||
| # | |||
| # $1 - the command, e.g. "git remote"; 2>/dev/null redirection is | |||
| # added automatically | |||
| # $2 - FAST_HIGHLIGHT field name, e.g. "chroma-git-branches"; two | |||
| # additional fields will be used, $2-cache, $2-cache-born-at | |||
| # $3 - what to remove from beginning of the lines returned by the | |||
| # command | |||
| # $4 - cache validity time, default 5 (seconds) | |||
| # | |||
| # Output: array __lines_list, with output of the (git) command ran | |||
| # User should not forget to define this array, the below code | |||
| # will only ensure that it's array (can also define a global) | |||
| typeset -ga __lines_list | |||
| local -a __response | |||
| if [[ $1 == --status ]] { | |||
| integer __status=1 | |||
| shift | |||
| } | |||
| if [[ -z ${FAST_HIGHLIGHT[$2-cache]} || $(( EPOCHSECONDS - FAST_HIGHLIGHT[$2-cache-born-at] )) -gt ${4:-5} ]]; then | |||
| FAST_HIGHLIGHT[$2-cache-born-at]=$EPOCHSECONDS | |||
| if [[ "$(command git rev-parse --is-inside-work-tree 2>/dev/null)" = true ]]; then | |||
| __response=( ${${(f)"$(command ${(Qz)${1#+}} 2>/dev/null)"}#$3} ) | |||
| integer retval=$? | |||
| if (( __status )) { | |||
| __response=( $retval ) | |||
| __lines_list=( $retval ) | |||
| } else { | |||
| [[ "$1" = "+"* ]] && \ | |||
| __lines_list+=( "${__response[@]}" ) || \ | |||
| __lines_list=( "${__response[@]}" ) | |||
| } | |||
| else | |||
| __lines_list=() | |||
| fi | |||
| FAST_HIGHLIGHT[$2-cache]="${(j:;:)__response}" | |||
| else | |||
| # Quoted (s:;:) flag without @ will skip empty elements. It | |||
| # still produces array output, interesingly. All this is for | |||
| # the trailing ";" above, to skip last, empty element. | |||
| [[ "$1" = "+"* ]] && \ | |||
| __lines_list+=( "${(@s:;:)FAST_HIGHLIGHT[$2-cache]}" ) || \ | |||
| __lines_list=( "${(@s:;:)FAST_HIGHLIGHT[$2-cache]}" ) | |||
| fi | |||
| # vim:ft=zsh:et:sw=4 | |||
| @ -0,0 +1,17 @@ | |||
| # $1 - file-descriptor to be read from | |||
| # $2 - name of output variable (default: REPLY) | |||
| local __in_fd=${1:-0} __out_var=${2:-REPLY} | |||
| local -a __tmp | |||
| integer __ret=1 __repeat=10 __tmp_size=0 | |||
| while sysread -s 65535 -i "$__in_fd" '__tmp[__tmp_size + 1]'; do | |||
| (( ( __ret=$? ) == 0 )) && (( ++ __tmp_size )) | |||
| (( __ret == 5 )) && { __ret=0; (( --__repeat == 0 )) && break; } | |||
| done | |||
| : ${(P)__out_var::="${(j::)__tmp}"} | |||
| return __ret | |||
| # vim: ft=zsh:et:sw=4:sts=4 | |||
| @ -1 +0,0 @@ | |||
| .revision-hash export-subst | |||
| @ -0,0 +1,5 @@ | |||
| # These are supported funding model platforms | |||
| github: psprint | |||
| patreon: psprint | |||
| ko_fi: psprint | |||
| @ -1,74 +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.8 | |||
| - 5.7.1 | |||
| - 5.7 | |||
| - 5.6.2 | |||
| - 5.6.1 | |||
| - 5.6 | |||
| - 5.5.1 | |||
| - 5.5 | |||
| - 5.4.2 | |||
| - 5.4.1 | |||
| - 5.4 | |||
| - 5.3.1 | |||
| - 5.3 | |||
| - 5.2 | |||
| - 5.1.1 | |||
| - 5.1 | |||
| - 5.0.8 | |||
| - 5.0.7 | |||
| - 5.0.6 | |||
| - 5.0.5 | |||
| - 5.0.4 | |||
| - 5.0.3 | |||
| - 5.0.2 | |||
| - 5.0.1 | |||
| - 5.0.0 | |||
| - 4.3.17 | |||
| - 4.3.16 | |||
| - 4.3.15 | |||
| - 4.3.14 | |||
| - 4.3.13 | |||
| - 4.3.12 | |||
| - 4.3.11 | |||
| container: | |||
| image: zshusers/zsh:${{ matrix.version }} | |||
| steps: | |||
| - uses: actions/checkout@v2 | |||
| - run: install_packages bsdmainutils make procps | |||
| - run: make test | |||
| notify: | |||
| runs-on: ubuntu-latest | |||
| needs: test | |||
| if: failure() && (github.repository_owner == 'zsh-users') | |||
| steps: | |||
| - | |||
| name: Notify IRC | |||
| uses: Gottox/irc-message-action@v1 | |||
| with: | |||
| server: irc.libera.chat | |||
| channel: '#zsh-syntax-highlighting' | |||
| nickname: zsyh-gh-bot | |||
| message: '${{ github.ref }} failed tests: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}' | |||
| @ -1,3 +1,24 @@ | |||
| *.zwc* | |||
| .pc/ | |||
| docs/all.md | |||
| current_theme.zsh | |||
| secondary_theme.zsh | |||
| theme_overlay.zsh | |||
| *.txt | |||
| test/out.parse | |||
| test/res | |||
| hold/* | |||
| *.zwc | |||
| ### Vim | |||
| # Swap | |||
| [._]*.s[a-v][a-z] | |||
| [._]*.sw[a-p] | |||
| [._]s[a-v][a-z] | |||
| [._]sw[a-p] | |||
| # Session | |||
| Session.vim | |||
| # Temporary | |||
| .netrwhist | |||
| *~ | |||
| # Auto-generated tag files | |||
| tags | |||
| @ -1 +0,0 @@ | |||
| $Format:%H$ | |||
| @ -0,0 +1,13 @@ | |||
| addons: | |||
| apt: | |||
| packages: | |||
| zsh | |||
| install: | |||
| - mkdir .bin | |||
| - curl -L https://github.com/zunit-zsh/zunit/releases/download/v0.8.2/zunit > .bin/zunit | |||
| - curl -L https://raw.githubusercontent.com/molovo/revolver/master/revolver > .bin/revolver | |||
| - curl -L https://raw.githubusercontent.com/molovo/color/master/color.zsh > .bin/color | |||
| before_script: | |||
| - chmod u+x .bin/{color,revolver,zunit} | |||
| - export PATH="$PWD/.bin:$PATH" | |||
| script: zunit | |||
| @ -1 +0,0 @@ | |||
| 0.8.0-alpha2-dev | |||
| @ -0,0 +1,8 @@ | |||
| tap: false | |||
| directories: | |||
| tests: tests | |||
| output: tests/_output | |||
| support: tests/_support | |||
| time_limit: 0 | |||
| fail_fast: false | |||
| allow_risky: false | |||
| @ -0,0 +1,144 @@ | |||
| # News On Updates in F-Sy-H | |||
| **2018-08-09** | |||
| Added ideal string highlighting – FSH now handles any legal quoting and combination of `"`,`'` and `\` when | |||
| highlighting program arguments. See the introduction for an example (item #14). | |||
| **2018-08-02** | |||
| Global aliases are now supported: | |||
|  | |||
| **2018-08-01** | |||
| Hint – how to customize styles when using Zplugin and turbo mode: | |||
| ```zsh | |||
| zplugin ice wait"1" atload"set_fast_theme" | |||
| zplugin light zdharma/fast-syntax-highlighting | |||
| set_fast_theme() { | |||
| FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}paired-bracket]='bg=blue' | |||
| FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}bracket-level-1]='fg=red,bold' | |||
| FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}bracket-level-2]='fg=magenta,bold' | |||
| FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}bracket-level-3]='fg=cyan,bold' | |||
| } | |||
| ``` | |||
| If you have set theme before an update of styles (e.g. recent addition of bracket highlighting) | |||
| then please repeat `fast-theme {theme}` call to regenerate theme files. (**2018-08-09**: FSH | |||
| now has full user-theme support, refer to [appropriate section of README](#customization)). | |||
| **2018-07-30** | |||
| Ideal highlighting of brackets (pairing, etc.) – no quoting can disturb the result: | |||
|  | |||
| `FAST_HIGHLIGHT[use_brackets]=1` to enable this feature (**2018-07-31**: not needed anymore, this highlighting is active by default). | |||
| **2018-07-21** | |||
| Chroma architecture now supports aliases. You can have `alias mygit="git commit"` and when `mygit` | |||
| will be invoked everything will work as expected (Git chroma will be ran). | |||
| **2018-07-11** | |||
| There were problems with Ctrl-C not working when using FSH. After many days I've found a fix | |||
| for this, it's pushed to master. | |||
| Second, asynchronous path checking (useful on e.g. slow network drives, or when there are many files in directory) | |||
| is now optional. Set `FAST_HIGHLIGHT[use_async]=1` to enable it. This saves some users from Zshell crashes | |||
| – there's an unknown bug in Zsh. | |||
| **2018-06-09** | |||
| New chroma functions: `awk`, `make`, `perl`, `vim`. Checkout the [video](https://asciinema.org/a/186234), | |||
| it shows functionality of `awk` – compiling of code and NOT running it. Perl can do this too: | |||
| [video](https://asciinema.org/a/186098). | |||
| **2018-06-06** | |||
| FSH gained a new architecture – "chroma functions". They are similar to "completion functions", i.e. they | |||
| are defined **per-command**, but instead of completing that command, they colorize it. Two chroma exist, | |||
| for `Git` ([video](https://asciinema.org/a/185707), [video](https://asciinema.org/a/185811)) and for `grep` | |||
| ([video](https://asciinema.org/a/185942)). Checkout | |||
| [example chroma](https://github.com/zdharma/fast-syntax-highlighting/blob/master/chroma/-example.ch) if you | |||
| would like to highlight a command. | |||
|  | |||
| **2018-06-01** | |||
| Highlighting of command substitution (i.e. `$(...)`) with alternate theme – two themes at once! It was just white before: | |||
|  | |||
| To select which theme to use for `$(...)` set the key `secondary=` in [theme ini file](https://github.com/zdharma/fast-syntax-highlighting/blob/master/themes/free.ini#L7). | |||
| All shipped themes have this key set (only the `default` theme doesn't use second theme). | |||
| Also added correct highlighting of descriptor-variables passed to `exec`: | |||
|  | |||
| **2018-05-30** | |||
| For-loop is highlighted, it has separate settings in [theme file](https://github.com/zdharma/fast-syntax-highlighting/blob/master/themes/free.ini). | |||
|  | |||
| **2018-05-27** | |||
| Added support for 256-color themes. There are six themes shipped with FSH. The command to | |||
| switch theme is `fast-theme {theme-name}`, it has a completion which lists available themes | |||
| and options. Checkout [asciinema recording](https://asciinema.org/a/183814) that presents | |||
| the themes. | |||
| **2018-05-25** | |||
| Hash holding paths that shouldn't be grepped (globbed) – blacklist for slow disks, mounts, etc.: | |||
| ```zsh | |||
| typeset -gA FAST_BLIST_PATTERNS | |||
| FAST_BLIST_PATTERNS[/mount/nfs1/*]=1 | |||
| FAST_BLIST_PATTERNS[/mount/disk2/*]=1 | |||
| ``` | |||
| **2018-05-23** | |||
| Assign colorizing now spans to variables defined by `typeset`, `export`, `local`, etc.: | |||
|  | |||
| Also, `zcalc` has a separate math mode and specialized highlighting – no more light-red colors because of | |||
| treating `zcalc` like a regular command-line: | |||
|  | |||
| **2018-05-22** | |||
| Array assignments were still boring, so I throwed in bracked colorizing: | |||
|  | |||
| **2018-05-22**<a name="assign-update"></a> | |||
| Assignments are no more one-colour default-white. When used in assignment, highlighted are: | |||
| - variables (outside strings), | |||
| - strings (double-quoted and single-quoted), | |||
| - math-mode (`val=$(( ... ))`). | |||
|  | |||
| **2018-01-06** | |||
| Math mode is highlighted – expressions `(( ... ))` and `$(( ... ))`. Empty variables are colorized as red. | |||
| There are 3 style names (fields of | |||
| [FAST_HIGHLIGHT_STYLES](https://github.com/zdharma/fast-syntax-highlighting/blob/master/fast-highlight#L34) | |||
| hash) for math-variable, number and empty variable (error): `mathvar`, `mathnum`, `matherr`. You can set | |||
| them (like the animation below shows) to change colors. | |||
|  | |||
| @ -0,0 +1,166 @@ | |||
| # Chroma Guide for F-Sy-H | |||
| ## Motivation | |||
| Someone might want to create a detailed highlighting for a **specific program** | |||
| and this document helps achieving this. It explains how chroma functions – the | |||
| code behind such detailed highlighting – are constructed and used. | |||
| ## Keywords | |||
| - `chroma` - a shorthand for `chroma function` – the thing that literally colorizes selected commands, like `git`, `grep`, etc. invocations, see `chroma function` below, | |||
| - `big loop` - main highlighting code, a loop over tokens and at least 2 large structular constructs (big `if` and `case`); | |||
| it is advanced, e.g. parses `case` statements, here-string, it basically constitutes 90% of the F-Sy-H project, | |||
| - `chroma function` - a plugin-function that is called when a specific command occurs (e.g. when user enters `git` at | |||
| command line) suppressing activity of `big loop` (i.e. no standard highlighting unless requested), | |||
| - `token` - result of splitting whole command line (i.e. `$BUFFER`, the Zle variable) into bits called tokens, which are | |||
| words in general, separated by spaces on the command line. | |||
| ## Overview Of Functioning | |||
| 1. Big loop is working – token by token processes command line, changes states (e.g. enters state "inside case | |||
| statement") and in the end decides on color of the token currently processed. | |||
| 2. Big loop occurs a command that has a chroma, e.g. `git`. | |||
| 3. Big loop enters "chroma" state, calls associated chroma function. | |||
| 4. Chroma takes care of "chroma" state, ensures it will be set also for next token. | |||
| 5. "chroma" state is active, so all following tokens are routed to the chroma (in general skipping big-loop, see next items), | |||
| 6. When processing of a single token is complete, the associated chroma returns 0 | |||
| (shell-truth) to request no further processing by the big loop. | |||
| 7. It can also return 1 so that single, current token will be passed into big-loop | |||
| for processing (to do a standard highlighting). | |||
| ## Chroma-Function Arguments | |||
| - `$1` - 0 or 1, denoting if it's the first call to the chroma, or a following one, | |||
| - `$2` - the current token, also accessible by `$\__arg` from the upper scope - | |||
| basically a private copy of `$__arg`; the token can be eg.: "grep", | |||
| - `$3` - a private copy of `$_start_pos`, i.e. the position of the token in the | |||
| command line buffer, used to add region_highlight entry (see man), | |||
| because Zsh colorizes by *ranges* applied onto command line buffer (e.g. | |||
| `from-10 to-13 fg=red`), | |||
| - `$4` - a private copy of `$_end_pos` from the upper scope; denotes where current token | |||
| ends (at which index in the string being the command line). | |||
| So example invocation could look like this: | |||
| ---- | |||
| chroma/-example.ch 1 "grep" "$_start_pos" "$_end_pos" | |||
| ---- | |||
| Big-loop will be doing such calls for the user, after occurring a specific chroma-enabled command (like e.g. `awk`), and then until chroma will detect end of this chroma-enabled command (end of whole invocation, with arguments, etc.; in other words, when e.g. new line or `;`-character occurs, etc.). | |||
| ## Example Chroma-Function | |||
| [source,zsh] | |||
| ---- | |||
| # -*- mode: sh; sh-indentation: 4; indent-tabs-mode: nil; sh-basic-offset: 4; -*- | |||
| # Copyright (c) 2018 Sebastian Gniazdowski | |||
| # | |||
| # Example chroma function. It colorizes first two arguments as `builtin' style, | |||
| # third and following arguments as `globbing' style. First two arguments may | |||
| # be "strings", they will be passed through to normal higlighter (by returning 1). | |||
| # | |||
| # $1 - 0 or 1, denoting if it's first call to the chroma, or following one | |||
| # | |||
| # $2 - like above document says | |||
| # | |||
| # $3 - ... | |||
| # | |||
| # $4 - ... | |||
| # | |||
| # Other tips are: | |||
| # - $CURSOR holds cursor position | |||
| # - $BUFFER holds whole command line buffer | |||
| # - $LBUFFER holds command line buffer that is left from the cursor, i.e. it's a | |||
| # BUFFER substring 1 .. $CURSOR | |||
| # - $RBUFFER is the same as LBUFFER but holds part of BUFFER right to the cursor | |||
| # | |||
| # The function receives $BUFFER but via sequence of tokens, which are shell words, | |||
| # e.g. "a b c" is a shell word, while a b c are 3 shell words. | |||
| # | |||
| # FAST_HIGHLIGHT is a friendly hash array which allows to store strings without | |||
| # creating global parameters (variables). If you need hash, go ahead and use it, | |||
| # declaring first, under some distinct name like: typeset -gA CHROMA_EXPLE_DICT. | |||
| # Remember to reset the hash and others at __first_call == 1, so that you have | |||
| # a fresh state for new command. | |||
| # Keep chroma-takever state meaning: until ;, handle highlighting via chroma. | |||
| # So the below 8192 assignment takes care that next token will be routed to chroma. | |||
| (( next_word = 2 | 8192 )) | |||
| local __first_call="$1" __wrd="$2" __start_pos="$3" __end_pos="$4" | |||
| local __style | |||
| integer __idx1 __idx2 | |||
| (( __first_call )) && { | |||
| # Called for the first time - new command. | |||
| # FAST_HIGHLIGHT is used because it survives between calls, and | |||
| # allows to use a single global hash only, instead of multiple | |||
| # global string variables. | |||
| FAST_HIGHLIGHT[chroma-example-counter]=0 | |||
| # Set style for region_highlight entry. It is used below in | |||
| # '[[ -n "$__style" ]] ...' line, which adds highlight entry, | |||
| # like "10 12 fg=green", through `reply' array. | |||
| # | |||
| # Could check if command `example' exists and set `unknown-token' | |||
| # style instead of `command' | |||
| __style=${FAST_THEME_NAME}command | |||
| } || { | |||
| # Following call, i.e. not the first one | |||
| # Check if chroma should end – test if token is of type | |||
| # "starts new command", if so pass-through – chroma ends | |||
| [[ "$__arg_type" = 3 ]] && return 2 | |||
| if [[ "$__wrd" = -* ]]; then | |||
| # Detected option, add style for it. | |||
| [[ "$__wrd" = --* ]] && __style=${FAST_THEME_NAME}double-hyphen-option || \ | |||
| __style=${FAST_THEME_NAME}single-hyphen-option | |||
| else | |||
| # Count non-option tokens | |||
| (( FAST_HIGHLIGHT[chroma-example-counter] += 1, __idx1 = FAST_HIGHLIGHT[chroma-example-counter] )) | |||
| # Colorize 1..2 as builtin, 3.. as glob | |||
| if (( FAST_HIGHLIGHT[chroma-example-counter] <= 2 )); then | |||
| if [[ "$__wrd" = \"* ]]; then | |||
| # Pass through, fsh main code will do the highlight! | |||
| return 1 | |||
| else | |||
| __style=${FAST_THEME_NAME}builtin | |||
| fi | |||
| else | |||
| __style=${FAST_THEME_NAME}globbing | |||
| fi | |||
| fi | |||
| } | |||
| # Add region_highlight entry (via `reply' array). | |||
| # If 1 will be added to __start_pos, this will highlight "oken". | |||
| # If 1 will be subtracted from __end_pos, this will highlight "toke". | |||
| # $PREBUFFER is for specific situations when users does command \<ENTER> | |||
| # i.e. when multi-line command using backslash is entered. | |||
| # | |||
| # This is a common place of adding such entry, but any above code can do | |||
| # it itself (and it does in other chromas) and skip setting __style to | |||
| # this way disable this code. | |||
| [[ -n "$__style" ]] && (( __start=__start_pos-${#PREBUFFER}, __end=__end_pos-${#PREBUFFER}, __start >= 0 )) && reply+=("$__start $__end ${FAST_HIGHLIGHT_STYLES[$__style]}") | |||
| # We aren't passing-through, do obligatory things ourselves. | |||
| # _start_pos=$_end_pos advainces pointers in command line buffer. | |||
| (( this_word = next_word )) | |||
| _start_pos=$_end_pos | |||
| return 0 | |||
| ---- | |||
| @ -0,0 +1,441 @@ | |||
| <!-- START doctoc generated TOC please keep comment here to allow auto update --> | |||
| <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> | |||
| **Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)* | |||
| - [2018-08-14, received $30](#2018-08-14-received-30) | |||
| - [2018-08-03, received $8](#2018-08-03-received-8) | |||
| - [2018-08-02, received $3 from Patreon](#2018-08-02-received-3-from-patreon) | |||
| - [2018-07-31, received $7](#2018-07-31-received-7) | |||
| - [2018-07-28, received $2](#2018-07-28-received-2) | |||
| - [2018-07-25, received $3](#2018-07-25-received-3) | |||
| - [2018-07-20, received $3](#2018-07-20-received-3) | |||
| - [2018-06-17, received ~$155 (200 CAD)](#2018-06-17-received-155-200-cad) | |||
| - [2018-06-10, received $10](#2018-06-10-received-10) | |||
| - [2018-05-25, received $50](#2018-05-25-received-50) | |||
| <!-- END doctoc generated TOC please keep comment here to allow auto update --> | |||
| Below are reports about what is being done with donations, i.e. which commits | |||
| are created thanks to them, which new features are added, etc. From the money | |||
| I receive I buy myself coffee and organize the time to work on the requested | |||
| features, sometimes many days in a row. | |||
| ## 2018-08-14, received $30 | |||
| * **Project**: **[Zplugin](https://github.com/zdharma/zplugin)** | |||
| * **Goal**: Create a binary Zsh module with one Zplugin optimization and optionally some | |||
| other features. | |||
| * **Status**: The job is done. | |||
| Thanks to this donation I have finally started to code **[binary Zplugin module]( | |||
| https://github.com/zdharma/zplugin#quick-start-module-only)**, which is a big step onward | |||
| in evolution of Zplugin. I've implemented and published the module with 3 complete | |||
| features: 1) `load` optimization, 2) autocompilation of scripts, 3) profiling of script | |||
| load times. | |||
| Commit list: | |||
| ``` | |||
| 2018-08-22 7b96fad doc: mod-install.sh | |||
| 2018-08-22 ba1ba64 module: Update zpmod usage text | |||
| 2018-08-22 b0d72e8 zplugin,*autoload: `module' command, manages new zdharma/zplugin module | |||
| 2018-08-22 706bbb3 Update Zsh source files to latest | |||
| 2018-08-20 b77426f module: source-study builds report with milliseconds without fractions | |||
| 2018-08-20 c3cc09b module: Updated zpmod_usage, i.a. with `source-study' sub-command | |||
| 2018-08-20 6190295 module: Go back to subcommand-interface to `zpmod'; simple option parser | |||
| 2018-08-20 881005f module: Report on sourcing times is shown on `zpmod -S`. Done generation | |||
| 2018-08-19 e5d046a module: Correct conditions on zwc file vs. script file (after stats) | |||
| 2018-08-19 1282c21 module: Duration of sourcing a file is measured and stored into a hash | |||
| 2018-08-18 e080153 module: Overload both `source' and `.' builtins | |||
| 2018-08-18 580efb8 module: Invoke bin_zcompile with -U option (i.e. no alias expansion) | |||
| 2018-08-18 b7d9836 module: Custom `source' ensures script is compiled, compiles if not | |||
| 2018-08-18 1e75a47 module: Code cleanup, vim folding | |||
| 2018-08-18 a4a02f3 module: Finally working `source'/`.' overload (used options translating) | |||
| 2018-08-16 99bba56 module: zpmod_usage gained content | |||
| 2018-08-16 04703cd module: Add the main builtin zpmod with report-append which is working | |||
| 2018-08-16 cd6dc19 module: my_ztrdup_glen, zp_unmetafy_zalloc | |||
| 2018-08-16 6d44e36 module: Cleanup, `source' overload after patron leoj3n restarted module | |||
| ``` | |||
| ## 2018-08-03, received $8 | |||
| * **Project**: **[zdharma/history-search-multi-word](https://github.com/zdharma/history-search-multi-word)** | |||
| * **Goal**: Allow calling `zle reset-prompt` (Zshell feature). | |||
| * **Status**: The job is done. | |||
| A user wanted to be able to call `reset-prompt` Zshell widget without disturbing my project | |||
| `history-search-multi-word`. I've implemented the necessary changes to HSMW. | |||
| Commit list: | |||
| ``` | |||
| 2018-08-04 9745d3d hsmw: reset-prompt-protect zstyle – allow users to run zle reset-prompt | |||
| 2018-08-04 ce48a53 hsmw: More typo-like lackings of % substitution | |||
| 2018-08-04 7e2d79b hsmw: A somewhat typo, missing % substitution | |||
| ``` | |||
| ## 2018-08-02, received $3 from Patreon | |||
| * **Project**: **[zdharma/fast-syntax-highlighting](https://github.com/zdharma/fast-syntax-highlighting)** | |||
| * **Goal**: No goal set up. | |||
| * **Status**: Bug-fixing work. | |||
| I did bug-fixing run on `fast-syntax-highlighting`, spotted many small and sometimes important things to | |||
| improve. Did one bigger thing – added global-aliases functionality. | |||
| Commit list: | |||
| ``` | |||
| 2018-08-02 1e854f5 -autoload.ch: Don't check existence for arguments that are variables | |||
| 2018-08-02 14cdc5e *-string-*: Support highlighter cooperation in presence of $PREBUFFER | |||
| 2018-08-02 2d8f0e4 *-highlight: Correctly highlight $VAR, $~VAR, ${+VAR}, etc. in strings | |||
| 2018-08-02 e3032d9 *-highlight: ${#PREBUFFER} -> __PBUFLEN, equal performance | |||
| 2018-08-02 f0a7121 *-highlight: Make case conditions and brackets highlighter compatible | |||
| 2018-08-02 781f68e *-highlight: Recognize more case-item-end tokens | |||
| 2018-08-02 206c122 *-highlight: Remove unused 4th __arg_type | |||
| 2018-08-02 c6da477 *-string-*: Handle 'abc\' – no slash-quoting here. Full quoting support | |||
| 2018-08-02 52e0176 *-string-*: Fix bug, third level was getting wrong style | |||
| 2018-08-02 5edbfae -git.ch: Support "--message=..." syntax (commit) | |||
| 2018-08-02 669d4b7 -git.ch: Handle "--" argument (stops options) | |||
| 2018-08-02 4fae1f2 -make.ch: Handle make's -f option | |||
| 2018-08-02 3fd32fe -make.ch: Handle make's -C option | |||
| 2018-08-02 31751f5 -make.ch: Recognize options that obtain argument | |||
| 2018-08-02 e480f18 -make.ch: Fix reply-var clash, gained consistency | |||
| 2018-08-02 0e8bc1e Updated README.md | |||
| 2018-08-02 eee0034 images: global-alias.png | |||
| 2018-08-02 00b41ef *-highlight,themes,fast-theme: Support for global aliases #41 | |||
| ``` | |||
| ## 2018-07-31, received $7 | |||
| * **Project**: **[zdharma/fast-syntax-highlighting](https://github.com/zdharma/fast-syntax-highlighting)** | |||
| * **Goal**: Implement ideal brackets highlighting. | |||
| * **Status**: The job is done. | |||
| When a source code is edited e.g. in `Notepad++` or some IDE, then most often brackets are somehow matched to | |||
| each other, so that the programmer can detect mistakes. `Fast-syntax-highlighting` too gained that feature. It | |||
| was done in such a way that FSH cannot make any mistake, colors will perfectly match brackets to each other. | |||
| Commit list: | |||
| ``` | |||
| 2018-07-31 2889860 *-highlight: Correct place to initialize $_FAST_COMPLEX_BRACKETS | |||
| 2018-07-31 2bde2a9 Performance status -15/8/8 | |||
| 2018-07-31 5078261 *-highlight,README: Brackets highlighter active by default | |||
| 2018-07-31 2ee3073 *-highlight,*string-*: Brackets in [[..]], ((..)), etc. handled normally | |||
| 2018-07-31 776b12d plugin.zsh: $_ZSH_HIGHLIGHT_MAIN_CACHE -> $_FAST_MAIN_CACHE | |||
| 2018-07-30 2867712 plugin.zsh: Fix array parameter created without declaring #43 | |||
| 2018-07-30 cbe5fc8 Updated README.md | |||
| 2018-07-30 2bd3291 images: brackets.gif | |||
| 2018-07-30 ef23a96 *-string-*: Bug-fix, correctly use theme styles | |||
| 2018-07-30 9046f82 plugin.zsh: Attach the new brackets highlighter; F_H[use_brackets]=1 | |||
| 2018-07-30 b33a5fd fast-theme: Support 4 new styles (for brackets) | |||
| 2018-07-30 a03f004 themes: Add 4 new styles (brackets) | |||
| 2018-07-30 2448cdc *-string-*: Additional highlight of bracket under cursor; more styles | |||
| 2018-07-30 5e1795e *-string-*: Highlighter for brackets, handles all quotings; detached | |||
| ``` | |||
| ## 2018-07-28, received $2 | |||
| * **Project**: **[zdharma/fast-syntax-highlighting](https://github.com/zdharma/fast-syntax-highlighting)** | |||
| * **Goal**: Distinguish file and directory when highlighting | |||
| * **Status**: The job is done. | |||
| A user requested that when `fast-syntax-highlighting` colorizes the command line it should use different | |||
| styles (e.g. colors) for token that's a *file* and that's a *directory*. It was a reasonable idea and I've | |||
| implemented it. | |||
| Commit list: | |||
| ``` | |||
| 2018-07-28 7f48e04 themes: Extend all themes with new style `path-to-dir' | |||
| 2018-07-28 c7c6a91 fast-theme: Support for new style `path-to-dir' | |||
| 2018-07-28 264676c *-highlight: Differentiate path and to-dir path. New style: path-to-dir | |||
| ``` | |||
| ## 2018-07-25, received $3 | |||
| * **Project**: **[zdharma/zshelldoc](https://github.com/zdharma/zshelldoc)** | |||
| * **Goal**: Implement documenting of used environment variables. | |||
| * **Status**: The job is done. | |||
| Zshelldoc generates code-documentation like Doxygen or Javadoc, etc. User requested a | |||
| new feature: the generated docs should enumerate environment variables used and/or | |||
| exported by every function. Everything went fine and this feature has been implemented. | |||
| Commit list: | |||
| ``` | |||
| 2018-07-26 f63ea25 Updated README.md | |||
| 2018-07-26 3af0cf7 *detect: Get `var' from ${var:-...} and ${...:+${var}} and other subst | |||
| 2018-07-25 2932510 *adoc: Better language in output document (about exported vars) #5 | |||
| 2018-07-25 f858dd8 *adoc: Include (in the output document) data on env-vars used #5 | |||
| 2018-07-25 80e3763 *adoc: Include data on exports (environment) in the output document #5 | |||
| 2018-07-25 ca576e2 *detect: Detect which env-vars are used, store meta-data in data/ #5 | |||
| 2018-07-25 f369dcc *detect: Function `find-variables' reported "$" as a variable, fixed #5 | |||
| 2018-07-25 e243dab *detect: Function `find-variables' #5 | |||
| 2018-07-25 5b34bb1 *transform: Detect exports done by function/script-body, store #5 | |||
| ``` | |||
| ## 2018-07-20, received $3 | |||
| * **Project**: **[zdharma/zshelldoc](https://github.com/zdharma/zshelldoc)** | |||
| * **Goal**: Implement stripping of leading `#` char from functions' descriptions. | |||
| * **Status**: The job is done. | |||
| A user didn't like that functions' descriptions in the JavaDoc-like document (generated with Zshelldoc) all | |||
| contain a leading `#` character. I've added stripping of this character (it is there in the processed source | |||
| code) controlled by a new Zshelldoc option. | |||
| Commit list: | |||
| ``` | |||
| 2018-07-20 172c220 zsd,*adoc,README: Option --scomm to strip "#" from function descriptions | |||
| ``` | |||
| ## 2018-06-17, received ~$155 (200 CAD) | |||
| * **Project**: **[zdharma/fast-syntax-highlighting](https://github.com/zdharma/fast-syntax-highlighting)** | |||
| * **Goal**: No goal set up. | |||
| * **Status**: Done intense research. | |||
| I've created 2 new branches: `Hue-optimization` (33 commits) and `Tidbits-feature` (22 commits). Those were | |||
| branches with architectural changes and extraordinary features. The changes yielded to be too slow, and I had | |||
| to withdraw the merge. Below are fixing and optimizing commits (i.e. the valuable ones) that I've restored | |||
| from the two branches into master. | |||
| Commit list: | |||
| ``` | |||
| 2018-07-21 dab6576 *-highlight: Merge-restore: remove old comments | |||
| 2018-07-21 637521f *-highlight: Merge-restore: a threshold on # of zle .redisplay calls | |||
| 2018-07-21 4163d4d *-highlight: Merge-restore: optimize four $__arg[1] = ... cases | |||
| 2018-07-21 0f01195 *-highlight: Merge-restore: can remove one (Q) dequoting | |||
| 2018-07-21 39a4ec6 *-highlight: Merge-restore: $v = A* is faster than $v[1] = A, tests: | |||
| 2018-07-21 99d6b33 *-highlight: Merge-restore: optimize-out ${var:1} Bash syntax | |||
| 2018-07-21 719c092 *-highlight: Merge-restore: allow $V/cmd, "$V/cmd, "$V/cmd", "${V}/cmd" | |||
| 2018-07-21 026941d *-highlight: Merge-restore: stack pop in single instruction, not two | |||
| 2018-07-21 3467e3d *-highlight: Merge-restore: more reasonable redirection-detecting code | |||
| 2018-07-21 00d25ee *-highlight: Merge-restore: one active_command="$__arg" not needed (?) | |||
| 2018-07-21 1daa6b3 *-highlight: Merge-restore: simplify ; and \n code short-paths | |||
| 2018-07-21 55d65be *-highlight: Merge-restore: proc_buf advancement via patterns (not (i)) | |||
| 2018-07-21 cc55546 *-highlight: Merge-restore: pattern matching to replace (i) flag | |||
| ``` | |||
| ## 2018-06-10, received $10 | |||
| * **Project**: **[zdharma/fast-syntax-highlighting](https://github.com/zdharma/fast-syntax-highlighting)** | |||
| * **Goal**: No goal set up. | |||
| * **Status**: Done intense experimenting. | |||
| I was working on *chromas* – command-specific colorization. I've added `which` and | |||
| `printf` colorization, then added asynchronous path checking (needed on slow network | |||
| drives), then coded experimental `ZPath` feature for chromas, but it couldn't be optimized | |||
| so I had to resign of it. | |||
| Commit list: | |||
| ``` | |||
| 2018-06-12 c4ed1c6 Optimization – the same idea as in previous patch, better method | |||
| 2018-06-12 c36feef Optimization – a) don't index large buffer, b) with negative index | |||
| 2018-06-12 2f03829 Performance status 2298 / 1850 | |||
| 2018-06-12 14f5159 New working feature – ZPath. It requires optimization | |||
| 2018-06-12 e027c40 -which.ch: One of commands can apparently return via stderr (#27) | |||
| 2018-06-11 5b8004f New chroma `ruby', works like chroma `perl', checks syntax via -ce opts | |||
| 2018-06-10 ca2e18b *-highlight: Async path checking has now 8-second cache | |||
| 2018-06-10 e071469 *-highlight: Remove path-exists queue clearing | |||
| 2018-06-10 5a6684c *-highlight: Support for asynchronous path checking | |||
| 2018-06-10 1d7d6f5 New chroma: `printf', highlights special sequences like %s, %20s, etc. | |||
| 2018-06-10 8f59868 -which.ch: Update main comment on purpose of this chroma | |||
| 2018-06-10 5f4ece2 -which.ch: Added `whatis', it has only 1st line if output used | |||
| 2018-06-10 e2d173e -which.ch: Uplift: handle `which' called on a function, /usr/bin/which | |||
| ``` | |||
| ## 2018-05-25, received $50 | |||
| * **Project**: **[zdharma/fast-syntax-highlighting](https://github.com/zdharma/fast-syntax-highlighting)** | |||
| * **Goal**: No goal set up. | |||
| * **Status**: New ideas and features. | |||
| I was working from May, 25 to June, 9 and came up with key ideas and implemented them. First were *themes* | |||
| that were very special because they were using `INI` files instead of some Zsh-script format. Creating themes | |||
| for `fast-syntax-highlighting` is thus easy and fun. Then I came up with *chromas*, command-specific | |||
| highlighting, which redefine how syntax-highlighting for Zshell works – detailed highlighting for e.g. Git | |||
| became possible, the user is informed about e.g. a mistake even before running a command. Overall 178 commits | |||
| in 16 days. | |||
| ``` | |||
| 2018-06-09 3f72e6c -git.ch: `revert' works almost like `checkout', attach `revert' there | |||
| 2018-06-09 b892743 Updated CHROMA_GUIDE.adoc | |||
| 2018-06-09 f05643d Revert "Revert "Updated CHROMA_GUIDE.md"" | |||
| 2018-06-09 729bf7f Revert "Revert "CHROMA_GUIDE: Remove redundant comments, uplift"" | |||
| 2018-06-09 48a4e0c Revert "CHROMA_GUIDE: Remove redundant comments, uplift" | |||
| 2018-06-09 55ede0a Revert "Updated CHROMA_GUIDE.md" | |||
| 2018-06-09 17a28ba New chroma `-docker.ch' that verifies image ID passed to `image rm' | |||
| 2018-06-09 868812a -make.ch,*-make-targets: Check Makefile exists, use 7 second cache, #24 | |||
| 2018-06-09 73df278 -sh.ch: Attach fish, has -c option, though different syntax, let's try | |||
| 2018-06-09 3a73b8e Updated CHROMA_GUIDE.md | |||
| 2018-06-09 29d04c8 CHROMA_GUIDE: Remove redundant comments, uplift | |||
| 2018-06-09 22ce1d8 -sh.ch,*-highlight: Attach to 2 other shells, Zsh and Bash | |||
| 2018-06-09 f54e44f New chroma `-sh.ch', colorizes code passed to `sh' with -c option | |||
| 2018-06-09 f5d2375 CHROMA_GUIDE: Add example code block (rendered broken in mdown) | |||
| 2018-06-09 08f4b28 CHROMA_GUIDE: Switch to asciidoc (rename) | |||
| 2018-06-09 4e03609 CHROMA_GUIDE.md | |||
| 2018-06-09 bbcf2d6 -source.ch: Word "source" should be highlighted as builtin | |||
| 2018-06-09 6739b8b New chroma – `source' to handle . and source builtins | |||
| 2018-06-09 b961211 gitignore: ignore more paths | |||
| 2018-06-09 59d5d09 Updated README.md | |||
| 2018-06-09 f6d4d19 Updated README.md | |||
| 2018-06-09 eb31324 Update README.md (figlet logo) | |||
| 2018-06-09 71dcc5f Performance status 298 / 479 | |||
| 2018-06-09 00c5f8f *-highlight: Add comments | |||
| 2018-06-09 232903c -awk.ch: Highlight `sub' function, not working {, } highlighting | |||
| 2018-06-09 b5241ba *-highlight: Much better $( ) recursion, would say problems-free, maybe | |||
| 2018-06-08 6c69437 *-highlight: Larger buffer (110 -> 250) for $( ) matching | |||
| 2018-06-08 f2b7a96 -awk.ch: Syntax check code passed to awk. Awk is very forgiving, though | |||
| 2018-06-08 c53d8ba -vim.ch: Pass almost everything to big-loop, check if vim exists | |||
| 2018-06-08 7fbf7cd chroma: New chroma `vim', shows last opened files under prompt | |||
| 2018-06-08 06e4570 gitignore: Extend .gitignore | |||
| 2018-06-08 3184ba1 chroma: All chroma functions end chroma mode on e.g. | and similar | |||
| 2018-06-08 070077d *-highlight,-example.ch: Rename arg_type -> __arg_type, use it to end | |||
| 2018-06-08 6c2411e -awk.ch: Use the new theme style `subtle-bg' | |||
| 2018-06-08 9ec8d63 themes: All themes (remaining 4) to support `subtle-bg' style | |||
| 2018-06-08 66e848b fast-theme: New theme key `subtle-bg', default & clean.ini support it | |||
| 2018-06-08 1e794f9 -awk.ch: More keywords highlighted | |||
| 2018-06-08 f3bbaca -awk.ch: Don't highlight keywords when they only contain proper keyword | |||
| 2018-06-08 e4d5283 -awk.ch: Fix mistake (indices), was highlighting 1 extra trailing letter | |||
| 2018-06-08 eebbb19 -awk.ch: Initialize FSH_LIST | |||
| 2018-06-08 8ec24ca *-highlight: Missing math function for awk | |||
| 2018-06-08 d8e423a -awk.ch: Highlight more keywords, via more general code | |||
| 2018-06-07 ee26e66 Commit missing -fast-make-targets | |||
| 2018-06-07 9d4f2b5 New chroma `-awk.ch', colorizes regex characters and a keyword (print) | |||
| 2018-06-07 def5133 -example.ch: Add comments | |||
| 2018-06-07 f31a2d0 New chroma -make.ch, verifies if target is correct | |||
| 2018-06-07 623b8ce -perl.ch: Use correct keys in FAST_HIGHLIGHT hash | |||
| 2018-06-07 090f420 themes: Make all themes provide {in,}correct-subtle styles | |||
| 2018-06-07 2201fb6 New -perl.ch chroma, syntax-checks perl code; 2 new theme entries | |||
| 2018-06-06 4b9598e *-highlight: Fix bug in math highlight – allow variables starting with _ | |||
| 2018-06-06 708afec *-highlight: Fix FAST_BLIST_PATTERNS not expanding path to absolute one | |||
| 2018-06-06 caef05a -example.ch: Update, fix typos, remove unused code | |||
| 2018-06-06 3fb192a Updated README.md | |||
| 2018-06-06 6de0c82 images: git_chroma.png | |||
| 2018-06-06 2852fdd -grep.ch (new): Special highlighting for grep – -grep.ch chroma function | |||
| 2018-06-06 f216785 -example.ch: Added comments | |||
| 2018-06-06 4ab5b36 -example.ch: Add comments | |||
| 2018-06-06 380cd12 -example.ch: Added comments | |||
| 2018-06-06 c8947cc -example.ch: Add comments | |||
| 2018-06-06 f2e273e -example.ch: Add comments | |||
| 2018-06-06 2f3565b plugin.zsh: Fix parse error | |||
| 2018-06-06 4f1a9bd plugin.zsh: Added $fpath handling, to match what README contains | |||
| 2018-06-06 cc9adb5 -example.ch: Change and extend comments | |||
| 2018-06-06 3128fff -git.ch: More intelligent `checkout' highlighting – ref is first | |||
| 2018-06-06 4b6f54b -git.ch: Support for `checkout' subcommand | |||
| 2018-06-06 1930d37 -example.ch: Added example chroma function | |||
| 2018-06-05 d79cd85 -git.ch: Add comments | |||
| 2018-06-05 1473c9e -git.ch: Add comments | |||
| 2018-06-05 0cb1419 -git.ch: Message passed after -m is checked for the 72 chars boundary | |||
| 2018-06-05 3f99944 -git.ch: Architectural uplift of git chroma | |||
| 2018-06-05 e044d13 -git.ch: Single place to add entry to $reply (target: region_highlight) | |||
| 2018-06-05 3a84364 -git.ch: Handle quoted non-option arguments, also partly quoted: "abc | |||
| 2018-06-05 d635bf4 -fast-run-git-command, it handles cache automatically, decimates source | |||
| 2018-06-05 102ea78 -git.ch: Smart handling of `git push', remotes and branches are verified | |||
| 2018-06-04 be88850 Performance status [+] 39+77=116 / -26+24=-2 | |||
| 2018-06-04 0e033f8 Experimental chroma support, currently active only on command `git' | |||
| 2018-06-04 43ae221 *-highlight: Emacs mode-line | |||
| 2018-06-04 938ad29 test: New "-git" parsing option, test results, -git.ch included | |||
| 2018-06-04 e433fbc fast-theme: Explicitly return 0; added Emacs mode-line | |||
| 2018-06-04 66e9b3c *-highlight: Detection of $( ) now doesn't go for $(( )) as a candidate | |||
| 2018-06-04 488a580 chroma: Empty chroma function for `git' | |||
| 2018-06-04 f54d770 *-highlight: Rename $cur_cmd to $active_command | |||
| 2018-06-04 3f24e68 *-highlight: Make sudo and always-block compatible with `case' handling | |||
| 2018-06-02 cd82637 themes: forest.ini to support 3 new `case' styles | |||
| 2018-06-02 e1e993e themes: safari.ini & zdharma.ini to support 3 new `case' styles | |||
| 2018-06-02 2e78a02 themes: clean.ini & default.ini to support 3 new `case' styles | |||
| 2018-06-02 c1c3aab themes: free.ini to support 3 new `case' styles | |||
| 2018-06-02 70a7e18 fast-theme,*-highlight: 3 new styles for `case' higlighting | |||
| 2018-06-02 8d90dc2 *-highlight: Support for `case' highlighting | |||
| 2018-06-02 10d291c *-highlight: Softer state manipulation, less rigid =1 etc. assignments | |||
| 2018-06-02 6159507 *-highlight: Don't highlight closing ) with style `assign' | |||
| 2018-06-02 1fc2450 *-highlight: One complex math command optimization, top of the loop | |||
| 2018-06-02 cc49247 *-highlight: Fix improper state after assignment (command | regular) | |||
| 2018-06-02 02942b8 Updated README.md | |||
| 2018-06-02 5e28259 images: eval_cmp.png | |||
| 2018-06-02 df92fed *-highlight: Fix removal of trailing "/' when recursing in eval | |||
| 2018-06-02 4f61938 Performance status 46 / 44 | |||
| 2018-06-02 a5ade0e *-highlight: Recursive highlighting of eval string argument | |||
| 2018-06-02 e91847b *-highlight: Don't recurse when not at main *-process call | |||
| 2018-06-02 fca8603 *-highlight: Support assignments of arrays when key is taken from array | |||
| 2018-06-02 5d70f01 *-highlight: Math highlighting recognizes ${+VAR} | |||
| 2018-06-02 c48eb0d *-highlight: Math colorizing recognizes variables in braces ${HISTISZE} | |||
| 2018-06-02 53dd85a *-highlight: Allow -- for precommand modifiers command & exec | |||
| 2018-06-02 d9fe110 *-highlight: Detect globbing also when `##' occurs | |||
| 2018-06-02 55c923d Performance status 132 / 66 | |||
| 2018-06-02 3bd8f07 themes: safari.ini to have globbing color specifically selected | |||
| 2018-06-02 2b55260 themes: free.ini to have globbing color specifically selected | |||
| 2018-06-02 494868e themes: clean.ini to have globbing color specifically selected | |||
| 2018-06-01 fca6b3d images: herestring.png #9 | |||
| 2018-06-01 f9842c1 themes: forest.ini to use underline instead of bg color #9 | |||
| 2018-06-01 c25c539 themes: Small tune-up of forest & zdharma themes for here-string #9 | |||
| 2018-06-01 988d504 themes: Rudimentary (all same) configuration of here-string tokens #9 | |||
| 2018-06-01 99842d2 fast-theme,*-highlight: Support for here-string, can use bg color #9 | |||
| 2018-06-01 f739c30 Updated README.md | |||
| 2018-06-01 7fa8451 images: execfd.png execfd_cmp.png | |||
| 2018-06-01 d7384f1 themes: All themes gained `exec-descriptor=` key, now supported by code | |||
| 2018-06-01 d66d140 themes: Fix improper effect of s/red/.../ substitution in clean,forest | |||
| 2018-06-01 f7ee5e2 fast-theme,*-highlight: Support highlighting of {FD} etc. passed to exec | |||
| 2018-06-01 e5c5534 *-highlight: Proper states for precmd (command,exec) option handling | |||
| 2018-06-01 647b198 images: New cmdsubst.png | |||
| 2018-06-01 74bdc4c Updated README.md | |||
| 2018-06-01 86eb15e images: theme.png | |||
| 2018-06-01 5169e82 Updated README.md | |||
| 2018-06-01 1c462b7 Updated README.md | |||
| 2018-06-01 4c21da4 images: cmdsubst.png | |||
| 2018-06-01 b39996e *-highlight: Switch theme to secondary when descending into $() #15 | |||
| 2018-06-01 bf96045 themes: Equip all themes with key `secondary' (an alternate theme) #15 | |||
| 2018-06-01 aa1b112 fast-theme: Generate secondary theme (from key `secondary' in theme) #15 | |||
| 2018-06-01 6dd3bd3 *-highlight: Support for multiple active themes #15 | |||
| 2018-06-01 8a32944 *-highlight: Fix "$() found?" comparison | |||
| 2018-06-01 3651605 *-highlight: Significant change: the parser is called recursively on $() | |||
| 2018-05-31 882d88b test,*-highlight: New -ooo performance test; highlighter takes arguments | |||
| 2018-05-31 5ba1178 *-highlight: Optimization - compute __arg length once | |||
| 2018-05-30 b2a0126 *-highlight: Allow multiple separate options for `command', `exec' (#10) | |||
| 2018-05-30 5804e9a *-highlight: Correct state after option for precommand (#10) | |||
| 2018-05-30 1247b64 *-highlight: Simpler and more accurate option-testing for exec, command (#10) | |||
| 2018-05-30 d87fed4 *-highlight: Correctly highlight options for `command' and `exec' (#10) | |||
| 2018-05-30 8c3e75e *-highlight: Double-hyphen (--) stops option recognition and colorizing | |||
| 2018-05-30 1c5a56c *-highlight: Support ${VAR} at command position (not only $VAR) | |||
| 2018-05-30 f19d761 Updated README.md | |||
| 2018-05-30 4a27351 images: for-loop | |||
| 2018-05-30 4d650de themes: zdharma.ini to support for-loop | |||
| 2018-05-30 45cafbc themes: safari.ini to support for-loop | |||
| 2018-05-30 8bb9ee0 themes: free.ini to support for-loop | |||
| 2018-05-30 f25a059 themes: forest.ini to support for-loop | |||
| 2018-05-29 093d79e themes: default.ini to support for-loop | |||
| 2018-05-29 446cb7b clean.ini,fast-theme: Clean-theme & theme subsystem to support for-loop | |||
| 2018-05-29 1bb701f *-highlight: Move $variable highlighting from case to if-block | |||
| 2018-05-29 b8413e9 *-highlight: For-loop highlighting, working, needs few upgrades | |||
| 2018-05-28 7bec6e5 *-highlight: Three more simple vs. complex math operation optimizations | |||
| 2018-05-27 baae683 *-highlight: Optimise complex math command into single one with & and ~ | |||
| 2018-05-27 2dc3103 *-highlight: Optimise complex math command into single one with & and ~ | |||
| 2018-05-27 291f905 _fast-theme: Update -t/--test description | |||
| 2018-05-27 ec305f6 fast-theme: Help message treats about -t/--test | |||
| 2018-05-27 0e1d19a Updated README.md | |||
| 2018-05-27 5c3c911 Updated README.md | |||
| 2018-05-26 76af248 themes: A fix for zdharma theme, 61 -> 63, a lighter color for builtins | |||
| 2018-05-26 8eca0f2 *fast-theme: Ability to test theme after setting it (-t/--test) | |||
| 2018-05-26 d3a7922 *-highlight: Fix in_array_assignment setting when closing ) found | |||
| 2018-05-26 796c482 *-highlight: Make parameters' names exotic blank-var detection to work | |||
| 2018-05-26 ae3913f _fast-theme: Complete theme names | |||
| 2018-05-26 d212945 *-highlight,plugin.zsh,default.ini: Uplift of fg=112-fix code | |||
| 2018-05-26 ee56f65 *-highlight,plugin.zsh: Final fix for fg=112 assignment – use zstyle | |||
| 2018-05-26 391f5a4 fast-theme: Set `theme' zstyle in `:plugin:fast...' to given theme | |||
| 2018-05-26 e0dc086 plugin.zsh: Fix the fg=112 assignment done for `variable' style | |||
| 2018-05-26 17c9286 Updated README.md | |||
| 2018-05-26 4774c1c fast-theme: Add completion for this function | |||
| 2018-05-26 d971f39 fast-theme: Detect lack of theme name in arguments | |||
| 2018-05-26 74f0d4d fast-theme: Use standard option parsing (zparseopts) and typical options | |||
| 2018-05-26 d9c6180 New theme: `forest' | |||
| 2018-05-26 419c156 New theme: `zdharma' | |||
| 2018-05-26 a7735df gitignore | |||
| 2018-05-26 99db69a New theme: `free' | |||
| 2018-05-26 73619ff New theme: `clean' | |||
| 2018-05-25 52307fb Theme support, 1 extra theme – `safari' | |||
| 2018-05-25 41df55b *-highlight: (k) subscript flag is sufficient, no need for (K) | |||
| 2018-05-25 cb21c05 Updated README.md | |||
| 2018-05-25 a580cff *-highlight: FAST_BLIST_PATTERNS | |||
| ``` | |||
| @ -1,99 +0,0 @@ | |||
| Hacking on zsh-syntax-highlighting itself | |||
| ========================================= | |||
| This document includes information for people working on z-sy-h itself: on the | |||
| core driver (`zsh-syntax-highlighting.zsh`), on the highlighters in the | |||
| distribution, and on the test suite. It does not target third-party | |||
| highlighter authors (although they may find it an interesting read). | |||
| The `main` highlighter | |||
| ---------------------- | |||
| The following function `pz` is useful when working on the `main` highlighting: | |||
| ```zsh | |||
| pq() { | |||
| (( $#argv )) || return 0 | |||
| print -r -l -- ${(qqqq)argv} | |||
| } | |||
| pz() { | |||
| local arg | |||
| for arg; do | |||
| pq ${(z)arg} | |||
| done | |||
| } | |||
| ``` | |||
| It prints, for each argument, its token breakdown, similar to how the main | |||
| loop of the `main` highlighter sees it. | |||
| Testing the `brackets` highlighter | |||
| ---------------------------------- | |||
| Since the test harness empties `ZSH_HIGHLIGHT_STYLES` and the `brackets` | |||
| highlighter interrogates `ZSH_HIGHLIGHT_STYLES` to determine how to highlight, | |||
| tests must set the `bracket-level-#` keys themselves. For example: | |||
| ```zsh | |||
| ZSH_HIGHLIGHT_STYLES[bracket-level-1]= | |||
| ZSH_HIGHLIGHT_STYLES[bracket-level-2]= | |||
| BUFFER='echo ({x})' | |||
| expected_region_highlight=( | |||
| "6 6 bracket-level-1" # ( | |||
| "7 7 bracket-level-2" # { | |||
| "9 9 bracket-level-2" # } | |||
| "10 10 bracket-level-1" # ) | |||
| ) | |||
| ``` | |||
| Testing the `pattern` and `regexp` highlighters | |||
| ----------------------------------------------- | |||
| Because the `pattern` and `regexp` highlighters modifies `region_highlight` | |||
| directly instead of using `_zsh_highlight_add_highlight`, the test harness | |||
| cannot get the `ZSH_HIGHLIGHT_STYLES` keys. Therefore, when writing tests, use | |||
| the style itself as third word (cf. the | |||
| [documentation for `expected_region_highlight`](docs/highlighters.md)). For example: | |||
| ```zsh | |||
| ZSH_HIGHLIGHT_PATTERNS+=('rm -rf *' 'fg=white,bold,bg=red') | |||
| BUFFER='rm -rf /' | |||
| expected_region_highlight=( | |||
| "1 8 fg=white,bold,bg=red" # rm -rf / | |||
| ) | |||
| ``` | |||
| Memos and commas | |||
| ---------------- | |||
| We append to `region_highlight` as follows: | |||
| ```zsh | |||
| region_highlight+=("$start $end $spec, memo=zsh-syntax-highlighting") | |||
| ``` | |||
| That comma is required to cause zsh 5.8 and older to ignore the memo without | |||
| ignoring the `$spec`. It's a hack, but given that no further 5.8.x patch | |||
| releases are planned, it's been deemed acceptable. See issue #418 and the | |||
| cross-referenced issues. | |||
| Miscellany | |||
| ---------- | |||
| If you work on the driver (`zsh-syntax-highlighting.zsh`), you may find the following zstyle useful: | |||
| ```zsh | |||
| zstyle ':completion:*:*:*:*:globbed-files' ignored-patterns {'*/',}zsh-syntax-highlighting.plugin.zsh | |||
| ``` | |||
| IRC channel | |||
| ----------- | |||
| We're on #zsh-syntax-highlighting on Libera.Chat. | |||
| @ -1,131 +0,0 @@ | |||
| How to install | |||
| -------------- | |||
| ### Using packages | |||
| * Arch Linux: [community/zsh-syntax-highlighting][arch-package] / [AUR/zsh-syntax-highlighting-git][AUR-package] | |||
| * Debian: `zsh-syntax-highlighting` package [in `stretch`][debian-package] (or in [OBS repository][obs-repository]) | |||
| * Fedora: [zsh-syntax-highlighting package][fedora-package-alt] in Fedora 24+ (or in [OBS repository][obs-repository]) | |||
| * FreeBSD: `pkg install zsh-syntax-highlighting` (port name: [`shells/zsh-syntax-highlighting`][freebsd-port]) | |||
| * Gentoo: [app-shells/zsh-syntax-highlighting][gentoo-repository] | |||
| * Mac OS X / Homebrew: [brew install zsh-syntax-highlighting][brew-package] | |||
| * NetBSD: `pkg_add zsh-syntax-highlighting` (port name: [`shells/zsh-syntax-highlighting`][netbsd-port]) | |||
| * OpenBSD: `pkg_add zsh-syntax-highlighting` (port name: [`shells/zsh-syntax-highlighting`][openbsd-port]) | |||
| * openSUSE / SLE: `zsh-syntax-highlighting` package in [OBS repository][obs-repository] | |||
| * RHEL / CentOS / Scientific Linux: `zsh-syntax-highlighting` package in [OBS repository][obs-repository] | |||
| * Ubuntu: `zsh-syntax-highlighting` package [in Xenial][ubuntu-package] (or in [OBS repository][obs-repository]) | |||
| * Void Linux: `zsh-syntax-highlighting package` [in XBPS][void-package] | |||
| [arch-package]: https://www.archlinux.org/packages/zsh-syntax-highlighting | |||
| [AUR-package]: https://aur.archlinux.org/packages/zsh-syntax-highlighting-git | |||
| [brew-package]: https://github.com/Homebrew/homebrew-core/blob/master/Formula/zsh-syntax-highlighting.rb | |||
| [debian-package]: https://packages.debian.org/zsh-syntax-highlighting | |||
| [fedora-package]: https://apps.fedoraproject.org/packages/zsh-syntax-highlighting | |||
| [fedora-package-alt]: https://bodhi.fedoraproject.org/updates/?packages=zsh-syntax-highlighting | |||
| [freebsd-port]: http://www.freshports.org/textproc/zsh-syntax-highlighting/ | |||
| [gentoo-repository]: https://packages.gentoo.org/packages/app-shells/zsh-syntax-highlighting | |||
| [netbsd-port]: http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/shells/zsh-syntax-highlighting/ | |||
| [obs-repository]: https://software.opensuse.org/download.html?project=shells%3Azsh-users%3Azsh-syntax-highlighting&package=zsh-syntax-highlighting | |||
| [openbsd-port]: https://cvsweb.openbsd.org/ports/shells/zsh-syntax-highlighting/ | |||
| [ubuntu-package]: https://launchpad.net/ubuntu/+source/zsh-syntax-highlighting | |||
| [void-package]: https://github.com/void-linux/void-packages/tree/master/srcpkgs/zsh-syntax-highlighting | |||
| See also [repology's cross-distro index](https://repology.org/metapackage/zsh-syntax-highlighting/versions) | |||
| ### In your ~/.zshrc | |||
| Simply clone this repository and source the script: | |||
| ```zsh | |||
| git clone https://github.com/zsh-users/zsh-syntax-highlighting.git | |||
| echo "source ${(q-)PWD}/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ${ZDOTDIR:-$HOME}/.zshrc | |||
| ``` | |||
| Then, enable syntax highlighting in the current interactive shell: | |||
| ```zsh | |||
| source ./zsh-syntax-highlighting/zsh-syntax-highlighting.zsh | |||
| ``` | |||
| If `git` is not installed, download and extract a snapshot of the latest | |||
| development tree from: | |||
| ``` | |||
| https://github.com/zsh-users/zsh-syntax-highlighting/archive/master.tar.gz | |||
| ``` | |||
| Note the `source` command must be **at the end** of `~/.zshrc`. | |||
| ### With a plugin manager | |||
| Note that `zsh-syntax-highlighting` must be the last plugin sourced. | |||
| The zsh-syntax-highlighting authors recommend manual installation over the use | |||
| of a framework or plugin manager. | |||
| This list is incomplete as there are too many | |||
| [frameworks / plugin managers][framework-list] to list them all here. | |||
| [framework-list]: https://github.com/unixorn/awesome-zsh-plugins#frameworks | |||
| #### [Antigen](https://github.com/zsh-users/antigen) | |||
| Add `antigen bundle zsh-users/zsh-syntax-highlighting` as the last bundle in | |||
| your `.zshrc`. | |||
| #### [Oh-my-zsh](https://github.com/robbyrussell/oh-my-zsh) | |||
| 1. Clone this repository in oh-my-zsh's plugins directory: | |||
| ```zsh | |||
| git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting | |||
| ``` | |||
| 2. Activate the plugin in `~/.zshrc`: | |||
| ```zsh | |||
| plugins=( [plugins...] zsh-syntax-highlighting) | |||
| ``` | |||
| 3. Restart zsh (such as by opening a new instance of your terminal emulator). | |||
| #### [Prezto](https://github.com/sorin-ionescu/prezto) | |||
| Zsh-syntax-highlighting is included with Prezto. See the | |||
| [Prezto documentation][prezto-docs] to enable and configure highlighters. | |||
| [prezto-docs]: https://github.com/sorin-ionescu/prezto/tree/master/modules/syntax-highlighting | |||
| #### [zgen](https://github.com/tarjoilija/zgen) | |||
| Add `zgen load zsh-users/zsh-syntax-highlighting` to the end of your `.zshrc`. | |||
| #### [zplug](https://github.com/zplug/zplug) | |||
| Add `zplug "zsh-users/zsh-syntax-highlighting", defer:2` to your `.zshrc`. | |||
| #### [zplugin](https://github.com/psprint/zplugin) | |||
| Add `zplugin load zsh-users/zsh-syntax-highlighting` to the end of your | |||
| `.zshrc`. | |||
| ### System-wide installation | |||
| Any of the above methods is suitable for a single-user installation, | |||
| which requires no special privileges. If, however, you desire to install | |||
| zsh-syntax-highlighting system-wide, you may do so by running | |||
| ```zsh | |||
| make install | |||
| ``` | |||
| and directing your users to add | |||
| ```zsh | |||
| source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh | |||
| ``` | |||
| to their `.zshrc`s. | |||
| @ -1,64 +0,0 @@ | |||
| NAME=zsh-syntax-highlighting | |||
| INSTALL?=install -c | |||
| PREFIX?=/usr/local | |||
| SHARE_DIR?=$(DESTDIR)$(PREFIX)/share/$(NAME) | |||
| DOC_DIR?=$(DESTDIR)$(PREFIX)/share/doc/$(NAME) | |||
| ZSH?=zsh # zsh binary to run tests with | |||
| all: | |||
| cd docs && \ | |||
| cp highlighters.md all.md && \ | |||
| printf '\n\nIndividual highlighters documentation\n=====================================' >> all.md && \ | |||
| for doc in highlighters/*.md; do printf '\n\n'; cat "$$doc"; done >> all.md | |||
| install: all | |||
| $(INSTALL) -d $(SHARE_DIR) | |||
| $(INSTALL) -d $(DOC_DIR) | |||
| cp .version zsh-syntax-highlighting.zsh $(SHARE_DIR) | |||
| cp COPYING.md README.md changelog.md $(DOC_DIR) | |||
| sed -e '1s/ .*//' -e '/^\[build-status-[a-z]*\]: /d' < README.md > $(DOC_DIR)/README.md | |||
| if [ x"true" = x"`git rev-parse --is-inside-work-tree 2>/dev/null`" ]; then \ | |||
| git rev-parse HEAD; \ | |||
| else \ | |||
| cat .revision-hash; \ | |||
| fi > $(SHARE_DIR)/.revision-hash | |||
| : | |||
| # The [ -e ] check below is to because sh evaluates this with (the moral | |||
| # equivalent of) NONOMATCH in effect, and highlighters/*.zsh has no matches. | |||
| for dirname in highlighters highlighters/*/ ; do \ | |||
| $(INSTALL) -d $(SHARE_DIR)/"$$dirname"; \ | |||
| for fname in "$$dirname"/*.zsh ; do [ -e "$$fname" ] && cp "$$fname" $(SHARE_DIR)"/$$dirname"; done; \ | |||
| done | |||
| cp -R docs/* $(DOC_DIR) | |||
| clean: | |||
| rm -f docs/all.md | |||
| test: | |||
| @$(ZSH) -fc 'echo ZSH_PATCHLEVEL=$$ZSH_PATCHLEVEL' | |||
| @result=0; \ | |||
| for test in highlighters/*; do \ | |||
| if [ -d $$test/test-data ]; then \ | |||
| echo "Running test $${test##*/}"; \ | |||
| env -i QUIET=$$QUIET $${TERM:+"TERM=$$TERM"} $(ZSH) -f tests/test-highlighting.zsh "$${test##*/}"; \ | |||
| : $$(( result |= $$? )); \ | |||
| fi \ | |||
| done; \ | |||
| exit $$result | |||
| quiet-test: | |||
| $(MAKE) test QUIET=y | |||
| perf: | |||
| @result=0; \ | |||
| for test in highlighters/*; do \ | |||
| if [ -d $$test/test-data ]; then \ | |||
| echo "Running test $${test##*/}"; \ | |||
| $(ZSH) -f tests/test-perfs.zsh "$${test##*/}"; \ | |||
| : $$(( result |= $$? )); \ | |||
| fi \ | |||
| done; \ | |||
| exit $$result | |||
| .PHONY: all install clean test perf | |||
| @ -1,97 +1,290 @@ | |||
| zsh-syntax-highlighting [![Build Status][build-status-image]][build-status] | |||
| ======================= | |||
| [](https://www.paypal.me/ZdharmaInitiative) | |||
| [](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=D54B3S7C6HGME) | |||
| [](https://www.patreon.com/psprint) | |||
| <br/>New: You can request a feature when donating, even fancy or advanced ones get implemented this way. [There are | |||
| reports](DONATIONS.md) about what is being done with the money received. | |||
| **[Fish shell][fish]-like syntax highlighting for [Zsh][zsh].** | |||
| # Fast Syntax Highlighting (F-Sy-H) | |||
| *Requirements: zsh 4.3.11+.* | |||
| Feature rich syntax highlighting for Zsh. | |||
| [fish]: https://fishshell.com/ | |||
| [zsh]: https://www.zsh.org/ | |||
| <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> | |||
| <img | |||
| src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/highlight-much.png" | |||
| alt="image could not be loaded" | |||
| style="color:red;background-color:black;font-weight:bold" | |||
| /> | |||
| </div> | |||
| This package provides syntax highlighting for the shell zsh. It enables | |||
| highlighting of commands whilst they are typed at a zsh prompt into an | |||
| interactive terminal. This helps in reviewing commands before running | |||
| them, particularly in catching syntax errors. | |||
| ### Table of Contents | |||
| Some examples: | |||
| - [News](#news) | |||
| - [Installation](#installation) | |||
| - [Features](#features) | |||
| - [Performance](#performance) | |||
| - [IRC Channel](#irc-channel) | |||
| Before: [](images/before1.png) | |||
| <br/> | |||
| After:  [](images/after1.png) | |||
| ### Other Contents | |||
| - [License](https://github.com/zdharma/fast-syntax-highlighting/blob/master/LICENSE) | |||
| - [Changelog](https://github.com/zdharma/fast-syntax-highlighting/blob/master/CHANGELOG.md) | |||
| - [Theme Guide](https://github.com/zdharma/fast-syntax-highlighting/blob/master/THEME_GUIDE.md) | |||
| - [Chroma Guide](https://github.com/zdharma/fast-syntax-highlighting/blob/master/CHROMA_GUIDE.adoc) | |||
| Before: [](images/before2.png) | |||
| <br/> | |||
| After:  [](images/after2.png) | |||
| # News | |||
| Before: [](images/before3.png) | |||
| <br/> | |||
| After:  [](images/after3.png) | |||
| * 15-06-2019 | |||
| - A new architecture for defining the highlighting for **specific commands**: it now | |||
| uses **abstract definitions** instead of **top-down, regular code**. The first effect | |||
| is the highlighting for the `git` command it is now **maximally faithful**, it | |||
| follows the `git` command almost completely. | |||
| [Screencast](https://asciinema.org/a/253411) | |||
| Before: [](images/before4-smaller.png) | |||
| <br/> | |||
| After:  [](images/after4-smaller.png) | |||
| # Installation | |||
| ### Manual | |||
| Clone the Repository. | |||
| How to install | |||
| -------------- | |||
| ```zsh | |||
| git clone https://github.com/zdharma/fast-syntax-highlighting ~/path/to/fsh | |||
| ``` | |||
| See [INSTALL.md](INSTALL.md). | |||
| And add the following to your `zshrc` file. | |||
| ```zsh | |||
| source ~/path/to/fsh/fast-syntax-highlighting.plugin.zsh | |||
| ``` | |||
| ### Zinit | |||
| FAQ | |||
| --- | |||
| Add the following to your `zshrc` file. | |||
| ### Why must `zsh-syntax-highlighting.zsh` be sourced at the end of the `.zshrc` file? | |||
| ```zsh | |||
| zinit light zdharma/fast-syntax-highlighting | |||
| ``` | |||
| 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. | |||
| Here's an example of how to load the plugin together with a few other popular | |||
| ones with the use of | |||
| [Turbo](https://zdharma.org/zinit/wiki/INTRODUCTION/#turbo_mode_zsh_62_53), | |||
| i.e.: speeding up the Zsh startup by loading the plugin right after the first | |||
| prompt, in background: | |||
| In zsh 5.2 and older, | |||
| `zsh-syntax-highlighting.zsh` hooks into ZLE by wrapping ZLE widgets. It must | |||
| be sourced after all custom widgets have been created (i.e., after all `zle -N` | |||
| calls and after running `compinit`) in order to be able to wrap all of them. | |||
| Widgets created after z-sy-h is sourced will work, but will not update the | |||
| syntax highlighting. | |||
| ```zsh | |||
| zinit wait lucid for \ | |||
| atinit"ZINIT[COMPINIT_OPTS]=-C; zicompinit; zicdreplay" \ | |||
| zdharma/fast-syntax-highlighting \ | |||
| blockf \ | |||
| zsh-users/zsh-completions \ | |||
| atload"!_zsh_autosuggest_start" \ | |||
| zsh-users/zsh-autosuggestions | |||
| ``` | |||
| 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. | |||
| ### Antigen | |||
| ### Does syntax highlighting work during incremental history search? | |||
| Add the following to your `zshrc` file. | |||
| Highlighting the command line during an incremental history search (by default bound to | |||
| to <kbd>Ctrl+R</kbd> in zsh's emacs keymap) requires zsh 5.4 or newer. | |||
| ```zsh | |||
| antigen bundle zdharma/fast-syntax-highlighting | |||
| ``` | |||
| Under zsh versions older than 5.4, the zsh-default [underlining][zshzle-Character-Highlighting] | |||
| of the matched portion of the buffer remains available, but zsh-syntax-highlighting's | |||
| additional highlighting is unavailable. (Those versions of zsh do not provide | |||
| enough information to allow computing the highlighting correctly.) | |||
| ### Zgen | |||
| See issues [#288][i288] and [#415][i415] for details. | |||
| Add the following to your `.zshrc` file in the same place you're doing | |||
| your other `zgen load` calls in. | |||
| [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 | |||
| ```zsh | |||
| zgen load zdharma/fast-syntax-highlighting | |||
| ``` | |||
| ### How are new releases announced? | |||
| There is currently no "push" announcements channel. However, the following | |||
| alternatives exist: | |||
| ### Oh-My-Zsh | |||
| - GitHub's RSS feed of releases: https://github.com/zsh-users/zsh-syntax-highlighting/releases.atom | |||
| - An anitya entry: https://release-monitoring.org/project/7552/ | |||
| Clone the Repository. | |||
| ```zsh | |||
| git clone https://github.com/zdharma/fast-syntax-highlighting.git \ | |||
| ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/fast-syntax-highlighting | |||
| ``` | |||
| How to tweak | |||
| ------------ | |||
| And add `fast-syntax-highlighting` to your plugin list. | |||
| Syntax highlighting is done by pluggable highlighter scripts. See the | |||
| [documentation on highlighters](docs/highlighters.md) for details and | |||
| configuration settings. | |||
| # Features | |||
| [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 | |||
| ### Themes | |||
| Switch themes via `fast-theme {theme-name}`. | |||
| <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> | |||
| <img | |||
| src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/theme.png" | |||
| alt="image could not be loaded" | |||
| style="color:red;background-color:black;font-weight:bold" | |||
| /> | |||
| </div> | |||
| Run `fast-theme -t {theme-name}` option to obtain the snippet above. | |||
| Run `fast-theme -l` to list available themes. | |||
| ### Variables | |||
| Comparing to the project `zsh-users/zsh-syntax-highlighting` (the upper line): | |||
| <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> | |||
| <img | |||
| src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/parameter.png" | |||
| alt="image could not be loaded" | |||
| style="color:red;background-color:black;font-weight:bold" | |||
| /> | |||
| </div> | |||
| <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> | |||
| <img | |||
| src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/in_string.png" | |||
| alt="image could not be loaded" | |||
| style="color:red;background-color:black;font-weight:bold" | |||
| /> | |||
| </div> | |||
| ### Brackets | |||
| <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> | |||
| <img | |||
| src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/brackets.gif" | |||
| alt="image could not be loaded" | |||
| style="color:red;background-color:black;font-weight:bold" | |||
| /> | |||
| </div> | |||
| ### Conditions | |||
| Comparing to the project `zsh-users/zsh-syntax-highlighting` (the upper line): | |||
| <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> | |||
| <img | |||
| src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/cplx_cond.png" | |||
| alt="image could not be loaded" | |||
| style="color:red;background-color:black;font-weight:bold" | |||
| /> | |||
| </div> | |||
| ### Strings | |||
| Exact highlighting that recognizes quotings. | |||
| <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> | |||
| <img | |||
| src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/ideal-string.png" | |||
| alt="image could not be loaded" | |||
| style="color:red;background-color:black;font-weight:bold" | |||
| /> | |||
| </div> | |||
| ### here-strings | |||
| <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> | |||
| <img | |||
| src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/herestring.png" | |||
| alt="image could not be loaded" | |||
| style="color:red;background-color:black;font-weight:bold" | |||
| /> | |||
| </div> | |||
| ### `exec` descriptor-variables | |||
| Comparing to the project `zsh-users/zsh-syntax-highlighting` (the upper line): | |||
| <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> | |||
| <img | |||
| src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/execfd_cmp.png" | |||
| alt="image could not be loaded" | |||
| style="color:red;background-color:black;font-weight:bold" | |||
| /> | |||
| </div> | |||
| ### for-loops and alternate syntax (brace `{`/`}` blocks) | |||
| <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> | |||
| <img | |||
| src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/for-loop-cmp.png" | |||
| alt="image could not be loaded" | |||
| style="color:red;background-color:black;font-weight:bold" | |||
| /> | |||
| </div> | |||
| ### Function definitions | |||
| Comparing to the project `zsh-users/zsh-syntax-highlighting` (the upper 2 lines): | |||
| <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> | |||
| <img | |||
| src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/function.png" | |||
| alt="image could not be loaded" | |||
| style="color:red;background-color:black;font-weight:bold" | |||
| /> | |||
| </div> | |||
| ### Recursive `eval` and `$( )` highlighting | |||
| Comparing to the project `zsh-users/zsh-syntax-highlighting` (the upper line): | |||
| <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> | |||
| <img | |||
| src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/eval_cmp.png" | |||
| alt="image could not be loaded" | |||
| style="color:red;background-color:black;font-weight:bold" | |||
| /> | |||
| </div> | |||
| ### Chroma functions | |||
| Highlighting that is specific for a given command. | |||
| <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> | |||
| <img | |||
| src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/git_chroma.png" | |||
| alt="image could not be loaded" | |||
| style="color:red;background-color:black;font-weight:bold" | |||
| /> | |||
| </div> | |||
| The [chromas](https://github.com/zdharma/fast-syntax-highlighting/tree/master/chroma) | |||
| that are enabled by default can be found | |||
| [here](https://github.com/zdharma/fast-syntax-highlighting/blob/master/fast-highlight#L166). | |||
| ### Math-mode highlighting | |||
| <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> | |||
| <img | |||
| src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/math.gif" | |||
| alt="image could not be loaded" | |||
| style="color:red;background-color:black;font-weight:bold" | |||
| /> | |||
| </div> | |||
| ### Zcalc highlighting | |||
| <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> | |||
| <img | |||
| src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/zcalc.png" | |||
| alt="image could not be loaded" | |||
| style="color:red;background-color:black;font-weight:bold" | |||
| /> | |||
| </div> | |||
| # Performance | |||
| Performance differences can be observed in this Asciinema recording, where a `10 kB` function is being edited. | |||
| <div style="width:100%;background-color:#121314;border:3px solid #121314;border-radius:6px;margin:5px 0;padding:2px 5px"> | |||
| <a href="https://asciinema.org/a/112367"> | |||
| <img src="https://asciinema.org/a/112367.png" alt="asciicast"> | |||
| </a> | |||
| </div> | |||
| ## IRC Channel | |||
| Channel `#zinit@freenode` is a support place for all author's projects. Connect to: | |||
| [chat.freenode.net:6697](ircs://chat.freenode.net:6697/%23zinit) (SSL) or [chat.freenode.net:6667](irc://chat.freenode.net:6667/%23zinit) | |||
| and join #zinit. | |||
| Following is a quick access via Webchat [](https://kiwiirc.com/client/chat.freenode.net:+6697/#zinit) | |||
| @ -0,0 +1,76 @@ | |||
| # Theme Guide for F-Sy-H | |||
| `fast-theme` tool is used to select a theme. There are 6 shipped themes, they can be listed with `fast-theme -l`. | |||
| Themes are basic [INI files](https://github.com/zdharma/fast-syntax-highlighting/tree/master/themes) where each | |||
| key is a *style*. | |||
| Besides shipped themes, user can point this tool to any other theme, by simple `fast-theme ~/mytheme.ini`. To | |||
| obtain template to work on when creating own theme, issue `fast-theme --copy-shipped-theme {theme-name}`. | |||
| To alter just a few styles and not create a whole new theme, use **overlay**. What is overlay? It is in the same | |||
| format as full theme, but can have only a few styles defined, and these styles will overwrite styles in main-theme. | |||
| Example overlay file: | |||
| ```ini | |||
| ; overlay.ini | |||
| [base] | |||
| commandseparator = yellow,bold | |||
| comment = 17 | |||
| [command-point] | |||
| function = green | |||
| command = 180 | |||
| ``` | |||
| File name `overlay.ini` is treated specially. | |||
| When specifing path, following short-hands can be used: | |||
| ``` | |||
| XDG: = ~/.config/fsh (respects $XDG_CONFIG_HOME env var) | |||
| LOCAL: = /usr/local/share/fsh/ | |||
| HOME: = ~/.fsh/ | |||
| OPT: = /opt/local/share/fsh/ | |||
| ``` | |||
| So for example, issue `fast-theme XDG:overlay` to load `~/.config/fsh/overlay.ini` as overlay. The `.ini` | |||
| extension is optional. | |||
| ## Secondary Theme | |||
| Each theme has key `secondary`, e.g. for theme `free`: | |||
| ```ini | |||
| ; free.ini | |||
| [base] | |||
| default = none | |||
| unknown-token = red,bold | |||
| ; ... | |||
| ; ... | |||
| ; ... | |||
| secondary = zdharma | |||
| ``` | |||
| Secondary theme (`zdharma` in the example) will be used for highlighting of argument for `eval` | |||
| and of `$( ... )` interior (i.e. of interior of command substitution). Basically, recursive | |||
| highlighting uses alternate theme to make the highlighted code distinct: | |||
|  | |||
| In the above screen-shot the interior of `$( ... )` uses different colors than the rest of the | |||
| code. Example for `eval`: | |||
|  | |||
| First line doesn't use recursive highlighting, highlights `eval` argument as regular string. | |||
| Second line switches theme to `zdharma` and does full recursive highlighting of eval argument. | |||
| ## Custom Working Directory | |||
| Set `$FAST_WORK_DIR` before loading the plugin to have e.g. processed theme files (ready to | |||
| load, in Zsh format, not INI) kept under specified location. This is handy if e.g. you install | |||
| Fast-Syntax-Highlighting system-wide (e.g. from AUR on ArchLinux) and want to have per-user | |||
| theme setup. | |||
| You can use "~" in the path, e.g. `FAST_WORK_DIR=~/.fsh` and also the `XDG:`, `LOCAL:`, `OPT:`, | |||
| etc. short-hands, so e.g. `FAST_WORK_DIR=XDG` or `FAST_WORK_DIR=XDG:` is allowed (in this case | |||
| it will be changed to `$HOME/.config/fsh` by default by F-Sy-H loader). | |||
| @ -0,0 +1,39 @@ | |||
| #compdef fast-theme | |||
| # | |||
| # Copyright (c) 2018 Sebastian Gniazdowski | |||
| # | |||
| # Completion for theme-switching function, fast-theme, | |||
| # part of zdharma/fast-syntax-highlighting. | |||
| # | |||
| integer ret=1 | |||
| local -a arguments | |||
| arguments=( | |||
| {-h,--help}'[display help text]' | |||
| {-l,--list}'[list available themes]' | |||
| {-r,--reset}'[unset any theme (revert to default highlighting)]' | |||
| {-R,--ov-reset}'[unset overlay, use styles only from main-theme (requires restart)]' | |||
| {-q,--quiet}'[no default messages]' | |||
| {-s,--show}'[get and display the theme currently being set]' | |||
| {-v,--verbose}'[more messages during operation]' | |||
| {-t,--test}'[test theme after setting it (show example code)]' | |||
| {-p,--palette}'[just print all 256 colors and exit (useful when creating a theme)]' | |||
| {-w,--workdir}'[cd into $FAST_WORK_DIR (if not set, then into the plugin directory)]' | |||
| ) | |||
| typeset -a themes | |||
| themes=( "$FAST_WORK_DIR"/themes/*.ini(:t:r) ) | |||
| if [[ -d ${XDG_CONFIG_HOME:-$HOME/.config}/fsh ]] { | |||
| typeset -a themes2 | |||
| themes2=( "${XDG_CONFIG_HOME:-$HOME/.config}"/fsh/*.ini(:t:r) ) | |||
| themes+=( XDG:${^themes2[@]} ) | |||
| } | |||
| _wanted themes expl "Themes" \ | |||
| compadd "$@" -a - themes && ret=0 | |||
| _arguments -s $arguments && ret=0 | |||
| return $ret | |||
| @ -1,884 +0,0 @@ | |||
| # Changes in HEAD | |||
| ## Changes fixed as part of the switch to zle-line-pre-redraw | |||
| The changes in this section were fixed by switching to a `zle-line-pre-redraw`-based | |||
| implementation. | |||
| Note: The new implementation will only be used on future zsh releases, | |||
| numbered 5.8.0.3 and newer, due to interoperability issues with other plugins | |||
| (issues #418 and #579). The underlying zsh feature has been available since | |||
| zsh 5.2. | |||
| Whilst under development, the new implementation was known as the | |||
| "feature/redrawhook" topic branch. | |||
| - Fixed: Highlighting not triggered after popping a buffer from the buffer stack | |||
| (using the `push-line` widget, default binding: `M-q`) | |||
| [#40] | |||
| - Fixed: Invoking completion when there were no matches removed highlighting | |||
| [#90, #470] | |||
| - Fixed: Two successive deletes followed by a yank only yanked the latest | |||
| delete, rather than both of them | |||
| [#150, #151, #160; cf. #183] | |||
| - Presumed fixed: Completing `$(xsel)` results in an error message from `xsel`, | |||
| with pre-2017 versions of `xsel`. (For 2017 vintage and newer, see the issue | |||
| for details.) | |||
| [#154] | |||
| - Fixed: When the standard `bracketed-paste-magic` widget is in use, pastes were slow | |||
| [#295] | |||
| - Fixed: No way to prevent a widget from being wrapped | |||
| [#324] | |||
| - Fixed: No highlighting while cycling menu completion | |||
| [#375] | |||
| - Fixed: Does not coexist with the `IGNORE_EOF` option | |||
| [#377] | |||
| - Fixed: The `undefined-key` widget was wrapped | |||
| [#421] | |||
| - Fixed: Does not coexist with the standard `surround` family of widgets | |||
| [#520] | |||
| - Fixed: First completed filename doesn't get `path` highlighting | |||
| [#632] | |||
| ## Other changes | |||
| - Add issue #712 to the previous release's changelog (hereinafter). | |||
| # Changes in 0.8.0-alpha1-pre-redrawhook | |||
| ## Notice about an improbable-but-not-impossible forward incompatibility | |||
| Everyone can probably skip this section. | |||
| The `master` branch of zsh-syntax-highlighting uses a zsh feature that has not | |||
| yet appeared in a zsh release: the `memo=` feature, added to zsh in commit | |||
| zsh-5.8-172-gdd6e702ee (after zsh 5.8, before zsh 5.9). In the unlikely event | |||
| that this zsh feature should change in an incompatible way before the next | |||
| stable zsh release, set `zsh_highlight__memo_feature=0` in your .zshrc files to | |||
| disable use of the new feature. | |||
| z-sy-h dogfoods the new, unreleased zsh feature because that feature was | |||
| added to zsh at z-sy-h's initiative. The new feature is used in the fix | |||
| to issue #418. | |||
| ## Incompatible changes: | |||
| - An unsuccessful completion (a <kbd>⮀ Tab</kbd> press that doesn't change the | |||
| command line) no longer causes highlighting to be lost. Visual feedback can | |||
| alternatively be achieved by setting the `format` zstyle under the `warnings` | |||
| tag, for example, | |||
| zstyle ':completion:*:warnings' format '%F{red}No matches%f' | |||
| Refer to the [description of the `format` style in `zshcompsys(1)`] | |||
| [zshcompsys-Standard-Styles-format]. | |||
| (#90, part of #245 (feature/redrawhook)) | |||
| [zshcompsys-Standard-Styles]: http://zsh.sourceforge.net/Doc/Release/Completion-System.html#Standard-Styles | |||
| [zshcompsys-Standard-Styles-format]: http://zsh.sourceforge.net/Doc/Release/Completion-System.html#index-format_002c-completion-style | |||
| ## Other changes: | |||
| - Document `$ZSH_HIGHLIGHT_MAXLENGTH`. | |||
| [#698] | |||
| - Optimize highlighting unquoted words (words that are not in single quotes, double quotes, backticks, or dollar-single-quotes) | |||
| [#730] | |||
| - Redirection operators (e.g., `<` and `>`) are now highlighted by default | |||
| [#646] | |||
| - Propertly terminate `noglob` scope in try/always blocks | |||
| [#577] | |||
| - Don't error out when `KSH_ARRAYS` is set in the calling scope | |||
| [#622, #689] | |||
| - Literal semicolons in array assignments (`foo=( bar ; baz )`) are now | |||
| highlighted as errors. | |||
| [3ca93f864fb6] | |||
| - Command separators in array assignments (`foo=( bar | baz )`) are now | |||
| highlighted as errors. | |||
| [#651, 81267ca3130c] | |||
| - Support parameter elision in command position (e.g., `$foo ls` where `$foo` is unset or empty) | |||
| [#667] | |||
| - Don't consider the filename in `sudo -e /path/to/file` to be a command position | |||
| [#678] | |||
| - Don't look up absolute directory names in $cdpath | |||
| [2cc2583f8f12, part of #669] | |||
| - Fix `exec 2>&1;` being highlighted as an error. | |||
| [#676] | |||
| - Fix `: $(<*)` being highlighted as globbing. | |||
| [#582] | |||
| - Fix `cat < *` being highlighting as globbing when the `MULTIOS` option is unset. | |||
| [#583] | |||
| - Fix `echo >&2` highlighting the `2` as a filename if a file by that name happened to exist | |||
| [#694, part of #645] | |||
| - Fix `echo >&-` highlighting the `-` as a filename if a file by that name happened to exist | |||
| [part of #645] | |||
| - Fix `echo >&p` highlighting the `p` as a filename if a file by that name happened to exist | |||
| [part of #645] | |||
| - Fix wrong highlighting of unquoted parameter expansions under zsh 5.2 and older | |||
| [e165f18c758e] | |||
| - Highlight global aliases | |||
| [#700] | |||
| - Highlight `: =nosuchcommand' as an error (when the `EQUALS` option hasn't been unset). | |||
| [#430] | |||
| - Highlight reserved word after assignments as errors (e.g., `foo=bar (ls;)`) | |||
| [#461] | |||
| - Correctly highlight `[[ foo && bar || baz ]]`. | |||
| - Highlight non-executable files in command position correctly (e.g., `% /etc/passwd`) | |||
| [#202, #669] | |||
| - Highlight directories in command position correctly, including `AUTO_CD` support | |||
| [#669] | |||
| - Recognize `env` as a precommand (e.g., `env FOO=bar ls`) | |||
| - Recognize `strace` as a precommand | |||
| - Fix an error message on stderr before every prompt when the `WARN_NESTED_VAR` zsh option is set: | |||
| `_zsh_highlight_main__precmd_hook:1: array parameter _zsh_highlight_main__command_type_cache set in enclosing scope in function _zsh_highlight_main__precmd_hook` | |||
| [#727, #731, #732, #733] | |||
| - Fix highlighting of alias whose definitions use a simple command terminator | |||
| (such as `;`, `|`, `&&`) before a newline | |||
| [#677; had regressed in 0.7.0] | |||
| - Highlight arithmetic expansions (e.g., `$(( 42 ))`) | |||
| [#607 #649 #704] | |||
| - Highlight the parentheses of array assignments as reserved words (`foo=( bar )`). | |||
| The `assign` style remains supported and has precedence. | |||
| [#585] | |||
| - Fix interoperability issue with other plugins that use highlighting. The fix | |||
| requires zsh 5.8.0.3 or newer. (zsh 5.8.0.2-dev from the `master` branch, | |||
| revision zsh-5.8-172-gdd6e702ee or newer is also fine.) | |||
| [#418, https://github.com/okapia/zsh-viexchange/issues/1] | |||
| - Improve performance of the `brackets` highlighter. | |||
| - Fix highlighting of pre-command redirections (e.g., the `$fn` in `<$fn cat`) | |||
| [#712] | |||
| # Changes in version 0.7.1 | |||
| - Remove out-of-date information from the 0.7.0 changelog. | |||
| # Changes in version 0.7.0 | |||
| This is a stable bugfix and feature release. Major new features and changes include: | |||
| - Add `ZSH_HIGHLIGHT_DIRS_BLACKLIST` to disable "path" and "path prefix" | |||
| highlighting for specific directories | |||
| [#379] | |||
| - Add the "regexp" highlighter, modelled after the pattern highlighter | |||
| [4e6f60063f1c] | |||
| - When a word uses globbing, only the globbing metacharacters will be highlighted as globbing: | |||
| in `: foo*bar`, only the `*` will be blue. | |||
| [e48af357532c] | |||
| - Highlight pasted quotes (e.g., `: foo"bar"`) | |||
| [dc1b2f6fa4bb] | |||
| - Highlight command substitutions (`` : `ls` ``, `: $(ls)`) | |||
| [c0e64fe13178 and parents, e86f75a840e7, et al] | |||
| - Highlight process substitutions (`: >(nl)`, `: <(pwd)`, `: =(git diff)`) | |||
| [c0e64fe13178 and parents, e86f75a840e7, et al] | |||
| - Highlight command substitutions inside double quotes (``: "`foo`"``) | |||
| [f16e858f0c83] | |||
| - Highlight many precommands (e.g., `nice`, `stdbuf`, `eatmydata`; | |||
| see `$precommand_options` in the source) | |||
| - Highlight numeric globs (e.g., `echo /lib<->`) | |||
| - Assorted improvements to aliases highlighting | |||
| (e.g., | |||
| `alias sudo_u='sudo -u'; sudo_u jrandom ls`, | |||
| `alias x=y y=z z=nosuchcommand; x`, | |||
| `alias ls='ls -l'; \ls`) | |||
| [f3410c5862fc, 57386f30aec8, #544, and many others] | |||
| - Highlight some more syntax errors | |||
| [dea05e44e671, 298ef6a2fa30] | |||
| - New styles: named file descriptors, `RC_QUOTES`, and unclosed quotes (e.g., `echo "foo<CURSOR>`) | |||
| [38c794a978cd, 25ae1c01216c, 967335dfc5fd] | |||
| - The 'brackets' highlighting no longer treats quotes specially. | |||
| [ecdda36ef56f] | |||
| Selected bugfixes include: | |||
| - Highlight `sudo` correctly when it's not installed | |||
| [26a82113b08b] | |||
| - Handle some non-default options being set in zshrc | |||
| [b07ada1255b7, a2a899b41b8, 972ad197c13d, b3f66fc8748f] | |||
| - Fix off-by-one highlighting in vi "visual" mode (vicmd keymap) | |||
| [be3882aeb054] | |||
| - The 'yank-pop' widget is not wrapped | |||
| [#183] | |||
| Known issues include: | |||
| - A multiline alias that uses a simple command terminator (such as `;`, `|`, `&&`) | |||
| before a newline will incorrectly be highlighted as an error. See issue #677 | |||
| for examples and workarounds. | |||
| [#677] | |||
| [UPDATE: Fixed in 0.8.0] | |||
| # Changes in version 0.6.0 | |||
| This is a stable release, featuring bugfixes and minor improvements. | |||
| ## Performance improvements: | |||
| (none) | |||
| ## Added highlighting of: | |||
| - The `isearch` and `suffix` [`$zle_highlight` settings][zshzle-Character-Highlighting]. | |||
| (79e4d3d12405, 15db71abd0cc, b56ee542d619; requires zsh 5.3 for `$ISEARCHMATCH_ACTIVE` / `$SUFFIX_ACTIVE` support) | |||
| [zshzle-Character-Highlighting]: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting | |||
| - Possible history expansions in double-quoted strings. | |||
| (76ea9e1df316) | |||
| - Mismatched `if`/`then`/`elif`/`else`/`fi`. | |||
| (73cb83270262) | |||
| ## Fixed highlighting of: | |||
| - A comment line followed by a non-comment line. | |||
| (#385, 9396ad5c5f9c) | |||
| - An unquoted `$*` (expands to the positional parameters). | |||
| (237f89ad629f) | |||
| - history-incremental-pattern-search-backward under zsh 5.3.1. | |||
| (#407, #415, 462779629a0c) | |||
| ## API changes (for highlighter authors): | |||
| (none) | |||
| ## Developer-visible changes: | |||
| - tests: Set the `ALIAS_FUNC_DEF` option for zsh 5.4 compatibility. | |||
| (9523d6d49cb3) | |||
| ## Other changes: | |||
| - docs: Added before/after screenshots. | |||
| (cd9ec14a65ec..b7e277106b49) | |||
| - docs: Link Fedora package. | |||
| (3d74aa47e4a7, 5feed23962df) | |||
| - docs: Link FreeBSD port. | |||
| (626c034c68d7) | |||
| - docs: Link OpenSUSE Build Service packages | |||
| (#419, dea1fedc7358) | |||
| - Prevent user-defined aliases from taking effect in z-sy-h's own code. | |||
| (#390, 2dce602727d7, 8d5afe47f774; and #392, #395, b8fa1b9dc954) | |||
| - docs: Update zplug installation instructions. | |||
| (#399, 4f49c4a35f17) | |||
| - Improve "unhandled ZLE widget 'foo'" error message. | |||
| (#409, be083d7f3710) | |||
| - Fix printing of "failed loading highlighters" error message. | |||
| (#426, ad522a091429) | |||
| # Changes in version 0.5.0 | |||
| ## Performance improvements: | |||
| We thank Sebastian Gniazdowski and "m0viefreak" for significant contributions | |||
| in this area. | |||
| - Optimize string operations in the `main` (default) highlighter. | |||
| (#372/3cb58fd7d7b9, 02229ebd6328, ef4bfe5bcc14, #372/c6b6513ac0d6, #374/15461e7d21c3) | |||
| - Command word highlighting: Use the `zsh/parameter` module to avoid forks. | |||
| Memoize (cache) the results. | |||
| (#298, 3ce01076b521, 2f18ba64e397, 12b879caf7a6; #320, 3b67e656bff5) | |||
| - Avoid forks in the driver and in the `root` highlighter. | |||
| (b9112aec798a, 38c8fbea2dd2) | |||
| ## Added highlighting of: | |||
| - `pkexec` (a precommand). | |||
| (#248, 4f3910cbbaa5) | |||
| - Aliases that cannot be defined normally nor invoked normally (highlighted as an error). | |||
| (#263 (in part), 28932316cca6) | |||
| - Path separators (`/`) — the default behaviour remains to highlight path separators | |||
| and path components the same way. | |||
| (#136, #260, 6cd39e7c70d3, 9a934d291e7c, f3d3aaa00cc4) | |||
| - Assignments to individual positional arguments (`42=foo` to assign to `$42`). | |||
| (f4036a09cee3) | |||
| - Linewise region (the `visual-line-mode` widget, bound to `V` in zsh's `vi` keymap). | |||
| (#267, a7a7f8b42280, ee07588cfd9b) | |||
| - Command-lines recalled by `isearch` mode; requires zsh≥5.3. | |||
| (#261 (in part); #257; 4ad311ec0a68) | |||
| - Command-lines whilst the `IGNORE_BRACES` or `IGNORE_CLOSE_BRACES` option is in effect. | |||
| (a8a6384356af, 02807f1826a5) | |||
| - Mismatched parentheses and braces (in the `main` highlighter). | |||
| (51b9d79c3bb6, 2fabf7ca64b7, a4196eda5e6f, and others) | |||
| - Mismatched `do`/`done` keywords. | |||
| (b2733a64da93) | |||
| - Mismatched `foreach`/`end` keywords. | |||
| (#96, 2bb8f0703d8f) | |||
| - In Bourne-style function definitions, when the `MULTI_FUNC_DEF` option is set | |||
| (which is the default), highlight the first word in the function body as | |||
| a command word: `f() { g "$@" }`. | |||
| (6f91850a01e1) | |||
| - `always` blocks. | |||
| (#335, e5782e4ddfb6) | |||
| - Command substitutions inside double quotes, `"$(echo foo)"`. | |||
| (#139 (in part), c3913e0d8ead) | |||
| - Non-alphabetic parameters inside double quotes (`"$$"`, `"$#"`, `"$*"`, `"$@"`, `"$?"`, `"$-"`). | |||
| (4afe670f7a1b, 44ef6e38e5a7) | |||
| - Command words from future versions of zsh (forward compatibly). | |||
| This also adds an `arg0` style that all other command word styles fall back to. | |||
| (b4537a972eed, bccc3dc26943) | |||
| - Escaped history expansions inside double quotes: `: "\!"` | |||
| (28d7056a7a06, et seq) | |||
| ## Fixed highlighting of: | |||
| - Command separator tokens in syntactically-invalid positions. | |||
| (09c4114eb980) | |||
| - Redirections with a file descriptor number at command word. | |||
| (#238 (in part), 73ee7c1f6c4a) | |||
| - The `select` prompt, `$PS3`. | |||
| (#268, 451665cb2a8b) | |||
| - Values of variables in `vared`. | |||
| (e500ca246286) | |||
| - `!` as an argument (neither a history expansion nor a reserved word). | |||
| (4c23a2fd1b90) | |||
| - "division by zero" error under the `brackets` highlighter when `$ZSH_HIGHLIGHT_STYLES` is empty. | |||
| (f73f3d53d3a6) | |||
| - Process substitutions, `<(pwd)` and `>(wc -l)`. | |||
| (#302, 6889ff6bd2ad, bfabffbf975c, fc9c892a3f15) | |||
| - The non-`SHORT_LOOPS` form of `repeat` loops: `repeat 42; do true; done`. | |||
| (#290, 4832f18c50a5, ef68f50c048f, 6362c757b6f7) | |||
| - Broken symlinks (are now highlighted as files). | |||
| (#342, 95f7206a9373, 53083da8215e) | |||
| - Lines accepted from `isearch` mode. | |||
| (#284; #257, #259, #288; 5bae6219008b, a8fe22d42251) | |||
| - Work around upstream bug that triggered when the command word was a relative | |||
| path, that when interpreted relative to a $PATH directory denoted a command; | |||
| the effect of that upstream bug was that the relative path was cached as | |||
| a "valid external command name". | |||
| (#354, #355, 51614ca2c994, fdaeec45146b, 7d38d07255e4; | |||
| upstream fix slated to be released in 5.3 (workers/39104)) | |||
| - After accepting a line with the cursor on a bracket, the matching bracket | |||
| of the bracket under the cursor no longer remains highlighted (with the | |||
| `brackets` highlighter). | |||
| (4c4baede519a) | |||
| - The first word on a new line within an array assignment or initialization is no | |||
| longer considered a command position. | |||
| (8bf423d16d46) | |||
| - Subshells that end at command position, `(A=42)`, `(true;)`. | |||
| (#231, 7fb6f9979121; #344, 4fc35362ee5a) | |||
| - Command word after array assignment, `a=(lorem ipsum) pwd`. | |||
| (#330, 7fb6f9979121) | |||
| ## API changes (for highlighter authors): | |||
| - New interface `_zsh_highlight_add_highlight`. | |||
| (341a3ae1f015, c346f6eb6fb6) | |||
| - tests: Specify the style key, not its value, in test expectations. | |||
| (a830613467af, fd061b5730bf, eaa4335c3441, among others) | |||
| - Module author documentation improvements. | |||
| (#306 (in part), 217669270418, 0ff354b44b6e, 80148f6c8402, 364f206a547f, and others) | |||
| - The driver no longer defines a `_zsh_highlight_${highlighter}_highlighter_cache` | |||
| variable, which is in the highlighters' namespace. | |||
| (3e59ab41b6b8, 80148f6c8402, f91a7b885e7d) | |||
| - Rename highlighter entry points. The old names remain supported for | |||
| backwards compatibility. | |||
| (a3d5dfcbdae9, c793e0dceab1) | |||
| - tests: Add the "NONE" expectation. | |||
| (4da9889d1545, 13018f3dd735, d37c55c788cd) | |||
| - tests: consider a test that writes to stderr to have failed. | |||
| (#291, 1082067f9315) | |||
| ## Developer-visible changes: | |||
| - Add `make quiet-test`. | |||
| (9b64ad750f35) | |||
| - test harness: Better quote replaceables in error messages. | |||
| (30d8f92df225) | |||
| - test harness: Fix exit code for XPASS. | |||
| (bb8d325c0cbd) | |||
| - Create [HACKING.md](HACKING.md). | |||
| (cef49752fd0e) | |||
| - tests: Emit a description for PASS test points. | |||
| (6aa57d60aa64, f0bae44b76dd) | |||
| - tests: Create a script that generates a test file. | |||
| (8013dc3b8db6, et seq; `tests/generate.zsh`) | |||
| ## Other changes: | |||
| - Under zsh≤5.2, widgets whose names start with a `_` are no longer excluded | |||
| from highlighting. | |||
| (ed33d2cb1388; reverts part of 186d80054a40 which was for #65) | |||
| - Under zsh≤5.2, widgets implemented by a function named after the widget are | |||
| no longer excluded from highlighting. | |||
| (487b122c480d; reverts part of 776453cb5b69) | |||
| - Under zsh≤5.2, shell-unsafe widget names can now be wrapped. | |||
| (#278, 6a634fac9fb9, et seq) | |||
| - Correct some test expectations. | |||
| (78290e043bc5) | |||
| - `zsh-syntax-highlighting.plugin.zsh`: Convert from symlink to plain file | |||
| for msys2 compatibility. | |||
| (#292, d4f8edc9f3ad) | |||
| - Document installation under some plugin managers. | |||
| (e635f766bef9, 9cab566f539b) | |||
| - Don't leak the `PATH_DIRS` option. | |||
| (7b82b88a7166) | |||
| - Don't require the `FUNCTION_ARGZERO` option to be set. | |||
| (#338, 750aebc553f2) | |||
| - Under zsh≤5.2, support binding incomplete/nonexistent widgets. | |||
| (9e569bb0fe04, part of #288) | |||
| - Make the driver reentrant, fixing possibility of infinite recursion | |||
| under zsh≤5.2 under interaction with theoretical third-party code. | |||
| (#305, d711563fe1bf, 295d62ec888d, f3242cbd6aba) | |||
| - Fix warnings when `WARN_CREATE_GLOBAL` is set prior to sourcing zsh-syntax-highlighting. | |||
| (z-sy-h already sets `WARN_CREATE_GLOBAL` internally.) | |||
| (da60234fb236) | |||
| - Warn only once, rather than once per keypress, when a highlighter is unavailable. | |||
| (0a9b347483ae) | |||
| # Changes in version 0.4.1 | |||
| ## Fixes: | |||
| - Arguments to widgets were not properly dash-escaped. Only matters for widgets | |||
| that take arguments (i.e., that are invoked as `zle ${widget} -- ${args}`). | |||
| (282c7134e8ac, reverts c808d2187a73) | |||
| # Changes in version 0.4.0 | |||
| ## Added highlighting of: | |||
| - incomplete sudo commands | |||
| (a3047a912100, 2f05620b19ae) | |||
| ```zsh | |||
| sudo; | |||
| sudo -u; | |||
| ``` | |||
| - command words following reserved words | |||
| (#207, #222, b397b12ac139 et seq, 6fbd2aa9579b et seq, 8b4adbd991b0) | |||
| ```zsh | |||
| if ls; then ls; else ls; fi | |||
| repeat 10 do ls; done | |||
| ``` | |||
| (The `ls` are now highlighted as a command.) | |||
| - comments (when `INTERACTIVE_COMMENTS` is set) | |||
| (#163, #167, 693de99a9030) | |||
| ```zsh | |||
| echo Hello # comment | |||
| ``` | |||
| - closing brackets of arithmetic expansion, subshells, and blocks | |||
| (#226, a59f442d2d34, et seq) | |||
| ```zsh | |||
| (( foo )) | |||
| ( foo ) | |||
| { foo } | |||
| ``` | |||
| - command names enabled by the `PATH_DIRS` option | |||
| (#228, 96ee5116b182) | |||
| ```zsh | |||
| # When ~/bin/foo/bar exists, is executable, ~/bin is in $PATH, | |||
| # and 'setopt PATH_DIRS' is in effect | |||
| foo/bar | |||
| ``` | |||
| - parameter expansions with braces inside double quotes | |||
| (#186, 6e3720f39d84) | |||
| ```zsh | |||
| echo "${foo}" | |||
| ``` | |||
| - parameter expansions in command word | |||
| (#101, 4fcfb15913a2) | |||
| ```zsh | |||
| x=/bin/ls | |||
| $x -l | |||
| ``` | |||
| - the command separators '\|&', '&!', '&\|' | |||
| ```zsh | |||
| view file.pdf &! ls | |||
| ``` | |||
| ## Fixed highlighting of: | |||
| - precommand modifiers at non-command-word position | |||
| (#209, 2c9f8c8c95fa) | |||
| ```zsh | |||
| ls command foo | |||
| ``` | |||
| - sudo commands with infix redirections | |||
| (#221, be006aded590, 86e924970911) | |||
| ```zsh | |||
| sudo -u >/tmp/foo.out user ls | |||
| ``` | |||
| - subshells; anonymous functions | |||
| (#166, #194, 0d1bfbcbfa67, 9e178f9f3948) | |||
| ```zsh | |||
| (true) | |||
| () { true } | |||
| ``` | |||
| - parameter assignment statements with no command | |||
| (#205, 01d7eeb3c713) | |||
| ```zsh | |||
| A=1; | |||
| ``` | |||
| (The semicolon used to be highlighted as a mistake) | |||
| - cursor highlighter: Remove the cursor highlighting when accepting a line. | |||
| (#109, 4f0c293fdef0) | |||
| ## Removed features: | |||
| - Removed highlighting of approximate paths (`path_approx`). | |||
| (#187, 98aee7f8b9a3) | |||
| ## Other changes: | |||
| - main highlighter refactored to use states rather than booleans. | |||
| (2080a441ac49, et seq) | |||
| - Fix initialization when sourcing `zsh-syntax-highlighting.zsh` via a symlink | |||
| (083c47b00707) | |||
| - docs: Add screenshot. | |||
| (57624bb9f64b) | |||
| - widgets wrapping: Don't add '--' when invoking widgets. | |||
| (c808d2187a73) [_reverted in 0.4.1_] | |||
| - Refresh highlighting upon `accept-*` widgets (`accept-line` et al). | |||
| (59fbdda64c21) | |||
| - Stop leaking match/mbegin/mend to global scope (thanks to upstream | |||
| `WARN_CREATE_GLOBAL` improvements). | |||
| (d3deffbf46a4) | |||
| - 'make install': Permit setting `$(SHARE_DIR)` from the environment. | |||
| (e1078a8b4cf1) | |||
| - driver: Tolerate KSH_ARRAYS being set in the calling context. | |||
| (#162, 8f19af6b319d) | |||
| - 'make install': Install documentation fully and properly. | |||
| (#219, b1619c001390, et seq) | |||
| - docs: Improve 'main' highlighter's documentation. | |||
| (00de155063f5, 7d4252f5f596) | |||
| - docs: Moved to a new docs/ tree; assorted minor updates | |||
| (c575f8f37567, 5b34c23cfad5, et seq) | |||
| - docs: Split README.md into INSTALL.md | |||
| (0b3183f6cb9a) | |||
| - driver: Report `$ZSH_HIGHLIGHT_REVISION` when running from git | |||
| (84734ba95026) | |||
| ## Developer-visible changes: | |||
| - Test harness converted to [TAP](http://testanything.org/tap-specification.html) format | |||
| (d99aa58aaaef, et seq) | |||
| - Run each test in a separate subprocess, isolating them from each other | |||
| (d99aa58aaaef, et seq) | |||
| - Fix test failure with nonexisting $HOME | |||
| (#216, b2ac98b98150) | |||
| - Test output is now colorized. | |||
| (4d3da30f8b72, 6fe07c096109) | |||
| - Document `make install` | |||
| (a18a7427fd2c) | |||
| - tests: Allow specifying the zsh binary to use. | |||
| (557bb7e0c6a0) | |||
| - tests: Add 'make perf' target | |||
| (4513eaea71d7) | |||
| - tests: Run each test in a sandbox directory | |||
| (c01533920245) | |||
| # Changes in version 0.3.0 | |||
| ## Added highlighting of: | |||
| - suffix aliases (requires zsh 5.1.1 or newer): | |||
| ```zsh | |||
| alias -s png=display | |||
| foo.png | |||
| ``` | |||
| - prefix redirections: | |||
| ```zsh | |||
| <foo.txt cat | |||
| ``` | |||
| - redirection operators: | |||
| ```zsh | |||
| echo > foo.txt | |||
| ``` | |||
| - arithmetic evaluations: | |||
| ```zsh | |||
| (( 42 )) | |||
| ``` | |||
| - $'' strings, including \x/\octal/\u/\U escapes | |||
| ```zsh | |||
| : $'foo\u0040bar' | |||
| ``` | |||
| - multiline strings: | |||
| ```zsh | |||
| % echo "line 1 | |||
| line 2" | |||
| ``` | |||
| - string literals that haven't been finished: | |||
| ```zsh | |||
| % echo "Hello, world | |||
| ``` | |||
| - command words that involve tilde expansion: | |||
| ```zsh | |||
| % ~/bin/foo | |||
| ``` | |||
| ## Fixed highlighting of: | |||
| - quoted command words: | |||
| ```zsh | |||
| % \ls | |||
| ``` | |||
| - backslash escapes in "" strings: | |||
| ```zsh | |||
| % echo "\x41" | |||
| ``` | |||
| - noglob after command separator: | |||
| ```zsh | |||
| % :; noglob echo * | |||
| ``` | |||
| - glob after command separator, when the first command starts with 'noglob': | |||
| ```zsh | |||
| % noglob true; echo * | |||
| ``` | |||
| - the region (vi visual mode / set-mark-command) (issue #165) | |||
| - redirection and command separators that would be highlighted as `path_approx` | |||
| ```zsh | |||
| % echo foo;‸ | |||
| % echo <‸ | |||
| ``` | |||
| (where `‸` represents the cursor location) | |||
| - escaped globbing (outside quotes) | |||
| ```zsh | |||
| % echo \* | |||
| ``` | |||
| ## Other changes: | |||
| - implemented compatibility with zsh's paste highlighting (issue #175) | |||
| - `$?` propagated correctly to wrapped widgets | |||
| - don't leak $REPLY into global scope | |||
| ## Developer-visible changes: | |||
| - added makefile with `install` and `test` targets | |||
| - set `warn_create_global` internally | |||
| - document release process | |||
| # Version 0.2.1 | |||
| (Start of changelog.) | |||
| @ -1,132 +0,0 @@ | |||
| zsh-syntax-highlighting / highlighters | |||
| ====================================== | |||
| Syntax highlighting is done by pluggable highlighters: | |||
| * `main` - the base highlighter, and the only one [active by default][1]. | |||
| * `brackets` - [matches brackets][2] and parenthesis. | |||
| * `pattern` - matches [user-defined patterns][3]. | |||
| * `cursor` - matches [the cursor position][4]. | |||
| * `root` - highlights the whole command line [if the current user is root][5]. | |||
| * `line` - applied to [the whole command line][6]. | |||
| [1]: highlighters/main.md | |||
| [2]: highlighters/brackets.md | |||
| [3]: highlighters/pattern.md | |||
| [4]: highlighters/cursor.md | |||
| [5]: highlighters/root.md | |||
| [6]: highlighters/line.md | |||
| Highlighter-independent settings | |||
| -------------------------------- | |||
| By default, all command lines are highlighted. However, it is possible to | |||
| prevent command lines longer than a fixed number of characters from being | |||
| highlighted by setting the variable `${ZSH_HIGHLIGHT_MAXLENGTH}` to the maximum | |||
| length (in characters) of command lines to be highlighter. This is useful when | |||
| editing very long comand lines (for example, with the [`fned`][fned] utility | |||
| function). Example: | |||
| [fned]: http://zsh.sourceforge.net/Doc/Release/User-Contributions.html#index-zed | |||
| ```zsh | |||
| ZSH_HIGHLIGHT_MAXLENGTH=512 | |||
| ``` | |||
| How to activate highlighters | |||
| ---------------------------- | |||
| To activate an highlighter, add it to the `ZSH_HIGHLIGHT_HIGHLIGHTERS` array in | |||
| `~/.zshrc`, for example: | |||
| ```zsh | |||
| ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets pattern cursor) | |||
| ``` | |||
| By default, `$ZSH_HIGHLIGHT_HIGHLIGHTERS` is unset and only the `main` | |||
| highlighter is active. | |||
| How to tweak highlighters | |||
| ------------------------- | |||
| Highlighters look up styles from the `ZSH_HIGHLIGHT_STYLES` associative array. | |||
| Navigate into the [individual highlighters' documentation](highlighters/) to | |||
| see what styles (keys) each highlighter defines; the syntax for values is the | |||
| same as the syntax of "types of highlighting" of the zsh builtin | |||
| `$zle_highlight` array, which is documented in [the `zshzle(1)` manual | |||
| page][zshzle-Character-Highlighting]. | |||
| [zshzle-Character-Highlighting]: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting | |||
| Some highlighters support additional configuration parameters; see each | |||
| highlighter's documentation for details and examples. | |||
| How to implement a new highlighter | |||
| ---------------------------------- | |||
| To create your own `acme` highlighter: | |||
| * Create your script at | |||
| `highlighters/acme/acme-highlighter.zsh`. | |||
| * Implement the `_zsh_highlight_highlighter_acme_predicate` function. | |||
| This function must return 0 when the highlighter needs to be called and | |||
| non-zero otherwise, for example: | |||
| ```zsh | |||
| _zsh_highlight_highlighter_acme_predicate() { | |||
| # Call this highlighter in SVN working copies | |||
| [[ -d .svn ]] | |||
| } | |||
| ``` | |||
| * Implement the `_zsh_highlight_highlighter_acme_paint` function. | |||
| This function does the actual syntax highlighting, by calling | |||
| `_zsh_highlight_add_highlight` with the start and end of the region to | |||
| be highlighted and the `ZSH_HIGHLIGHT_STYLES` key to use. Define the default | |||
| style for that key in the highlighter script outside of any function with | |||
| `: ${ZSH_HIGHLIGHT_STYLES[key]:=value}`, being sure to prefix | |||
| the key with your highlighter name and a colon. For example: | |||
| ```zsh | |||
| : ${ZSH_HIGHLIGHT_STYLES[acme:aurora]:=fg=green} | |||
| _zsh_highlight_highlighter_acme_paint() { | |||
| # Colorize the whole buffer with the 'aurora' style | |||
| _zsh_highlight_add_highlight 0 $#BUFFER acme:aurora | |||
| } | |||
| ``` | |||
| If you need to test which options the user has set, test `zsyh_user_options` | |||
| with a sensible default if the option is not present in supported zsh | |||
| versions. For example: | |||
| ```zsh | |||
| [[ ${zsyh_user_options[ignoreclosebraces]:-off} == on ]] | |||
| ``` | |||
| The option name must be all lowercase with no underscores and not an alias. | |||
| * Name your own functions and global variables `_zsh_highlight_acme_*`. | |||
| - In zsh-syntax-highlighting 0.4.0 and earlier, the entrypoints | |||
| `_zsh_highlight_highlighter_acme_predicate` and | |||
| `_zsh_highlight_highlighter_acme_paint` | |||
| were named | |||
| `_zsh_highlight_acme_highlighter_predicate` and | |||
| `_zsh_highlight_highlighter_acme_paint` respectively. | |||
| These names are still supported for backwards compatibility; | |||
| however, support for them will be removed in a future major or minor release (v0.x.0 or v1.0.0). | |||
| * Activate your highlighter in `~/.zshrc`: | |||
| ```zsh | |||
| ZSH_HIGHLIGHT_HIGHLIGHTERS+=(acme) | |||
| ``` | |||
| * [Write tests](../tests/README.md). | |||
| @ -1,31 +0,0 @@ | |||
| zsh-syntax-highlighting / highlighters / brackets | |||
| ------------------------------------------------- | |||
| This is the `brackets` highlighter, that highlights brackets and parentheses, and | |||
| matches them. | |||
| ### How to tweak it | |||
| This highlighter defines the following styles: | |||
| * `bracket-error` - unmatched brackets | |||
| * `bracket-level-N` - brackets with nest level N | |||
| * `cursor-matchingbracket` - the matching bracket, if cursor is on a bracket | |||
| To override one of those styles, change its entry in `ZSH_HIGHLIGHT_STYLES`, | |||
| for example in `~/.zshrc`: | |||
| ```zsh | |||
| # To define styles for nested brackets up to level 4 | |||
| ZSH_HIGHLIGHT_STYLES[bracket-level-1]='fg=blue,bold' | |||
| ZSH_HIGHLIGHT_STYLES[bracket-level-2]='fg=red,bold' | |||
| ZSH_HIGHLIGHT_STYLES[bracket-level-3]='fg=yellow,bold' | |||
| ZSH_HIGHLIGHT_STYLES[bracket-level-4]='fg=magenta,bold' | |||
| ``` | |||
| The syntax for values is the same as the syntax of "types of highlighting" of | |||
| the zsh builtin `$zle_highlight` array, which is documented in [the `zshzle(1)` | |||
| manual page][zshzle-Character-Highlighting]. | |||
| [zshzle-Character-Highlighting]: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting | |||
| @ -1,24 +0,0 @@ | |||
| zsh-syntax-highlighting / highlighters / cursor | |||
| ----------------------------------------------- | |||
| This is the `cursor` highlighter, that highlights the cursor. | |||
| ### How to tweak it | |||
| This highlighter defines the following styles: | |||
| * `cursor` - the style for the current cursor position | |||
| To override one of those styles, change its entry in `ZSH_HIGHLIGHT_STYLES`, | |||
| for example in `~/.zshrc`: | |||
| ```zsh | |||
| ZSH_HIGHLIGHT_STYLES[cursor]='bg=blue' | |||
| ``` | |||
| The syntax for values is the same as the syntax of "types of highlighting" of | |||
| the zsh builtin `$zle_highlight` array, which is documented in [the `zshzle(1)` | |||
| manual page][zshzle-Character-Highlighting]. | |||
| [zshzle-Character-Highlighting]: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting | |||
| @ -1,24 +0,0 @@ | |||
| zsh-syntax-highlighting / highlighters / line | |||
| --------------------------------------------- | |||
| This is the `line` highlighter, that highlights the whole line. | |||
| ### How to tweak it | |||
| This highlighter defines the following styles: | |||
| * `line` - the style for the whole line | |||
| To override one of those styles, change its entry in `ZSH_HIGHLIGHT_STYLES`, | |||
| for example in `~/.zshrc`: | |||
| ```zsh | |||
| ZSH_HIGHLIGHT_STYLES[line]='bold' | |||
| ``` | |||
| The syntax for values is the same as the syntax of "types of highlighting" of | |||
| the zsh builtin `$zle_highlight` array, which is documented in [the `zshzle(1)` | |||
| manual page][zshzle-Character-Highlighting]. | |||
| [zshzle-Character-Highlighting]: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting | |||
| @ -1,121 +0,0 @@ | |||
| zsh-syntax-highlighting / highlighters / main | |||
| --------------------------------------------- | |||
| This is the `main` highlighter, that highlights: | |||
| * Commands | |||
| * Options | |||
| * Arguments | |||
| * Paths | |||
| * Strings | |||
| This highlighter is active by default. | |||
| ### How to tweak it | |||
| This highlighter defines the following styles: | |||
| * `unknown-token` - unknown tokens / errors | |||
| * `reserved-word` - shell reserved words (`if`, `for`) | |||
| * `alias` - aliases | |||
| * `suffix-alias` - suffix aliases (requires zsh 5.1.1 or newer) | |||
| * `global-alias` - global aliases | |||
| * `builtin` - shell builtin commands (`shift`, `pwd`, `zstyle`) | |||
| * `function` - function names | |||
| * `command` - command names | |||
| * `precommand` - precommand modifiers (e.g., `noglob`, `builtin`) | |||
| * `commandseparator` - command separation tokens (`;`, `&&`) | |||
| * `hashed-command` - hashed commands | |||
| * `autodirectory` - a directory name in command position when the `AUTO_CD` option is set | |||
| * `path` - existing filenames | |||
| * `path_pathseparator` - path separators in filenames (`/`); if unset, `path` is used (default) | |||
| * `path_prefix` - prefixes of existing filenames | |||
| * `path_prefix_pathseparator` - path separators in prefixes of existing filenames (`/`); if unset, `path_prefix` is used (default) | |||
| * `globbing` - globbing expressions (`*.txt`) | |||
| * `history-expansion` - history expansion expressions (`!foo` and `^foo^bar`) | |||
| * `command-substitution` - command substitutions (`$(echo foo)`) | |||
| * `command-substitution-unquoted` - an unquoted command substitution (`$(echo foo)`) | |||
| * `command-substitution-quoted` - a quoted command substitution (`"$(echo foo)"`) | |||
| * `command-substitution-delimiter` - command substitution delimiters (`$(` and `)`) | |||
| * `command-substitution-delimiter-unquoted` - an unquoted command substitution delimiters (`$(` and `)`) | |||
| * `command-substitution-delimiter-quoted` - a quoted command substitution delimiters (`"$(` and `)"`) | |||
| * `process-substitution` - process substitutions (`<(echo foo)`) | |||
| * `process-substitution-delimiter` - process substitution delimiters (`<(` and `)`) | |||
| * `arithmetic-expansion` - arithmetic expansion `$(( 42 ))`) | |||
| * `single-hyphen-option` - single-hyphen options (`-o`) | |||
| * `double-hyphen-option` - double-hyphen options (`--option`) | |||
| * `back-quoted-argument` - backtick command substitution (`` `foo` ``) | |||
| * `back-quoted-argument-unclosed` - unclosed backtick command substitution (`` `foo ``) | |||
| * `back-quoted-argument-delimiter` - backtick command substitution delimiters (`` ` ``) | |||
| * `single-quoted-argument` - single-quoted arguments (`` 'foo' ``) | |||
| * `single-quoted-argument-unclosed` - unclosed single-quoted arguments (`` 'foo ``) | |||
| * `double-quoted-argument` - double-quoted arguments (`` "foo" ``) | |||
| * `double-quoted-argument-unclosed` - unclosed double-quoted arguments (`` "foo ``) | |||
| * `dollar-quoted-argument` - dollar-quoted arguments (`` $'foo' ``) | |||
| * `dollar-quoted-argument-unclosed` - unclosed dollar-quoted arguments (`` $'foo ``) | |||
| * `rc-quote` - two single quotes inside single quotes when the `RC_QUOTES` option is set (`` 'foo''bar' ``) | |||
| * `dollar-double-quoted-argument` - parameter expansion inside double quotes (`$foo` inside `""`) | |||
| * `back-double-quoted-argument` - backslash escape sequences inside double-quoted arguments (`\"` in `"foo\"bar"`) | |||
| * `back-dollar-quoted-argument` - backslash escape sequences inside dollar-quoted arguments (`\x` in `$'\x48'`) | |||
| * `assign` - parameter assignments (`x=foo` and `x=( )`) | |||
| * `redirection` - redirection operators (`<`, `>`, etc) | |||
| * `comment` - comments, when `setopt INTERACTIVE_COMMENTS` is in effect (`echo # foo`) | |||
| * `comment` - elided parameters in command position (`$x ls` when `$x` is unset or empty) | |||
| * `named-fd` - named file descriptor (the `fd` in `echo foo {fd}>&2`) | |||
| * `numeric-fd` - numeric file descriptor (the `2` in `echo foo {fd}>&2`) | |||
| * `arg0` - a command word other than one of those enumerated above (other than a command, precommand, alias, function, or shell builtin command). | |||
| * `default` - everything else | |||
| To override one of those styles, change its entry in `ZSH_HIGHLIGHT_STYLES`, | |||
| for example in `~/.zshrc`: | |||
| ```zsh | |||
| # Declare the variable | |||
| typeset -A ZSH_HIGHLIGHT_STYLES | |||
| # To differentiate aliases from other command types | |||
| ZSH_HIGHLIGHT_STYLES[alias]='fg=magenta,bold' | |||
| # To have paths colored instead of underlined | |||
| ZSH_HIGHLIGHT_STYLES[path]='fg=cyan' | |||
| # To disable highlighting of globbing expressions | |||
| ZSH_HIGHLIGHT_STYLES[globbing]='none' | |||
| ``` | |||
| The syntax for values is the same as the syntax of "types of highlighting" of | |||
| the zsh builtin `$zle_highlight` array, which is documented in [the `zshzle(1)` | |||
| manual page][zshzle-Character-Highlighting]. | |||
| #### Parameters | |||
| To avoid partial path lookups on a path, add the path to the `ZSH_HIGHLIGHT_DIRS_BLACKLIST` array. | |||
| ```zsh | |||
| ZSH_HIGHLIGHT_DIRS_BLACKLIST+=(/mnt/slow_share) | |||
| ``` | |||
| ### Useless trivia | |||
| #### Forward compatibility. | |||
| zsh-syntax-highlighting attempts to be forward-compatible with zsh. | |||
| Specifically, we attempt to facilitate highlighting _command word_ types that | |||
| had not yet been invented when this version of zsh-syntax-highlighting was | |||
| released. | |||
| A _command word_ is something like a function name, external command name, et | |||
| cetera. (See | |||
| [Simple Commands & Pipelines in `zshmisc(1)`][zshmisc-Simple-Commands-And-Pipelines] | |||
| for a formal definition.) | |||
| If a new _kind_ of command word is ever added to zsh — something conceptually | |||
| different than "function" and "alias" and "external command" — then command words | |||
| of that (new) kind will be highlighted by the style `arg0_$kind`, | |||
| where `$kind` is the output of `type -w` on the new kind of command word. If that | |||
| style is not defined, then the style `arg0` will be used instead. | |||
| [zshmisc-Simple-Commands-And-Pipelines]: http://zsh.sourceforge.net/Doc/Release/Shell-Grammar.html#Simple-Commands-_0026-Pipelines | |||
| [zshzle-Character-Highlighting]: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting | |||
| @ -1,24 +0,0 @@ | |||
| zsh-syntax-highlighting / highlighters / pattern | |||
| ------------------------------------------------ | |||
| This is the `pattern` highlighter, that highlights user-defined patterns. | |||
| ### How to tweak it | |||
| To use this highlighter, associate patterns with styles in the | |||
| `ZSH_HIGHLIGHT_PATTERNS` associative array, for example in `~/.zshrc`: | |||
| ```zsh | |||
| # Declare the variable | |||
| typeset -A ZSH_HIGHLIGHT_PATTERNS | |||
| # To have commands starting with `rm -rf` in red: | |||
| ZSH_HIGHLIGHT_PATTERNS+=('rm -rf *' 'fg=white,bold,bg=red') | |||
| ``` | |||
| The syntax for values is the same as the syntax of "types of highlighting" of | |||
| the zsh builtin `$zle_highlight` array, which is documented in [the `zshzle(1)` | |||
| manual page][zshzle-Character-Highlighting]. | |||
| [zshzle-Character-Highlighting]: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting | |||
| @ -1,30 +0,0 @@ | |||
| zsh-syntax-highlighting / highlighters / regexp | |||
| ------------------------------------------------ | |||
| This is the `regexp` highlighter, that highlights user-defined regular | |||
| expressions. It's similar to the `pattern` highlighter, but allows more complex | |||
| patterns. | |||
| ### How to tweak it | |||
| To use this highlighter, associate regular expressions with styles in the | |||
| `ZSH_HIGHLIGHT_REGEXP` associative array, for example in `~/.zshrc`: | |||
| ```zsh | |||
| typeset -A ZSH_HIGHLIGHT_REGEXP | |||
| ZSH_HIGHLIGHT_REGEXP+=('\bsudo\b' fg=123,bold) | |||
| ``` | |||
| This will highlight "sudo" only as a complete word, i.e., "sudo cmd", but not | |||
| "sudoedit" | |||
| The syntax for values is the same as the syntax of "types of highlighting" of | |||
| the zsh builtin `$zle_highlight` array, which is documented in [the `zshzle(1)` | |||
| manual page][zshzle-Character-Highlighting]. | |||
| See also: [regular expressions tutorial][perlretut], zsh regexp operator `=~` | |||
| in [the `zshmisc(1)` manual page][zshmisc-Conditional-Expressions] | |||
| [zshzle-Character-Highlighting]: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting | |||
| [perlretut]: http://perldoc.perl.org/perlretut.html | |||
| [zshmisc-Conditional-Expressions]: http://zsh.sourceforge.net/Doc/Release/Conditional-Expressions.html#Conditional-Expressions | |||
| @ -1,25 +0,0 @@ | |||
| zsh-syntax-highlighting / highlighters / root | |||
| --------------------------------------------- | |||
| This is the `root` highlighter, that highlights the whole line if the current | |||
| user is root. | |||
| ### How to tweak it | |||
| This highlighter defines the following styles: | |||
| * `root` - the style for the whole line if the current user is root. | |||
| To override one of those styles, change its entry in `ZSH_HIGHLIGHT_STYLES`, | |||
| for example in `~/.zshrc`: | |||
| ```zsh | |||
| ZSH_HIGHLIGHT_STYLES[root]='bg=red' | |||
| ``` | |||
| The syntax for values is the same as the syntax of "types of highlighting" of | |||
| the zsh builtin `$zle_highlight` array, which is documented in [the `zshzle(1)` | |||
| manual page][zshzle-Character-Highlighting]. | |||
| [zshzle-Character-Highlighting]: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting | |||
| @ -0,0 +1,77 @@ | |||
| # vim:ft=zsh:sw=4:sts=4 | |||
| # | |||
| # $1 - PREBUFFER | |||
| # $2 - BUFFER | |||
| # | |||
| function -fast-highlight-string-process { | |||
| emulate -LR zsh | |||
| setopt extendedglob warncreateglobal typesetsilent | |||
| local -A pos_to_level level_to_pos pair_map final_pairs | |||
| local input=$1$2 _mybuf=$1$2 __style __quoting | |||
| integer __idx=0 __pair_idx __level=0 __start __end | |||
| local -a match mbegin mend | |||
| pair_map=( "(" ")" "{" "}" "[" "]" ) | |||
| while [[ $_mybuf = (#b)([^"{}()[]\\\"'"]#)((["({[]})\"'"])|[\\](*))(*) ]]; do | |||
| if [[ -n ${match[4]} ]] { | |||
| __idx+=${mbegin[2]} | |||
| [[ $__quoting = \' ]] && _mybuf=${match[4]} || { _mybuf=${match[4]:1}; (( ++ __idx )); } | |||
| } else { | |||
| __idx+=${mbegin[2]} | |||
| [[ -z $__quoting && -z ${_FAST_COMPLEX_BRACKETS[(r)$((__idx-${#PREBUFFER}-1))]} ]] && { | |||
| if [[ ${match[2]} = ["({["] ]]; then | |||
| pos_to_level[$__idx]=$(( ++__level )) | |||
| level_to_pos[$__level]=$__idx | |||
| elif [[ ${match[2]} = ["]})"] ]]; then | |||
| if (( __level > 0 )); then | |||
| __pair_idx=${level_to_pos[$__level]} | |||
| pos_to_level[$__idx]=$(( __level -- )) | |||
| [[ ${pair_map[${input[__pair_idx]}]} = ${input[__idx]} ]] && { | |||
| final_pairs[$__idx]=$__pair_idx | |||
| final_pairs[$__pair_idx]=$__idx | |||
| } | |||
| else | |||
| pos_to_level[$__idx]=-1 | |||
| fi | |||
| fi | |||
| } | |||
| if [[ ${match[2]} = \" && $__quoting != \' ]] { | |||
| [[ $__quoting = '"' ]] && __quoting="" || __quoting='"'; | |||
| } | |||
| if [[ ${match[2]} = \' && $__quoting != \" ]] { | |||
| if [[ $__quoting = ("'"|"$'") ]] { | |||
| __quoting="" | |||
| } else { | |||
| if [[ $match[1] = *\$ ]] { | |||
| __quoting="\$'"; | |||
| } else { | |||
| __quoting="'"; | |||
| } | |||
| } | |||
| } | |||
| _mybuf=${match[5]} | |||
| } | |||
| done | |||
| for __idx in ${(k)pos_to_level}; do | |||
| (( ${+final_pairs[$__idx]} )) && __style=${FAST_THEME_NAME}bracket-level-$(( ( (pos_to_level[$__idx]-1) % 3 ) + 1 )) || __style=${FAST_THEME_NAME}unknown-token | |||
| (( __start=__idx-${#PREBUFFER}-1, __end=__idx-${#PREBUFFER}, __start >= 0 )) && \ | |||
| reply+=("$__start $__end ${FAST_HIGHLIGHT_STYLES[$__style]}") | |||
| done | |||
| # If cursor is on a bracket, then highlight corresponding bracket, if any. | |||
| if [[ $WIDGET != zle-line-finish ]]; then | |||
| __idx=$(( CURSOR + 1 )) | |||
| if (( ${+pos_to_level[$__idx]} )) && (( ${+final_pairs[$__idx]} )); then | |||
| (( __start=final_pairs[$__idx]-${#PREBUFFER}-1, __end=final_pairs[$__idx]-${#PREBUFFER}, __start >= 0 )) && \ | |||
| reply+=("$__start $__end ${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}paired-bracket]}") && \ | |||
| reply+=("$CURSOR $__idx ${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}paired-bracket]}") | |||
| fi | |||
| fi | |||
| return 0 | |||
| } | |||
| @ -0,0 +1,384 @@ | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Copyright (c) 2010-2016 zsh-syntax-highlighting contributors | |||
| # Copyright (c) 2017-2019 Sebastian Gniazdowski (modifications) | |||
| # All rights reserved. | |||
| # | |||
| # Redistribution and use in source and binary forms, with or without modification, are permitted | |||
| # provided that the following conditions are met: | |||
| # | |||
| # * Redistributions of source code must retain the above copyright notice, this list of conditions | |||
| # and the following disclaimer. | |||
| # * Redistributions in binary form must reproduce the above copyright notice, this list of | |||
| # conditions and the following disclaimer in the documentation and/or other materials provided | |||
| # with the distribution. | |||
| # * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors | |||
| # may be used to endorse or promote products derived from this software without specific prior | |||
| # written permission. | |||
| # | |||
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR | |||
| # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | |||
| # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | |||
| # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||
| # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | |||
| # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | |||
| # vim: ft=zsh sw=2 ts=2 et | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Standarized way of handling finding plugin dir, | |||
| # regardless of functionargzero and posixargzero, | |||
| # and with an option for a plugin manager to alter | |||
| # the plugin directory (i.e. set ZERO parameter) | |||
| # http://zdharma.org/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html | |||
| 0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}" | |||
| 0="${${(M)0:#/*}:-$PWD/$0}" | |||
| typeset -g FAST_HIGHLIGHT_VERSION=1.55 | |||
| typeset -g FAST_BASE_DIR="${0:h}" | |||
| typeset -ga _FAST_MAIN_CACHE | |||
| # Holds list of indices pointing at brackets that | |||
| # are complex, i.e. e.g. part of "[[" in [[ ... ]] | |||
| typeset -ga _FAST_COMPLEX_BRACKETS | |||
| typeset -g FAST_WORK_DIR=${FAST_WORK_DIR:-${XDG_CACHE_HOME:-~/.cache}/fast-syntax-highlighting} | |||
| : ${FAST_WORK_DIR:=$FAST_BASE_DIR} | |||
| # Expand any tilde in the (supposed) path. | |||
| FAST_WORK_DIR=${~FAST_WORK_DIR} | |||
| # Last (currently, possibly) loaded plugin isn't "fast-syntax-highlighting"? | |||
| # And FPATH isn't containing plugin dir? | |||
| if [[ ${zsh_loaded_plugins[-1]} != */fast-syntax-highlighting && -z ${fpath[(r)${0:h}]} ]] | |||
| then | |||
| fpath+=( "${0:h}" ) | |||
| fi | |||
| if [[ ! -w $FAST_WORK_DIR ]]; then | |||
| FAST_WORK_DIR="${XDG_CACHE_HOME:-$HOME/.cache}/fsh" | |||
| command mkdir -p "$FAST_WORK_DIR" | |||
| fi | |||
| # Invokes each highlighter that needs updating. | |||
| # This function is supposed to be called whenever the ZLE state changes. | |||
| _zsh_highlight() | |||
| { | |||
| # Store the previous command return code to restore it whatever happens. | |||
| local ret=$? | |||
| # 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?'. | |||
| if [[ $WIDGET == zle-isearch-update ]] && ! (( $+ISEARCHMATCH_ACTIVE )); then | |||
| region_highlight=() | |||
| return $ret | |||
| fi | |||
| emulate -LR zsh | |||
| setopt extendedglob warncreateglobal typesetsilent noshortloops | |||
| local REPLY # don't leak $REPLY into global scope | |||
| local -a reply | |||
| # Do not highlight if there are more than 300 chars in the buffer. It's most | |||
| # likely a pasted command or a huge list of files in that case.. | |||
| [[ -n ${ZSH_HIGHLIGHT_MAXLENGTH:-} ]] && [[ $#BUFFER -gt $ZSH_HIGHLIGHT_MAXLENGTH ]] && return $ret | |||
| # Do not highlight if there are pending inputs (copy/paste). | |||
| [[ $PENDING -gt 0 ]] && return $ret | |||
| # Reset region highlight to build it from scratch | |||
| # may need to remove path_prefix highlighting when the line ends | |||
| if [[ $WIDGET == zle-line-finish ]] || _zsh_highlight_buffer_modified; then | |||
| -fast-highlight-init | |||
| -fast-highlight-process "$PREBUFFER" "$BUFFER" 0 | |||
| (( FAST_HIGHLIGHT[use_brackets] )) && { | |||
| _FAST_MAIN_CACHE=( $reply ) | |||
| -fast-highlight-string-process "$PREBUFFER" "$BUFFER" | |||
| } | |||
| region_highlight=( $reply ) | |||
| else | |||
| local char="${BUFFER[CURSOR+1]}" | |||
| if [[ "$char" = ["{([])}"] || "${FAST_HIGHLIGHT[prev_char]}" = ["{([])}"] ]]; then | |||
| FAST_HIGHLIGHT[prev_char]="$char" | |||
| (( FAST_HIGHLIGHT[use_brackets] )) && { | |||
| reply=( $_FAST_MAIN_CACHE ) | |||
| -fast-highlight-string-process "$PREBUFFER" "$BUFFER" | |||
| region_highlight=( $reply ) | |||
| } | |||
| fi | |||
| fi | |||
| { | |||
| local cache_place | |||
| local -a region_highlight_copy | |||
| # Re-apply zle_highlight settings | |||
| # region | |||
| if (( REGION_ACTIVE == 1 )); then | |||
| _zsh_highlight_apply_zle_highlight region standout "$MARK" "$CURSOR" | |||
| elif (( REGION_ACTIVE == 2 )); then | |||
| () { | |||
| local needle=$'\n' | |||
| integer min max | |||
| if (( MARK > CURSOR )) ; then | |||
| min=$CURSOR max=$(( MARK + 1 )) | |||
| else | |||
| min=$MARK max=$CURSOR | |||
| fi | |||
| (( min = ${${BUFFER[1,$min]}[(I)$needle]} )) | |||
| (( max += ${${BUFFER:($max-1)}[(i)$needle]} - 1 )) | |||
| _zsh_highlight_apply_zle_highlight region standout "$min" "$max" | |||
| } | |||
| fi | |||
| # yank / paste (zsh-5.1.1 and newer) | |||
| (( $+YANK_ACTIVE )) && (( YANK_ACTIVE )) && _zsh_highlight_apply_zle_highlight paste standout "$YANK_START" "$YANK_END" | |||
| # isearch | |||
| (( $+ISEARCHMATCH_ACTIVE )) && (( ISEARCHMATCH_ACTIVE )) && _zsh_highlight_apply_zle_highlight isearch underline "$ISEARCHMATCH_START" "$ISEARCHMATCH_END" | |||
| # suffix | |||
| (( $+SUFFIX_ACTIVE )) && (( SUFFIX_ACTIVE )) && _zsh_highlight_apply_zle_highlight suffix bold "$SUFFIX_START" "$SUFFIX_END" | |||
| return $ret | |||
| } always { | |||
| typeset -g _ZSH_HIGHLIGHT_PRIOR_BUFFER="$BUFFER" | |||
| typeset -g _ZSH_HIGHLIGHT_PRIOR_RACTIVE="$REGION_ACTIVE" | |||
| typeset -gi _ZSH_HIGHLIGHT_PRIOR_CURSOR=$CURSOR | |||
| } | |||
| } | |||
| # Apply highlighting based on entries in the zle_highlight array. | |||
| # This function takes four arguments: | |||
| # 1. The exact entry (no patterns) in the zle_highlight array: | |||
| # region, paste, isearch, or suffix | |||
| # 2. The default highlighting that should be applied if the entry is unset | |||
| # 3. and 4. Two integer values describing the beginning and end of the | |||
| # range. The order does not matter. | |||
| _zsh_highlight_apply_zle_highlight() { | |||
| local entry="$1" default="$2" | |||
| integer first="$3" second="$4" | |||
| # read the relevant entry from zle_highlight | |||
| local region="${zle_highlight[(r)${entry}:*]}" | |||
| if [[ -z "$region" ]]; then | |||
| # entry not specified at all, use default value | |||
| region=$default | |||
| else | |||
| # strip prefix | |||
| region="${region#${entry}:}" | |||
| # no highlighting when set to the empty string or to 'none' | |||
| if [[ -z "$region" ]] || [[ "$region" == none ]]; then | |||
| return | |||
| fi | |||
| fi | |||
| integer start end | |||
| if (( first < second )); then | |||
| start=$first end=$second | |||
| else | |||
| start=$second end=$first | |||
| fi | |||
| region_highlight+=("$start $end $region") | |||
| } | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # API/utility functions for highlighters | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Whether the command line buffer has been modified or not. | |||
| # | |||
| # Returns 0 if the buffer has changed since _zsh_highlight was last called. | |||
| _zsh_highlight_buffer_modified() | |||
| { | |||
| [[ "${_ZSH_HIGHLIGHT_PRIOR_BUFFER:-}" != "$BUFFER" ]] || [[ "$REGION_ACTIVE" != "$_ZSH_HIGHLIGHT_PRIOR_RACTIVE" ]] || { _zsh_highlight_cursor_moved && [[ "$REGION_ACTIVE" = 1 || "$REGION_ACTIVE" = 2 ]] } | |||
| } | |||
| # Whether the cursor has moved or not. | |||
| # | |||
| # Returns 0 if the cursor has moved since _zsh_highlight was last called. | |||
| _zsh_highlight_cursor_moved() | |||
| { | |||
| [[ -n $CURSOR ]] && [[ -n ${_ZSH_HIGHLIGHT_PRIOR_CURSOR-} ]] && (($_ZSH_HIGHLIGHT_PRIOR_CURSOR != $CURSOR)) | |||
| } | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Setup functions | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Helper for _zsh_highlight_bind_widgets | |||
| # $1 is name of widget to call | |||
| _zsh_highlight_call_widget() | |||
| { | |||
| integer ret | |||
| builtin zle "$@" | |||
| ret=$? | |||
| _zsh_highlight | |||
| return $ret | |||
| } | |||
| # Rebind all ZLE widgets to make them invoke _zsh_highlights. | |||
| _zsh_highlight_bind_widgets() | |||
| { | |||
| setopt localoptions noksharrays | |||
| local -F2 SECONDS | |||
| local prefix=orig-s${SECONDS/./}-r$(( RANDOM % 1000 )) # 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|zle-line-pre-redraw|zle-keymap-select)}) | |||
| # Always wrap special zle-line-finish widget. This is needed to decide if the | |||
| # current line ends and special highlighting logic needs to be applied. | |||
| # E.g. remove cursor imprint, don't highlight partial paths, ... | |||
| widgets_to_bind+=(zle-line-finish) | |||
| # Always wrap special zle-isearch-update widget to be notified of updates in isearch. | |||
| # This is needed because we need to disable highlighting in that case. | |||
| widgets_to_bind+=(zle-isearch-update) | |||
| local cur_widget | |||
| for cur_widget in $widgets_to_bind; do | |||
| case $widgets[$cur_widget] in | |||
| # Already rebound event: do nothing. | |||
| user:_zsh_highlight_widget_*);; | |||
| # The "eval"'s are required to make $cur_widget a closure: the value of the parameter at function | |||
| # definition time is used. | |||
| # | |||
| # We can't use ${0/_zsh_highlight_widget_} because these widgets are always invoked with | |||
| # NO_function_argzero, regardless of the option's setting here. | |||
| # User defined widget: override and rebind old one with prefix "orig-". | |||
| user:*) zle -N -- $prefix-$cur_widget ${widgets[$cur_widget]#*:} | |||
| eval "_zsh_highlight_widget_${(q)prefix}-${(q)cur_widget}() { _zsh_highlight_call_widget ${(q)prefix}-${(q)cur_widget} -- \"\$@\" }" | |||
| zle -N -- $cur_widget _zsh_highlight_widget_$prefix-$cur_widget;; | |||
| # Completion widget: override and rebind old one with prefix "orig-". | |||
| completion:*) zle -C $prefix-$cur_widget ${${(s.:.)widgets[$cur_widget]}[2,3]} | |||
| eval "_zsh_highlight_widget_${(q)prefix}-${(q)cur_widget}() { _zsh_highlight_call_widget ${(q)prefix}-${(q)cur_widget} -- \"\$@\" }" | |||
| zle -N -- $cur_widget _zsh_highlight_widget_$prefix-$cur_widget;; | |||
| # Builtin widget: override and make it call the builtin ".widget". | |||
| builtin) eval "_zsh_highlight_widget_${(q)prefix}-${(q)cur_widget}() { _zsh_highlight_call_widget .${(q)cur_widget} -- \"\$@\" }" | |||
| zle -N -- $cur_widget _zsh_highlight_widget_$prefix-$cur_widget;; | |||
| # Incomplete or nonexistent widget: Bind to z-sy-h directly. | |||
| *) | |||
| if [[ $cur_widget == zle-* ]] && [[ -z $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}" | |||
| fi | |||
| esac | |||
| done | |||
| } | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Setup | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Try binding widgets. | |||
| _zsh_highlight_bind_widgets || { | |||
| print -r -- >&2 'zsh-syntax-highlighting: failed binding ZLE widgets, exiting.' | |||
| return 1 | |||
| } | |||
| # Reset scratch variables when commandline is done. | |||
| _zsh_highlight_preexec_hook() | |||
| { | |||
| typeset -g _ZSH_HIGHLIGHT_PRIOR_BUFFER= | |||
| typeset -gi _ZSH_HIGHLIGHT_PRIOR_CURSOR=0 | |||
| typeset -ga _FAST_MAIN_CACHE | |||
| _FAST_MAIN_CACHE=() | |||
| } | |||
| autoload -Uz add-zsh-hook | |||
| add-zsh-hook preexec _zsh_highlight_preexec_hook 2>/dev/null || { | |||
| print -r -- >&2 'zsh-syntax-highlighting: failed loading add-zsh-hook.' | |||
| } | |||
| /fshdbg() { | |||
| print -r -- "$@" >>! /tmp/reply | |||
| } | |||
| ZSH_HIGHLIGHT_MAXLENGTH=10000 | |||
| # Load zsh/parameter module if available | |||
| zmodload zsh/parameter 2>/dev/null | |||
| zmodload zsh/system 2>/dev/null | |||
| autoload -Uz -- is-at-least fast-theme .fast-read-ini-file .fast-run-git-command \ | |||
| .fast-make-targets .fast-run-command .fast-zts-read-all | |||
| autoload -Uz -- →chroma/-git.ch →chroma/-hub.ch →chroma/-lab.ch →chroma/-example.ch \ | |||
| →chroma/-grep.ch →chroma/-perl.ch →chroma/-make.ch →chroma/-awk.ch \ | |||
| →chroma/-vim.ch →chroma/-source.ch →chroma/-sh.ch →chroma/-docker.ch \ | |||
| →chroma/-autoload.ch →chroma/-ssh.ch →chroma/-scp.ch →chroma/-which.ch \ | |||
| →chroma/-printf.ch →chroma/-ruby.ch →chroma/-whatis.ch →chroma/-alias.ch \ | |||
| →chroma/-subcommand.ch →chroma/-autorandr.ch →chroma/-nmcli.ch \ | |||
| →chroma/-fast-theme.ch →chroma/-node.ch →chroma/-fpath_peq.ch \ | |||
| →chroma/-precommand.ch →chroma/-subversion.ch →chroma/-ionice.ch \ | |||
| →chroma/-nice.ch →chroma/main-chroma.ch →chroma/-ogit.ch →chroma/-zinit.ch | |||
| source "${0:h}/fast-highlight" | |||
| source "${0:h}/fast-string-highlight" | |||
| local __fsyh_theme | |||
| zstyle -s :plugin:fast-syntax-highlighting theme __fsyh_theme | |||
| [[ ( "${+termcap}" != 1 || "${termcap[Co]}" != <-> || "${termcap[Co]}" -lt "256" ) && "$__fsyh_theme" = (default|) ]] && { | |||
| FAST_HIGHLIGHT_STYLES[defaultvariable]="none" | |||
| FAST_HIGHLIGHT_STYLES[defaultglobbing-ext]="fg=blue,bold" | |||
| FAST_HIGHLIGHT_STYLES[defaulthere-string-text]="bg=blue" | |||
| FAST_HIGHLIGHT_STYLES[defaulthere-string-var]="fg=cyan,bg=blue" | |||
| FAST_HIGHLIGHT_STYLES[defaultcorrect-subtle]="bg=blue" | |||
| FAST_HIGHLIGHT_STYLES[defaultsubtle-bg]="bg=blue" | |||
| [[ "${FAST_HIGHLIGHT_STYLES[variable]}" = "fg=113" ]] && FAST_HIGHLIGHT_STYLES[variable]="none" | |||
| [[ "${FAST_HIGHLIGHT_STYLES[globbing-ext]}" = "fg=13" ]] && FAST_HIGHLIGHT_STYLES[globbing-ext]="fg=blue,bold" | |||
| [[ "${FAST_HIGHLIGHT_STYLES[here-string-text]}" = "bg=18" ]] && FAST_HIGHLIGHT_STYLES[here-string-text]="bg=blue" | |||
| [[ "${FAST_HIGHLIGHT_STYLES[here-string-var]}" = "fg=cyan,bg=18" ]] && FAST_HIGHLIGHT_STYLES[here-string-var]="fg=cyan,bg=blue" | |||
| [[ "${FAST_HIGHLIGHT_STYLES[correct-subtle]}" = "fg=12" ]] && FAST_HIGHLIGHT_STYLES[correct-subtle]="bg=blue" | |||
| [[ "${FAST_HIGHLIGHT_STYLES[subtle-bg]}" = "bg=18" ]] && FAST_HIGHLIGHT_STYLES[subtle-bg]="bg=blue" | |||
| } | |||
| unset __fsyh_theme | |||
| alias fsh-alias=fast-theme | |||
| -fast-highlight-fill-option-variables | |||
| if [[ ! -e $FAST_WORK_DIR/secondary_theme.zsh ]] { | |||
| if { type curl &>/dev/null } { | |||
| curl -fsSL -o "$FAST_WORK_DIR/secondary_theme.zsh" \ | |||
| https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/share/free_theme.zsh \ | |||
| &>/dev/null | |||
| } elif { type wget &>/dev/null } { | |||
| wget -O "$FAST_WORK_DIR/secondary_theme.zsh" \ | |||
| https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/share/free_theme.zsh \ | |||
| &>/dev/null | |||
| } | |||
| touch "$FAST_WORK_DIR/secondary_theme.zsh" | |||
| } | |||
| if [[ $(uname -a) = (#i)*darwin* ]] { | |||
| typeset -gA FAST_HIGHLIGHT | |||
| FAST_HIGHLIGHT[chroma-man]= | |||
| } | |||
| [[ $COLORTERM == (24bit|truecolor) || ${terminfo[colors]} -eq 16777216 ]] || zmodload zsh/nearcolor &>/dev/null | |||
| @ -0,0 +1,385 @@ | |||
| # -*- mode: sh; sh-indentation: 4; indent-tabs-mode: nil; sh-basic-offset: 4; -*- | |||
| # Copyright (c) 2018 Sebastian Gniazdowski | |||
| # Copyright (c) 2018, 2019 Philippe Troin (F-i-f on GitHub) | |||
| # | |||
| # Theme support using ini-files. | |||
| # | |||
| zmodload zsh/zutil 2>/dev/null | |||
| emulate -LR zsh | |||
| setopt extendedglob typesetsilent warncreateglobal | |||
| autoload colors; colors | |||
| typeset -g FAST_WORK_DIR | |||
| : ${FAST_WORK_DIR:=$FAST_BASE_DIR} | |||
| FAST_WORK_DIR=${~FAST_WORK_DIR} | |||
| local -A map | |||
| map=( "XDG:" "${XDG_CONFIG_HOME:-$HOME/.config}/fsh/" | |||
| "LOCAL:" "/usr/local/share/fsh/" | |||
| "HOME:" "$HOME/.fsh/" | |||
| "OPT:" "/opt/local/share/fsh/" | |||
| ) | |||
| FAST_WORK_DIR=${${FAST_WORK_DIR/(#m)(#s)(XDG|LOCAL|HOME|OPT):(#c0,1)/${map[${MATCH%:}:]}}%/} | |||
| local OPT_HELP OPT_VERBOSE OPT_QUIET OPT_RESET OPT_LIST OPT_TEST OPT_SECONDARY OPT_SHOW OPT_COPY OPT_OV_RESET | |||
| local OPT_PALETTE OPT_CDWD OPT_XCHG OPT_OV_XCHG | |||
| local -A opthash | |||
| zparseopts -E -D -A opthash h -help v -verbose q -quiet r -reset l -list t -test -secondary \ | |||
| s -show -copy-shipped-theme: R -ov-reset p -palette w -workdir \ | |||
| x -xchg y -ov-xchg || \ | |||
| { echo "Improper options given, see help (-h/--help)"; return 1; } | |||
| (( ${+opthash[-h]} + ${+opthash[--help]} )) && OPT_HELP="-h" | |||
| (( ${+opthash[-v]} + ${+opthash[--verbose]} )) && OPT_VERBOSE="-v" | |||
| (( ${+opthash[-q]} + ${+opthash[--quiet]} )) && OPT_QUIET="-q" | |||
| (( ${+opthash[-r]} + ${+opthash[--reset]} )) && OPT_RESET="-r" | |||
| (( ${+opthash[-l]} + ${+opthash[--list]} )) && OPT_LIST="-l" | |||
| (( ${+opthash[-t]} + ${+opthash[--test]} )) && OPT_TEST="-t" | |||
| (( ${+opthash[--secondary]} )) && OPT_SECONDARY="--secondary" | |||
| (( ${+opthash[-s]} + ${+opthash[--show]} )) && OPT_SHOW="-s" | |||
| (( ${+opthash[--copy-shipped-theme]} )) && OPT_COPY="${opthash[--copy-shipped-theme]}" | |||
| (( ${+opthash[-R]} + ${+opthash[--ov-reset]} )) && OPT_OV_RESET="-R" | |||
| (( ${+opthash[-p]} + ${+opthash[--palette]} )) && OPT_PALETTE="-p" | |||
| (( ${+opthash[-w]} + ${+opthash[--workdir]} )) && OPT_CDWD="-w" | |||
| (( ${+opthash[-x]} + ${+opthash[--xchg]} )) && OPT_XCHG="-x" | |||
| (( ${+opthash[-y]} + ${+opthash[--ov-xchg]} )) && OPT_OV_XCHG="-y" | |||
| local -a match mbegin mend | |||
| local MATCH; integer MBEGIN MEND | |||
| [[ -n "$OPT_CDWD" ]] && { | |||
| builtin cd $FAST_WORK_DIR | |||
| return 0 | |||
| } | |||
| [[ -n "$OPT_PALETTE" ]] && { | |||
| local n | |||
| local -a __colors | |||
| for n in {000..255} | |||
| do | |||
| __colors+=("%F{$n}$n%f") | |||
| done | |||
| print -cP $__colors | |||
| return | |||
| } | |||
| [[ -n "$OPT_SHOW" ]] && { | |||
| print -r -- "Currently active theme: ${fg_bold[yellow]}$FAST_THEME_NAME$reset_color" | |||
| ( source "$FAST_WORK_DIR"/current_theme.zsh 2>/dev/null && print "Main theme (loaded at startup of a session): ${fg_bold[yellow]}$FAST_THEME_NAME$reset_color" || print "No main theme is set"; ) | |||
| return 0 | |||
| } | |||
| [[ -n "$OPT_COPY" ]] && { | |||
| [[ ! -f "$FAST_BASE_DIR"/themes/"${OPT_COPY%.ini}.ini" ]] && { print "Theme \`$OPT_COPY' doesn't exist in FSH plugin dir ($FAST_BASE_DIR/themes)"; return 1; } | |||
| [[ ! -r "$FAST_BASE_DIR"/themes/"${OPT_COPY%.ini}.ini" ]] && { print "Theme \`$OPT_COPY' isn't readable in FSH plugin dir ($FAST_BASE_DIR/themes)"; return 1; } | |||
| [[ -n "$1" ]] && { | |||
| [[ ! -e "$1" && ! -e ${1:h} ]] && { print "Destination path doesn't exist, aborting"; return 1; } | |||
| } | |||
| command cp -vf "$FAST_BASE_DIR"/themes/"${OPT_COPY%.ini}.ini" "${${1:-.}%.ini}.ini" || return 1 | |||
| return 0 | |||
| } | |||
| [[ -n "$OPT_RESET" ]] && { command rm -f "$FAST_WORK_DIR"/{current_theme.zsh,secondary_theme.zsh}; [[ -z "$OPT_QUIET" ]] && print "Reset done (no theme is now set, restart is required)"; return 0; } | |||
| [[ -n "$OPT_OV_RESET" ]] && { command rm -f "$FAST_WORK_DIR"/theme_overlay.zsh; [[ -z "$OPT_QUIET" ]] && print "Overlay-reset done, it is inactive (restart is required)"; return 0; } | |||
| [[ -n "$OPT_LIST" ]] && { | |||
| [[ -z "$OPT_QUIET" ]] && print -r -- "Available themes:" | |||
| print -rl -- "$FAST_BASE_DIR"/themes/*.ini(:t:r) | |||
| return 0 | |||
| } | |||
| [[ -n "$OPT_HELP" ]] && { | |||
| print -r -- "Usage: fast-theme [-h/--help] [-v/--verbose] [-q/--quiet] [-t/--test] <theme-name|theme-path>" | |||
| print -r -- " fast-theme [-r/--reset] [-l/--list] [-s/--show] [-p/--palette] [-w/--workdir]" | |||
| print -r -- " fast-theme --copy-shipped-theme {theme-name} [destination-path]" | |||
| print -r -- "" | |||
| print -r -- "Default action (after providing <theme-name> or <theme-path>) is to switch" | |||
| print -r -- "current session and any future sessions to the new theme. Using <theme-path>," | |||
| print -r -- "i.e.: a path to an ini file means using custom, own theme. The path can use an" | |||
| print -r -- "\"XDG:\" shorthand (e.g.: \"XDG:mytheme\") that will point to ~/.config/fsh/<theme>.ini" | |||
| print -r -- "(or \$XDG_CONFIG_HOME/fsh/<theme>.ini in general if the variable is set in the" | |||
| print -r -- "environment). If the INI file pointed in the path is \"*overlay*\", then it is" | |||
| print -r -- "not a full theme, but an additional theme-snippet that overwrites only selected" | |||
| print -r -- "styles of the main theme." | |||
| print -r -- "" | |||
| print -r -- "Other path-shorthands:" | |||
| print -r -- "LOCAL: = /usr/local/share/fsh/" | |||
| print -r -- "HOME: = $HOME/.fsh/" | |||
| print -r -- "OPT: = /opt/local/share/fsh/" | |||
| print -r -- "" | |||
| print -r -- "-r/--reset - unset any theme, use default highlighting (requires restart)" | |||
| print -r -- "-R/--ov-reset - unset overlay, use styles only from main-theme (requires restart)" | |||
| print -r -- "-l/--list - list names of available themes" | |||
| print -r -- "-t/--test - show test block of code after switching theme" | |||
| print -r -- "-s/--show - get and display the theme currently being set" | |||
| print -r -- "-p/--palette - just print all 256 colors and exit (useful when creating a theme)" | |||
| print -r -- "-w/--workdir - cd into \$FAST_WORK_DIR (if not set, then into the plugin directory)" | |||
| print -r -- "-v/--verbose - more messages during operation" | |||
| print -r -- "-q/--quiet - no default messages" | |||
| print -r -- "" | |||
| print -r -- "The option --copy-shipped-theme allows easy copying of one of the 6 shipped" | |||
| print -r -- "themes into given destination path. Normal use means changing directory to" | |||
| print -r -- "e.g.: ~/.config/fsh, and then issuing e.g.: \`fast-theme --copy-shipped-theme" | |||
| print -r -- "clean mytheme', to obtain a template for own new theme." | |||
| return 0 | |||
| } | |||
| [[ -z "$1" ]] && { print -u2 "Provide a theme (its name or path to its file) to switch to, aborting (see -h/--help)"; return 1; } | |||
| # FAST_HIGHLIGHT_STYLES key onto ini-file key | |||
| map=( | |||
| default "-" | |||
| unknown-token "-" | |||
| reserved-word "-" | |||
| subcommand "- reserved-word" | |||
| alias "- command builtin" | |||
| suffix-alias "- alias command builtin" | |||
| builtin "-" | |||
| function "- builtin command" | |||
| command "-" | |||
| precommand "- command" | |||
| commandseparator "-" | |||
| hashed-command "- command" | |||
| path "-" | |||
| path_pathseparator "pathseparator" | |||
| globbing "- back-or-dollar-double-quoted-argument" # fallback: variable in string "text $var text" | |||
| globbing-ext "- double-quoted-argument" # fallback: the string "abc..." | |||
| history-expansion "-" | |||
| single-hyphen-option "- single-quoted-argument" | |||
| double-hyphen-option "- double-quoted-argument" | |||
| back-quoted-argument "-" | |||
| single-quoted-argument "-" | |||
| double-quoted-argument "-" | |||
| dollar-quoted-argument "-" | |||
| back-or-dollar-double-quoted-argument "- back-dollar-quoted-argument" | |||
| back-dollar-quoted-argument "- back-or-dollar-double-quoted-argument" | |||
| assign "- reserved-word" | |||
| redirection "- reserved-word" | |||
| comment "-" | |||
| variable "-" | |||
| mathvar "- forvar variable" | |||
| mathnum "- fornum" | |||
| matherr "- incorrect-subtle" | |||
| assign-array-bracket "-" | |||
| for-loop-variable "forvar mathvar variable" | |||
| for-loop-number "fornum mathnum" | |||
| for-loop-operator "foroper reserved-word" | |||
| for-loop-separator "forsep commandseparator" | |||
| exec-descriptor "- reserved-word" | |||
| here-string-tri "-" | |||
| here-string-text "- subtle-bg" | |||
| here-string-var "- back-or-dollar-double-quoted-argument" | |||
| secondary "-" | |||
| recursive-base "- default" | |||
| case-input "- variable" | |||
| case-parentheses "- reserved-word" | |||
| case-condition "- correct-subtle" | |||
| correct-subtle "-" | |||
| incorrect-subtle "-" | |||
| subtle-separator "- commandseparator" | |||
| subtle-bg "- correct-subtle" | |||
| path-to-dir "- path" | |||
| paired-bracket "- subtle-bg correct-subtle" | |||
| bracket-level-1 "-" | |||
| bracket-level-2 "-" | |||
| bracket-level-3 "-" | |||
| global-alias "- alias suffix-alias" | |||
| single-sq-bracket "-" | |||
| double-sq-bracket "-" | |||
| double-paren "-" | |||
| optarg-string "- double-quoted-argument" | |||
| optarg-number "- mathnum" | |||
| ) | |||
| # In which order to generate entries | |||
| local -a order | |||
| order=( | |||
| default unknown-token reserved-word alias suffix-alias builtin function command precommand | |||
| commandseparator hashed-command path path_pathseparator globbing globbing-ext history-expansion | |||
| single-hyphen-option double-hyphen-option back-quoted-argument single-quoted-argument | |||
| double-quoted-argument dollar-quoted-argument back-or-dollar-double-quoted-argument | |||
| back-dollar-quoted-argument assign redirection comment variable mathvar | |||
| mathnum matherr assign-array-bracket for-loop-variable for-loop-number for-loop-operator | |||
| for-loop-separator exec-descriptor here-string-tri here-string-text here-string-var secondary | |||
| case-input case-parentheses case-condition correct-subtle incorrect-subtle subtle-separator subtle-bg | |||
| path-to-dir paired-bracket bracket-level-1 bracket-level-2 bracket-level-3 | |||
| global-alias subcommand single-sq-bracket double-sq-bracket double-paren | |||
| optarg-string optarg-number recursive-base | |||
| ) | |||
| [[ -n "$OPT_VERBOSE" ]] && print "Number of styles available for customization: ${#order}" | |||
| # Named colors | |||
| local -a color | |||
| color=( red green blue yellow cyan magenta black white default ) | |||
| # | |||
| # Execution starts here | |||
| # | |||
| local -A out | |||
| local THEME_NAME THEME_PATH="$1" | |||
| if [[ "$1" = */* || "$1" = (XDG|LOCAL|HOME|OPT):* ]]; then | |||
| 1="${${1/(#s)XDG:/${${XDG_CONFIG_HOME:-$HOME/.config}%/}/fsh/}%.ini}.ini" | |||
| 1="${${1/(#s)LOCAL://usr/local/share/fsh/}%.ini}.ini" | |||
| 1="${${1/(#s)HOME:/$HOME/.fsh/}%.ini}.ini" | |||
| 1="${${1/(#s)OPT://opt/local/share/fsh/}%.ini}.ini" | |||
| 1=${~1} # allow user to quote ~ | |||
| [[ ! -f "$1" ]] && { print -u2 "No such theme \`$1', aborting"; return 1; } | |||
| [[ ! -r "$1" ]] && { print -u2 "Theme \`$1' unreadable, aborting"; return 1; } | |||
| THEME_NAME="${1:t:r}" | |||
| .fast-read-ini-file "$1" out "" | |||
| else | |||
| [[ ! -f "$FAST_BASE_DIR/themes/$1.ini" ]] && { print -u2 "No such theme \`$1', aborting"; return 1; } | |||
| [[ ! -r "$FAST_BASE_DIR/themes/$1.ini" ]] && { print -u2 "Theme \`$1' unreadable, aborting"; return 1; } | |||
| THEME_NAME="$1" | |||
| .fast-read-ini-file "$FAST_BASE_DIR/themes/$1.ini" out "" | |||
| fi | |||
| [[ -z "$OPT_SECONDARY" ]] && { [[ "$THEME_NAME" = *"overlay"* ]] && local outfile="theme_overlay.zsh" || local outfile="current_theme.zsh"; } || local outfile="secondary_theme.zsh" | |||
| [[ -z "$OPT_XCHG" && -z "$OPT_OV_XCHG" ]] && command rm -f "$FAST_WORK_DIR"/"$outfile" | |||
| # Set a zstyle and a parameter to carry theme name | |||
| if [[ -z "$OPT_SECONDARY" && -z "$OPT_XCHG" && -z "$OPT_OV_XCHG" ]]; then | |||
| [[ "$THEME_NAME" != *"overlay"* ]] && { | |||
| print -r -- 'zstyle :plugin:fast-syntax-highlighting theme "'"$THEME_NAME"'"' >>! "$FAST_WORK_DIR"/"$outfile" | |||
| print -r -- 'typeset -g FAST_THEME_NAME="'"$THEME_NAME"'"' >>! "$FAST_WORK_DIR"/"$outfile" | |||
| zstyle :plugin:fast-syntax-highlighting theme "$THEME_NAME" | |||
| typeset -g FAST_THEME_NAME="$THEME_NAME" | |||
| } | |||
| elif [[ -z "$OPT_XCHG" && -z "$OPT_OV_XCHG" ]]; then | |||
| local FAST_THEME_NAME="$THEME_NAME" | |||
| fi | |||
| # Store from which file the theme or overlay is being loaded | |||
| [[ "$THEME_NAME" != *"overlay" && -z "$OPT_OV_XCHG" ]] && FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}-path]="$THEME_PATH" || FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}-ov-path]="$THEME_PATH" | |||
| # Generate current_theme.zsh or secondary_theme.zsh, traversing ini-file associative array | |||
| local k kk | |||
| local inikey inival result result2 first_val isbg | |||
| integer ov_counter=0 first | |||
| for k in "${order[@]}"; do | |||
| first=1 | |||
| for kk in ${(s. .)map[$k]} default; do | |||
| [[ "$kk" = "-" ]] && kk="$k" | |||
| (( first )) && first_val="$kk" | |||
| inikey="${out[(i)<*>_${kk}]}" | |||
| [[ -n "$inikey" ]] && { | |||
| (( !first )) && [[ -z "$OPT_QUIET" ]] && { | |||
| [[ $kk = default ]] && { | |||
| [[ "$THEME_NAME" != *"overlay"* ]] && print "Missing style: $first_val" | |||
| } || print "For style $first_val, went for fallback style $kk" | |||
| } | |||
| break | |||
| } | |||
| first=0 | |||
| [[ "$THEME_NAME" = *"overlay"* ]] && break | |||
| done | |||
| # ORIG: Clear orig-style when loading a new theme, not overlay | |||
| [[ -z "$OPT_OV_XCHG" ]] && unset "FAST_HIGHLIGHT_STYLES[orig-style-$k]" | |||
| # ORIG: Restore orig-style when loading a new overlay | |||
| [[ -n "$OPT_OV_XCHG" && -n "${FAST_HIGHLIGHT_STYLES[orig-style-$k]}" ]] && { FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}$k]="${FAST_HIGHLIGHT_STYLES[orig-style-$k]}"; unset "FAST_HIGHLIGHT_STYLES[orig-style-$k]"; } | |||
| # Set only the keys provided in theme | |||
| [[ -z "$inikey" ]] && { [[ -z "$OPT_QUIET" && "$THEME_NAME" != *"overlay"* ]] && print "Missing style $first_val"; continue; } | |||
| inival="${out[$inikey]}" | |||
| if [[ "$k" = "secondary" && -z "$OPT_SECONDARY" && -n "$inival" ]]; then | |||
| fast-theme -q --secondary "$inival" | |||
| fi | |||
| result="" | |||
| if [[ $k = secondary ]]; then | |||
| result="$inival" | |||
| else | |||
| for kk in ${(s:,:)inival} | |||
| do | |||
| if [[ $kk = (none|(no-|)(bold|blink|conceal|reverse|standout|underline)) ]]; then | |||
| result+="${result:+,}$kk" | |||
| else | |||
| isbg=0 | |||
| if [[ $kk = bg:* ]]; then | |||
| isbg=1 | |||
| kk=${kk#bg:} | |||
| fi | |||
| if [[ $kk = (${(~j:|:)color}) || $kk = [0-9]## || $kk = \#[0-9a-fA-F](#c6,6) ]]; then | |||
| result+="${result:+,}" | |||
| (( isbg )) && result+="bg=" || result+="fg=" | |||
| result+="$kk" | |||
| else | |||
| print "cannot parse style $k: unknown color or style element $kk" | |||
| fi | |||
| fi | |||
| done | |||
| fi | |||
| if [[ "$THEME_NAME" = *"overlay"* || -n "$OPT_OV_XCHG" ]]; then | |||
| (( ++ ov_counter )) | |||
| [[ -z "$OPT_XCHG$OPT_OV_XCHG" ]] && print -r -- ': ${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}'"$k"']::='"$result"'}' >>! "$FAST_WORK_DIR"/"$outfile" | |||
| # ORIG: Save original value of the overwritten style | |||
| FAST_HIGHLIGHT_STYLES[orig-style-$k]=${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}$k]} | |||
| # Overwrite theme's style | |||
| FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}$k]="$result" | |||
| else | |||
| [[ -z "$OPT_XCHG$OPT_OV_XCHG" ]] && print -r -- ': ${FAST_HIGHLIGHT_STYLES['"${FAST_THEME_NAME}$k"']:='"$result"'}' >>! "$FAST_WORK_DIR"/"$outfile" | |||
| FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}$k]="$result" | |||
| fi | |||
| done | |||
| # This can overwrite some of *_STYLES fields | |||
| # Re-apply overlay on top of the theme we switched to | |||
| [[ "$THEME_NAME" != *"overlay"* ]] && [[ -r "$FAST_WORK_DIR"/theme_overlay.zsh ]] && source "$FAST_WORK_DIR"/theme_overlay.zsh | |||
| zcompile $FAST_WORK_DIR/$outfile 2>/dev/null | |||
| [[ -z "$OPT_QUIET" ]] && { | |||
| if [[ "$THEME_NAME" != *"overlay"* ]]; then | |||
| print "Switched to theme \`$THEME_NAME' (current session, and future sessions)" || \ | |||
| else | |||
| print "Processed the overlay ($ov_counter keys found), it is now active (for current session, and future sessions)" | |||
| fi | |||
| } | |||
| [[ -n "$OPT_TEST" ]] && { | |||
| print -zr ' | |||
| # Subshell, assignments, math-mode | |||
| echo $(cat /etc/hosts |& grep -i "hello337") | |||
| local param1="text ${+variable[test]} text ${var} text"; typeset param2='"'"'other $variable'"'"' | |||
| math=$(( 10 + HISTSIZ + HISTSIZE + $SAVEHIST )) size=$(( 0 )) | |||
| # Programming-like usage, bracket matching - through distinct colors; note the backslash quoting | |||
| for (( ii = 1; ii <= size; ++ ii )); do | |||
| if [[ "${cmds[ii]} string" = "| string" ]] | |||
| then | |||
| sidx=${buffer[(in:ii:)\$\(?#[^\\\\]\)]} # find opening cmd-subst | |||
| (( sidx <= len + 100 )) && { | |||
| eidx=${buffer[(b:sidx:ii)[^\\\\]\)]} # find closing cmd-subst | |||
| } | |||
| fi | |||
| done | |||
| # Regular command-line usage | |||
| repeat 0 { | |||
| zsh -i -c "cat /etc/shells* | grep -x --line-buffered -i '"'/bin/zsh'"'" | |||
| builtin exit $return_value | |||
| fast-theme -tq default | |||
| fsh-alias -tq default-X # alias '"'"'fsh-alias=fast-theme'"'"' works just like the previous line | |||
| command -v git | grep ".+git" && echo $'"'"'Git is installed'"'"' | |||
| git checkout -m --ours /etc/shells && git status-X | |||
| gem install asciidoctor | |||
| cat <<<$PATH | tr : \\n > /dev/null 2>/usr/local | |||
| man -a fopen fopen-X | |||
| CFLAGS="-g -Wall -O0" ./configure | |||
| } | |||
| ' | |||
| } | |||
| return 0 | |||
| # vim:ft=zsh:et:sw=4:sts=4 | |||
| @ -1,8 +0,0 @@ | |||
| zsh-syntax-highlighting / highlighters | |||
| ====================================== | |||
| Navigate into the individual highlighters' documentation to see | |||
| what styles (`$ZSH_HIGHLIGHT_STYLES` keys) each highlighter defines. | |||
| Refer to the [documentation on highlighters](../docs/highlighters.md) for further | |||
| information. | |||
| @ -1 +0,0 @@ | |||
| ../../docs/highlighters/brackets.md | |||
| @ -1,107 +0,0 @@ | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Copyright (c) 2010-2017 zsh-syntax-highlighting contributors | |||
| # All rights reserved. | |||
| # | |||
| # Redistribution and use in source and binary forms, with or without modification, are permitted | |||
| # provided that the following conditions are met: | |||
| # | |||
| # * Redistributions of source code must retain the above copyright notice, this list of conditions | |||
| # and the following disclaimer. | |||
| # * Redistributions in binary form must reproduce the above copyright notice, this list of | |||
| # conditions and the following disclaimer in the documentation and/or other materials provided | |||
| # with the distribution. | |||
| # * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors | |||
| # may be used to endorse or promote products derived from this software without specific prior | |||
| # written permission. | |||
| # | |||
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR | |||
| # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | |||
| # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | |||
| # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||
| # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | |||
| # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | |||
| # vim: ft=zsh sw=2 ts=2 et | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Define default styles. | |||
| : ${ZSH_HIGHLIGHT_STYLES[bracket-error]:=fg=red,bold} | |||
| : ${ZSH_HIGHLIGHT_STYLES[bracket-level-1]:=fg=blue,bold} | |||
| : ${ZSH_HIGHLIGHT_STYLES[bracket-level-2]:=fg=green,bold} | |||
| : ${ZSH_HIGHLIGHT_STYLES[bracket-level-3]:=fg=magenta,bold} | |||
| : ${ZSH_HIGHLIGHT_STYLES[bracket-level-4]:=fg=yellow,bold} | |||
| : ${ZSH_HIGHLIGHT_STYLES[bracket-level-5]:=fg=cyan,bold} | |||
| : ${ZSH_HIGHLIGHT_STYLES[cursor-matchingbracket]:=standout} | |||
| # Whether the brackets highlighter should be called or not. | |||
| _zsh_highlight_highlighter_brackets_predicate() | |||
| { | |||
| [[ $WIDGET == zle-line-finish ]] || _zsh_highlight_cursor_moved || _zsh_highlight_buffer_modified | |||
| } | |||
| # Brackets highlighting function. | |||
| _zsh_highlight_highlighter_brackets_paint() | |||
| { | |||
| local char style | |||
| local -i bracket_color_size=${#ZSH_HIGHLIGHT_STYLES[(I)bracket-level-*]} buflen=${#BUFFER} level=0 matchingpos pos | |||
| local -A levelpos lastoflevel matching | |||
| # Find all brackets and remember which one is matching | |||
| pos=0 | |||
| for char in ${(s..)BUFFER} ; do | |||
| (( ++pos )) | |||
| case $char in | |||
| ["([{"]) | |||
| levelpos[$pos]=$((++level)) | |||
| lastoflevel[$level]=$pos | |||
| ;; | |||
| [")]}"]) | |||
| if (( level > 0 )); then | |||
| matchingpos=$lastoflevel[$level] | |||
| levelpos[$pos]=$((level--)) | |||
| if _zsh_highlight_brackets_match $matchingpos $pos; then | |||
| matching[$matchingpos]=$pos | |||
| matching[$pos]=$matchingpos | |||
| fi | |||
| else | |||
| levelpos[$pos]=-1 | |||
| fi | |||
| ;; | |||
| esac | |||
| done | |||
| # Now highlight all found brackets | |||
| for pos in ${(k)levelpos}; do | |||
| if (( $+matching[$pos] )); then | |||
| if (( bracket_color_size )); then | |||
| _zsh_highlight_add_highlight $((pos - 1)) $pos bracket-level-$(( (levelpos[$pos] - 1) % bracket_color_size + 1 )) | |||
| fi | |||
| else | |||
| _zsh_highlight_add_highlight $((pos - 1)) $pos bracket-error | |||
| fi | |||
| done | |||
| # If cursor is on a bracket, then highlight corresponding bracket, if any. | |||
| if [[ $WIDGET != zle-line-finish ]]; then | |||
| pos=$((CURSOR + 1)) | |||
| if (( $+levelpos[$pos] )) && (( $+matching[$pos] )); then | |||
| local -i otherpos=$matching[$pos] | |||
| _zsh_highlight_add_highlight $((otherpos - 1)) $otherpos cursor-matchingbracket | |||
| fi | |||
| fi | |||
| } | |||
| # Helper function to differentiate type | |||
| _zsh_highlight_brackets_match() | |||
| { | |||
| case $BUFFER[$1] in | |||
| \() [[ $BUFFER[$2] == \) ]];; | |||
| \[) [[ $BUFFER[$2] == \] ]];; | |||
| \{) [[ $BUFFER[$2] == \} ]];; | |||
| *) false;; | |||
| esac | |||
| } | |||
| @ -1,36 +0,0 @@ | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Copyright (c) 2016 zsh-syntax-highlighting contributors | |||
| # All rights reserved. | |||
| # | |||
| # Redistribution and use in source and binary forms, with or without modification, are permitted | |||
| # provided that the following conditions are met: | |||
| # | |||
| # * Redistributions of source code must retain the above copyright notice, this list of conditions | |||
| # and the following disclaimer. | |||
| # * Redistributions in binary form must reproduce the above copyright notice, this list of | |||
| # conditions and the following disclaimer in the documentation and/or other materials provided | |||
| # with the distribution. | |||
| # * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors | |||
| # may be used to endorse or promote products derived from this software without specific prior | |||
| # written permission. | |||
| # | |||
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR | |||
| # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | |||
| # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | |||
| # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||
| # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | |||
| # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | |||
| # vim: ft=zsh sw=2 ts=2 et | |||
| # ------------------------------------------------------------------------------------------------- | |||
| WIDGET=zle-line-finish | |||
| BUFFER=': $foo[bar]' | |||
| CURSOR=6 # cursor is zero-based | |||
| expected_region_highlight=( | |||
| ) | |||
| @ -1,47 +0,0 @@ | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Copyright (c) 2016 zsh-syntax-highlighting contributors | |||
| # All rights reserved. | |||
| # | |||
| # Redistribution and use in source and binary forms, with or without modification, are permitted | |||
| # provided that the following conditions are met: | |||
| # | |||
| # * Redistributions of source code must retain the above copyright notice, this list of conditions | |||
| # and the following disclaimer. | |||
| # * Redistributions in binary form must reproduce the above copyright notice, this list of | |||
| # conditions and the following disclaimer in the documentation and/or other materials provided | |||
| # with the distribution. | |||
| # * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors | |||
| # may be used to endorse or promote products derived from this software without specific prior | |||
| # written permission. | |||
| # | |||
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR | |||
| # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | |||
| # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | |||
| # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||
| # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | |||
| # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | |||
| # vim: ft=zsh sw=2 ts=2 et | |||
| # ------------------------------------------------------------------------------------------------- | |||
| unsorted=1 | |||
| ZSH_HIGHLIGHT_STYLES[bracket-level-1]= | |||
| ZSH_HIGHLIGHT_STYLES[bracket-level-2]= | |||
| ZSH_HIGHLIGHT_STYLES[bracket-level-3]= | |||
| BUFFER=': ((( )))' | |||
| CURSOR=2 # cursor is zero-based | |||
| expected_region_highlight=( | |||
| "3 3 bracket-level-1" | |||
| "4 4 bracket-level-2" | |||
| "5 5 bracket-level-3" | |||
| "7 7 bracket-level-3" | |||
| "8 8 bracket-level-2" | |||
| "9 9 bracket-level-1" | |||
| "9 9 cursor-matchingbracket" | |||
| ) | |||
| @ -1,33 +0,0 @@ | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Copyright (c) 2016 zsh-syntax-highlighting contributors | |||
| # All rights reserved. | |||
| # | |||
| # Redistribution and use in source and binary forms, with or without modification, are permitted | |||
| # provided that the following conditions are met: | |||
| # | |||
| # * Redistributions of source code must retain the above copyright notice, this list of conditions | |||
| # and the following disclaimer. | |||
| # * Redistributions in binary form must reproduce the above copyright notice, this list of | |||
| # conditions and the following disclaimer in the documentation and/or other materials provided | |||
| # with the distribution. | |||
| # * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors | |||
| # may be used to endorse or promote products derived from this software without specific prior | |||
| # written permission. | |||
| # | |||
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR | |||
| # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | |||
| # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | |||
| # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||
| # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | |||
| # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | |||
| # vim: ft=zsh sw=2 ts=2 et | |||
| # ------------------------------------------------------------------------------------------------- | |||
| BUFFER=': (x)' | |||
| expected_region_highlight=( | |||
| ) | |||
| @ -1,53 +0,0 @@ | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Copyright (c) 2016 zsh-syntax-highlighting contributors | |||
| # All rights reserved. | |||
| # | |||
| # Redistribution and use in source and binary forms, with or without modification, are permitted | |||
| # provided that the following conditions are met: | |||
| # | |||
| # * Redistributions of source code must retain the above copyright notice, this list of conditions | |||
| # and the following disclaimer. | |||
| # * Redistributions in binary form must reproduce the above copyright notice, this list of | |||
| # conditions and the following disclaimer in the documentation and/or other materials provided | |||
| # with the distribution. | |||
| # * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors | |||
| # may be used to endorse or promote products derived from this software without specific prior | |||
| # written permission. | |||
| # | |||
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR | |||
| # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | |||
| # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | |||
| # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||
| # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | |||
| # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | |||
| # vim: ft=zsh sw=2 ts=2 et | |||
| # ------------------------------------------------------------------------------------------------- | |||
| unsorted=1 | |||
| ZSH_HIGHLIGHT_STYLES[bracket-level-1]= | |||
| ZSH_HIGHLIGHT_STYLES[bracket-level-2]= | |||
| ZSH_HIGHLIGHT_STYLES[bracket-level-3]= | |||
| BUFFER=': ({[({[(x)]})]})' | |||
| expected_region_highlight=( | |||
| "3 3 bracket-level-1" | |||
| "4 4 bracket-level-2" | |||
| "5 5 bracket-level-3" | |||
| "6 6 bracket-level-1" | |||
| "7 7 bracket-level-2" | |||
| "8 8 bracket-level-3" | |||
| "9 9 bracket-level-1" | |||
| "11 11 bracket-level-1" | |||
| "12 12 bracket-level-3" | |||
| "13 13 bracket-level-2" | |||
| "14 14 bracket-level-1" | |||
| "15 15 bracket-level-3" | |||
| "16 16 bracket-level-2" | |||
| "17 17 bracket-level-1" | |||
| ) | |||
| @ -1,42 +0,0 @@ | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Copyright (c) 2015 zsh-syntax-highlighting contributors | |||
| # All rights reserved. | |||
| # | |||
| # Redistribution and use in source and binary forms, with or without modification, are permitted | |||
| # provided that the following conditions are met: | |||
| # | |||
| # * Redistributions of source code must retain the above copyright notice, this list of conditions | |||
| # and the following disclaimer. | |||
| # * Redistributions in binary form must reproduce the above copyright notice, this list of | |||
| # conditions and the following disclaimer in the documentation and/or other materials provided | |||
| # with the distribution. | |||
| # * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors | |||
| # may be used to endorse or promote products derived from this software without specific prior | |||
| # written permission. | |||
| # | |||
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR | |||
| # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | |||
| # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | |||
| # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||
| # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | |||
| # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | |||
| # vim: ft=zsh sw=2 ts=2 et | |||
| # ------------------------------------------------------------------------------------------------- | |||
| unsorted=1 | |||
| ZSH_HIGHLIGHT_STYLES[bracket-level-1]= | |||
| ZSH_HIGHLIGHT_STYLES[bracket-level-2]= | |||
| BUFFER='echo ({x}]' | |||
| expected_region_highlight=( | |||
| "6 6 bracket-error" # ( | |||
| "7 7 bracket-level-2" # { | |||
| "9 9 bracket-level-2" # } | |||
| "10 10 bracket-error" # ) | |||
| ) | |||
| @ -1,42 +0,0 @@ | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Copyright (c) 2016 zsh-syntax-highlighting contributors | |||
| # All rights reserved. | |||
| # | |||
| # Redistribution and use in source and binary forms, with or without modification, are permitted | |||
| # provided that the following conditions are met: | |||
| # | |||
| # * Redistributions of source code must retain the above copyright notice, this list of conditions | |||
| # and the following disclaimer. | |||
| # * Redistributions in binary form must reproduce the above copyright notice, this list of | |||
| # conditions and the following disclaimer in the documentation and/or other materials provided | |||
| # with the distribution. | |||
| # * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors | |||
| # may be used to endorse or promote products derived from this software without specific prior | |||
| # written permission. | |||
| # | |||
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR | |||
| # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | |||
| # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | |||
| # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||
| # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | |||
| # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | |||
| # vim: ft=zsh sw=2 ts=2 et | |||
| # ------------------------------------------------------------------------------------------------- | |||
| unsorted=1 | |||
| ZSH_HIGHLIGHT_STYLES[bracket-level-1]= | |||
| ZSH_HIGHLIGHT_STYLES[bracket-level-2]= | |||
| BUFFER=': {"{x}"}' | |||
| expected_region_highlight=( | |||
| "3 3 bracket-level-1" | |||
| "5 5 bracket-level-2" | |||
| "7 7 bracket-level-2" | |||
| "9 9 bracket-level-1" | |||
| ) | |||
| @ -1,45 +0,0 @@ | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Copyright (c) 2015 zsh-syntax-highlighting contributors | |||
| # All rights reserved. | |||
| # | |||
| # Redistribution and use in source and binary forms, with or without modification, are permitted | |||
| # provided that the following conditions are met: | |||
| # | |||
| # * Redistributions of source code must retain the above copyright notice, this list of conditions | |||
| # and the following disclaimer. | |||
| # * Redistributions in binary form must reproduce the above copyright notice, this list of | |||
| # conditions and the following disclaimer in the documentation and/or other materials provided | |||
| # with the distribution. | |||
| # * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors | |||
| # may be used to endorse or promote products derived from this software without specific prior | |||
| # written permission. | |||
| # | |||
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR | |||
| # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | |||
| # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | |||
| # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||
| # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | |||
| # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | |||
| # vim: ft=zsh sw=2 ts=2 et | |||
| # ------------------------------------------------------------------------------------------------- | |||
| unsorted=1 | |||
| ZSH_HIGHLIGHT_STYLES[bracket-level-1]= | |||
| ZSH_HIGHLIGHT_STYLES[bracket-level-2]= | |||
| ZSH_HIGHLIGHT_STYLES[bracket-level-3]= | |||
| BUFFER='echo $(echo ${(z)array})' | |||
| expected_region_highlight=( | |||
| "7 7 bracket-level-1" # ( | |||
| "14 14 bracket-level-2" # { | |||
| "15 15 bracket-level-3" # ( | |||
| "17 17 bracket-level-3" # ) | |||
| "23 23 bracket-level-2" # } | |||
| "24 24 bracket-level-1" # ) | |||
| ) | |||
| @ -1,34 +0,0 @@ | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Copyright (c) 2017 zsh-syntax-highlighting contributors | |||
| # All rights reserved. | |||
| # | |||
| # Redistribution and use in source and binary forms, with or without modification, are permitted | |||
| # provided that the following conditions are met: | |||
| # | |||
| # * Redistributions of source code must retain the above copyright notice, this list of conditions | |||
| # and the following disclaimer. | |||
| # * Redistributions in binary form must reproduce the above copyright notice, this list of | |||
| # conditions and the following disclaimer in the documentation and/or other materials provided | |||
| # with the distribution. | |||
| # * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors | |||
| # may be used to endorse or promote products derived from this software without specific prior | |||
| # written permission. | |||
| # | |||
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR | |||
| # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | |||
| # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | |||
| # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||
| # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | |||
| # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | |||
| # vim: ft=zsh sw=2 ts=2 et | |||
| # ------------------------------------------------------------------------------------------------- | |||
| BUFFER=': x)' | |||
| expected_region_highlight=( | |||
| "4 4 bracket-error" # ) | |||
| ) | |||
| @ -1,34 +0,0 @@ | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Copyright (c) 2015 zsh-syntax-highlighting contributors | |||
| # All rights reserved. | |||
| # | |||
| # Redistribution and use in source and binary forms, with or without modification, are permitted | |||
| # provided that the following conditions are met: | |||
| # | |||
| # * Redistributions of source code must retain the above copyright notice, this list of conditions | |||
| # and the following disclaimer. | |||
| # * Redistributions in binary form must reproduce the above copyright notice, this list of | |||
| # conditions and the following disclaimer in the documentation and/or other materials provided | |||
| # with the distribution. | |||
| # * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors | |||
| # may be used to endorse or promote products derived from this software without specific prior | |||
| # written permission. | |||
| # | |||
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR | |||
| # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | |||
| # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | |||
| # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||
| # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | |||
| # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | |||
| # vim: ft=zsh sw=2 ts=2 et | |||
| # ------------------------------------------------------------------------------------------------- | |||
| BUFFER='echo "foo ( bar"' | |||
| expected_region_highlight=( | |||
| "11 11 bracket-error" | |||
| ) | |||
| @ -1,42 +0,0 @@ | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Copyright (c) 2015 zsh-syntax-highlighting contributors | |||
| # All rights reserved. | |||
| # | |||
| # Redistribution and use in source and binary forms, with or without modification, are permitted | |||
| # provided that the following conditions are met: | |||
| # | |||
| # * Redistributions of source code must retain the above copyright notice, this list of conditions | |||
| # and the following disclaimer. | |||
| # * Redistributions in binary form must reproduce the above copyright notice, this list of | |||
| # conditions and the following disclaimer in the documentation and/or other materials provided | |||
| # with the distribution. | |||
| # * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors | |||
| # may be used to endorse or promote products derived from this software without specific prior | |||
| # written permission. | |||
| # | |||
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR | |||
| # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | |||
| # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | |||
| # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||
| # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | |||
| # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | |||
| # vim: ft=zsh sw=2 ts=2 et | |||
| # ------------------------------------------------------------------------------------------------- | |||
| unsorted=1 | |||
| ZSH_HIGHLIGHT_STYLES[bracket-level-1]= | |||
| ZSH_HIGHLIGHT_STYLES[bracket-level-2]= | |||
| BUFFER='echo ({x})' | |||
| expected_region_highlight=( | |||
| "6 6 bracket-level-1" # ( | |||
| "7 7 bracket-level-2" # { | |||
| "9 9 bracket-level-2" # } | |||
| "10 10 bracket-level-1" # ) | |||
| ) | |||
| @ -1,41 +0,0 @@ | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Copyright (c) 2015 zsh-syntax-highlighting contributors | |||
| # All rights reserved. | |||
| # | |||
| # Redistribution and use in source and binary forms, with or without modification, are permitted | |||
| # provided that the following conditions are met: | |||
| # | |||
| # * Redistributions of source code must retain the above copyright notice, this list of conditions | |||
| # and the following disclaimer. | |||
| # * Redistributions in binary form must reproduce the above copyright notice, this list of | |||
| # conditions and the following disclaimer in the documentation and/or other materials provided | |||
| # with the distribution. | |||
| # * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors | |||
| # may be used to endorse or promote products derived from this software without specific prior | |||
| # written permission. | |||
| # | |||
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR | |||
| # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | |||
| # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | |||
| # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||
| # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | |||
| # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | |||
| # vim: ft=zsh sw=2 ts=2 et | |||
| # ------------------------------------------------------------------------------------------------- | |||
| unsorted=1 | |||
| ZSH_HIGHLIGHT_STYLES[bracket-level-1]= | |||
| ZSH_HIGHLIGHT_STYLES[bracket-level-2]= | |||
| BUFFER='echo ({x}' | |||
| expected_region_highlight=( | |||
| "6 6 bracket-error" # ( | |||
| "7 7 bracket-level-2" # { | |||
| "9 9 bracket-level-2" # } | |||
| ) | |||
| @ -1,40 +0,0 @@ | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Copyright (c) 2015 zsh-syntax-highlighting contributors | |||
| # All rights reserved. | |||
| # | |||
| # Redistribution and use in source and binary forms, with or without modification, are permitted | |||
| # provided that the following conditions are met: | |||
| # | |||
| # * Redistributions of source code must retain the above copyright notice, this list of conditions | |||
| # and the following disclaimer. | |||
| # * Redistributions in binary form must reproduce the above copyright notice, this list of | |||
| # conditions and the following disclaimer in the documentation and/or other materials provided | |||
| # with the distribution. | |||
| # * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors | |||
| # may be used to endorse or promote products derived from this software without specific prior | |||
| # written permission. | |||
| # | |||
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR | |||
| # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | |||
| # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | |||
| # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||
| # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | |||
| # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | |||
| # vim: ft=zsh sw=2 ts=2 et | |||
| # ------------------------------------------------------------------------------------------------- | |||
| unsorted=1 | |||
| ZSH_HIGHLIGHT_STYLES[bracket-level-1]= | |||
| BUFFER='echo {x})' | |||
| expected_region_highlight=( | |||
| "6 6 bracket-level-1" # { | |||
| "8 8 bracket-level-1" # } | |||
| "9 9 bracket-error" # ) | |||
| ) | |||
| @ -1 +0,0 @@ | |||
| ../../docs/highlighters/cursor.md | |||
| @ -1,47 +0,0 @@ | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Copyright (c) 2010-2011 zsh-syntax-highlighting contributors | |||
| # All rights reserved. | |||
| # | |||
| # Redistribution and use in source and binary forms, with or without modification, are permitted | |||
| # provided that the following conditions are met: | |||
| # | |||
| # * Redistributions of source code must retain the above copyright notice, this list of conditions | |||
| # and the following disclaimer. | |||
| # * Redistributions in binary form must reproduce the above copyright notice, this list of | |||
| # conditions and the following disclaimer in the documentation and/or other materials provided | |||
| # with the distribution. | |||
| # * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors | |||
| # may be used to endorse or promote products derived from this software without specific prior | |||
| # written permission. | |||
| # | |||
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR | |||
| # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | |||
| # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | |||
| # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||
| # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | |||
| # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | |||
| # vim: ft=zsh sw=2 ts=2 et | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Define default styles. | |||
| : ${ZSH_HIGHLIGHT_STYLES[cursor]:=standout} | |||
| # Whether the cursor highlighter should be called or not. | |||
| _zsh_highlight_highlighter_cursor_predicate() | |||
| { | |||
| # remove cursor highlighting when the line is finished | |||
| [[ $WIDGET == zle-line-finish ]] || _zsh_highlight_cursor_moved | |||
| } | |||
| # Cursor highlighting function. | |||
| _zsh_highlight_highlighter_cursor_paint() | |||
| { | |||
| [[ $WIDGET == zle-line-finish ]] && return | |||
| _zsh_highlight_add_highlight $CURSOR $(( $CURSOR + 1 )) cursor | |||
| } | |||
| @ -1 +0,0 @@ | |||
| ../../docs/highlighters/line.md | |||
| @ -1,44 +0,0 @@ | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Copyright (c) 2010-2011 zsh-syntax-highlighting contributors | |||
| # All rights reserved. | |||
| # | |||
| # Redistribution and use in source and binary forms, with or without modification, are permitted | |||
| # provided that the following conditions are met: | |||
| # | |||
| # * Redistributions of source code must retain the above copyright notice, this list of conditions | |||
| # and the following disclaimer. | |||
| # * Redistributions in binary form must reproduce the above copyright notice, this list of | |||
| # conditions and the following disclaimer in the documentation and/or other materials provided | |||
| # with the distribution. | |||
| # * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors | |||
| # may be used to endorse or promote products derived from this software without specific prior | |||
| # written permission. | |||
| # | |||
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR | |||
| # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | |||
| # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | |||
| # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||
| # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | |||
| # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | |||
| # vim: ft=zsh sw=2 ts=2 et | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Define default styles. | |||
| : ${ZSH_HIGHLIGHT_STYLES[line]:=} | |||
| # Whether the root highlighter should be called or not. | |||
| _zsh_highlight_highlighter_line_predicate() | |||
| { | |||
| _zsh_highlight_buffer_modified | |||
| } | |||
| # root highlighting function. | |||
| _zsh_highlight_highlighter_line_paint() | |||
| { | |||
| _zsh_highlight_add_highlight 0 $#BUFFER line | |||
| } | |||
| @ -1 +0,0 @@ | |||
| ../../docs/highlighters/main.md | |||
| @ -1,35 +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 path_prefix' # / | |||
| ) | |||
| @ -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' # / | |||
| ) | |||
| @ -1,35 +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=$'/bi' | |||
| expected_region_highlight=( | |||
| '1 3 path_prefix' # /bi | |||
| ) | |||
| @ -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=$'/bin; /bin' | |||
| expected_region_highlight=( | |||
| '1 4 unknown-token' # /bin (in middle) | |||
| '5 5 commandseparator' # ; | |||
| '7 10 path_prefix' # /bin (at end) | |||
| ) | |||
| @ -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) | |||
| ) | |||
| @ -1,35 +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=$'/bin/s' | |||
| expected_region_highlight=( | |||
| '1 6 path_prefix' # /bin/s | |||
| ) | |||
| @ -1,35 +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=$'/bin/sh' | |||
| expected_region_highlight=( | |||
| '1 7 command' # /bin/sh | |||
| ) | |||
| @ -1,38 +0,0 @@ | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Copyright (c) 2016 zsh-syntax-highlighting contributors | |||
| # All rights reserved. | |||
| # | |||
| # Redistribution and use in source and binary forms, with or without modification, are permitted | |||
| # provided that the following conditions are met: | |||
| # | |||
| # * Redistributions of source code must retain the above copyright notice, this list of conditions | |||
| # and the following disclaimer. | |||
| # * Redistributions in binary form must reproduce the above copyright notice, this list of | |||
| # conditions and the following disclaimer in the documentation and/or other materials provided | |||
| # with the distribution. | |||
| # * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors | |||
| # may be used to endorse or promote products derived from this software without specific prior | |||
| # written permission. | |||
| # | |||
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR | |||
| # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | |||
| # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | |||
| # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||
| # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | |||
| # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | |||
| # vim: ft=zsh sw=2 ts=2 et | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Issue #263 (more-pathological case): aliases[x=y]=z works; the ${(z)} splitter considers | |||
| # that a single word; but it's not looked up as an alias. Hence, highlight it as an error. | |||
| aliases[x=y]='lorem ipsum dolor sit amet' | |||
| BUFFER='x=y ls' | |||
| expected_region_highlight=( | |||
| "1 3 unknown-token" # x=y | |||
| "5 6 default" # ls | |||
| ) | |||
| @ -1,35 +0,0 @@ | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Copyright (c) 2015 zsh-syntax-highlighting contributors | |||
| # All rights reserved. | |||
| # | |||
| # Redistribution and use in source and binary forms, with or without modification, are permitted | |||
| # provided that the following conditions are met: | |||
| # | |||
| # * Redistributions of source code must retain the above copyright notice, this list of conditions | |||
| # and the following disclaimer. | |||
| # * Redistributions in binary form must reproduce the above copyright notice, this list of | |||
| # conditions and the following disclaimer in the documentation and/or other materials provided | |||
| # with the distribution. | |||
| # * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors | |||
| # may be used to endorse or promote products derived from this software without specific prior | |||
| # written permission. | |||
| # | |||
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR | |||
| # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | |||
| # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | |||
| # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||
| # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | |||
| # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | |||
| # vim: ft=zsh sw=2 ts=2 et | |||
| # ------------------------------------------------------------------------------------------------- | |||
| alias foo="echo hello world" | |||
| BUFFER="foo" | |||
| expected_region_highlight+=( | |||
| "1 3 alias" # foo | |||
| ) | |||
| @ -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' # / | |||
| ) | |||
| @ -1,37 +0,0 @@ | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Copyright (c) 2019 zsh-syntax-highlighting contributors | |||
| # All rights reserved. | |||
| # | |||
| # Redistribution and use in source and binary forms, with or without modification, are permitted | |||
| # provided that the following conditions are met: | |||
| # | |||
| # * Redistributions of source code must retain the above copyright notice, this list of conditions | |||
| # and the following disclaimer. | |||
| # * Redistributions in binary form must reproduce the above copyright notice, this list of | |||
| # conditions and the following disclaimer in the documentation and/or other materials provided | |||
| # with the distribution. | |||
| # * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors | |||
| # may be used to endorse or promote products derived from this software without specific prior | |||
| # written permission. | |||
| # | |||
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR | |||
| # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | |||
| # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | |||
| # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||
| # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | |||
| # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | |||
| # vim: ft=zsh sw=2 ts=2 et | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Alias must be at least 4 characters to test the regression | |||
| # cf. 139ea2b189819c43cc251825981c116959b15cc3 | |||
| alias foobar='echo "$(echo foobar)"' | |||
| BUFFER='foobar' | |||
| expected_region_highlight=( | |||
| "1 6 alias" # foobar | |||
| ) | |||
| @ -1,37 +0,0 @@ | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Copyright (c) 2016 zsh-syntax-highlighting contributors | |||
| # All rights reserved. | |||
| # | |||
| # Redistribution and use in source and binary forms, with or without modification, are permitted | |||
| # provided that the following conditions are met: | |||
| # | |||
| # * Redistributions of source code must retain the above copyright notice, this list of conditions | |||
| # and the following disclaimer. | |||
| # * Redistributions in binary form must reproduce the above copyright notice, this list of | |||
| # conditions and the following disclaimer in the documentation and/or other materials provided | |||
| # with the distribution. | |||
| # * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors | |||
| # may be used to endorse or promote products derived from this software without specific prior | |||
| # written permission. | |||
| # | |||
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR | |||
| # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | |||
| # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | |||
| # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||
| # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | |||
| # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | |||
| # vim: ft=zsh sw=2 ts=2 et | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # see alias-comment2.zsh and comment-followed.zsh | |||
| setopt interactivecomments | |||
| alias x=$'# foo\npwd' | |||
| BUFFER='x' | |||
| expected_region_highlight=( | |||
| '1 1 alias' # x | |||
| ) | |||
| @ -1,37 +0,0 @@ | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Copyright (c) 2016 zsh-syntax-highlighting contributors | |||
| # All rights reserved. | |||
| # | |||
| # Redistribution and use in source and binary forms, with or without modification, are permitted | |||
| # provided that the following conditions are met: | |||
| # | |||
| # * Redistributions of source code must retain the above copyright notice, this list of conditions | |||
| # and the following disclaimer. | |||
| # * Redistributions in binary form must reproduce the above copyright notice, this list of | |||
| # conditions and the following disclaimer in the documentation and/or other materials provided | |||
| # with the distribution. | |||
| # * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors | |||
| # may be used to endorse or promote products derived from this software without specific prior | |||
| # written permission. | |||
| # | |||
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR | |||
| # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | |||
| # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | |||
| # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||
| # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | |||
| # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | |||
| # vim: ft=zsh sw=2 ts=2 et | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # see alias-comment1.zsh | |||
| setopt NO_interactivecomments | |||
| alias x=$'# foo\npwd' | |||
| BUFFER='x' | |||
| expected_region_highlight=( | |||
| '1 1 unknown-token' # x (#) | |||
| ) | |||
| @ -1,38 +0,0 @@ | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Copyright (c) 2018 zsh-syntax-highlighting contributors | |||
| # All rights reserved. | |||
| # | |||
| # Redistribution and use in source and binary forms, with or without modification, are permitted | |||
| # provided that the following conditions are met: | |||
| # | |||
| # * Redistributions of source code must retain the above copyright notice, this list of conditions | |||
| # and the following disclaimer. | |||
| # * Redistributions in binary form must reproduce the above copyright notice, this list of | |||
| # conditions and the following disclaimer in the documentation and/or other materials provided | |||
| # with the distribution. | |||
| # * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors | |||
| # may be used to endorse or promote products derived from this software without specific prior | |||
| # written permission. | |||
| # | |||
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR | |||
| # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | |||
| # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | |||
| # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||
| # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | |||
| # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | |||
| # vim: ft=zsh sw=2 ts=2 et | |||
| # ------------------------------------------------------------------------------------------------- | |||
| alias x='echo && ls; >' | |||
| BUFFER='x file echo' | |||
| expected_region_highlight=( | |||
| '1 1 alias' # x | |||
| '3 6 default' # file | |||
| '8 11 builtin' # echo | |||
| ) | |||
| @ -1,38 +0,0 @@ | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Copyright (c) 2018 zsh-syntax-highlighting contributors | |||
| # All rights reserved. | |||
| # | |||
| # Redistribution and use in source and binary forms, with or without modification, are permitted | |||
| # provided that the following conditions are met: | |||
| # | |||
| # * Redistributions of source code must retain the above copyright notice, this list of conditions | |||
| # and the following disclaimer. | |||
| # * Redistributions in binary form must reproduce the above copyright notice, this list of | |||
| # conditions and the following disclaimer in the documentation and/or other materials provided | |||
| # with the distribution. | |||
| # * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors | |||
| # may be used to endorse or promote products derived from this software without specific prior | |||
| # written permission. | |||
| # | |||
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR | |||
| # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | |||
| # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | |||
| # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||
| # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | |||
| # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | |||
| # vim: ft=zsh sw=2 ts=2 et | |||
| # ------------------------------------------------------------------------------------------------- | |||
| alias x='' | |||
| BUFFER='x echo foo' | |||
| expected_region_highlight=( | |||
| '1 1 alias' # x | |||
| '3 6 builtin' # echo | |||
| '8 10 default' # foo | |||
| ) | |||
| @ -1,36 +0,0 @@ | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Copyright (c) 2019 zsh-syntax-highlighting contributors | |||
| # All rights reserved. | |||
| # | |||
| # Redistribution and use in source and binary forms, with or without modification, are permitted | |||
| # provided that the following conditions are met: | |||
| # | |||
| # * Redistributions of source code must retain the above copyright notice, this list of conditions | |||
| # and the following disclaimer. | |||
| # * Redistributions in binary form must reproduce the above copyright notice, this list of | |||
| # conditions and the following disclaimer in the documentation and/or other materials provided | |||
| # with the distribution. | |||
| # * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors | |||
| # may be used to endorse or promote products derived from this software without specific prior | |||
| # written permission. | |||
| # | |||
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR | |||
| # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | |||
| # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | |||
| # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||
| # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | |||
| # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | |||
| # vim: ft=zsh sw=2 ts=2 et | |||
| # ------------------------------------------------------------------------------------------------- | |||
| alias ls='command ls' | |||
| BUFFER='ls' | |||
| expected_region_highlight=( | |||
| "1 2 alias" # ls | |||
| ) | |||
| @ -1,36 +0,0 @@ | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Copyright (c) 2019 zsh-syntax-highlighting contributors | |||
| # All rights reserved. | |||
| # | |||
| # Redistribution and use in source and binary forms, with or without modification, are permitted | |||
| # provided that the following conditions are met: | |||
| # | |||
| # * Redistributions of source code must retain the above copyright notice, this list of conditions | |||
| # and the following disclaimer. | |||
| # * Redistributions in binary form must reproduce the above copyright notice, this list of | |||
| # conditions and the following disclaimer in the documentation and/or other materials provided | |||
| # with the distribution. | |||
| # * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors | |||
| # may be used to endorse or promote products derived from this software without specific prior | |||
| # written permission. | |||
| # | |||
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR | |||
| # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | |||
| # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | |||
| # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||
| # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | |||
| # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | |||
| # vim: ft=zsh sw=2 ts=2 et | |||
| # ------------------------------------------------------------------------------------------------- | |||
| alias ls=tmp tmp='command ls' | |||
| BUFFER='ls' | |||
| expected_region_highlight=( | |||
| "1 2 alias" # ls | |||
| ) | |||
| @ -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' # ) | |||
| ) | |||
| @ -1,44 +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 | |||
| # ------------------------------------------------------------------------------------------------- | |||
| function b() {} # beware of ALIAS_FUNC_DEF | |||
| alias a=b b=c c=b | |||
| BUFFER='a foo; :' | |||
| expected_region_highlight=( | |||
| # An alias is ineligible for expansion whilst it's being expanded. | |||
| # Therefore, the "b" in the expansion of the alias "c" is not considered | |||
| # as an alias. | |||
| '1 1 alias' # a | |||
| '3 5 default' # foo | |||
| '6 6 commandseparator' # ; | |||
| '8 8 builtin' # : | |||
| ) | |||
| @ -1,35 +0,0 @@ | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Copyright (c) 2015 zsh-syntax-highlighting contributors | |||
| # All rights reserved. | |||
| # | |||
| # Redistribution and use in source and binary forms, with or without modification, are permitted | |||
| # provided that the following conditions are met: | |||
| # | |||
| # * Redistributions of source code must retain the above copyright notice, this list of conditions | |||
| # and the following disclaimer. | |||
| # * Redistributions in binary form must reproduce the above copyright notice, this list of | |||
| # conditions and the following disclaimer in the documentation and/or other materials provided | |||
| # with the distribution. | |||
| # * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors | |||
| # may be used to endorse or promote products derived from this software without specific prior | |||
| # written permission. | |||
| # | |||
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR | |||
| # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | |||
| # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | |||
| # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||
| # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | |||
| # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | |||
| # vim: ft=zsh sw=2 ts=2 et | |||
| # ------------------------------------------------------------------------------------------------- | |||
| alias ls="ls" | |||
| BUFFER="ls" | |||
| expected_region_highlight+=( | |||
| "1 2 alias" # ls | |||
| ) | |||
| @ -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 | |||
| # ------------------------------------------------------------------------------------------------- | |||
| alias a=b b=sudo | |||
| sudo(){} | |||
| BUFFER='a -u phy1729 echo; :' | |||
| expected_region_highlight=( | |||
| '1 1 alias' # a | |||
| '3 4 single-hyphen-option' # -u | |||
| '6 12 default' # phy1729 | |||
| '14 17 builtin' # echo | |||
| '18 18 commandseparator' # ; | |||
| '20 20 builtin' # : | |||
| ) | |||
| @ -1,40 +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 | |||
| # ------------------------------------------------------------------------------------------------- | |||
| alias a=b b=: | |||
| BUFFER='a foo; :' | |||
| expected_region_highlight=( | |||
| '1 1 alias' # a | |||
| '3 5 default' # foo | |||
| '6 6 commandseparator' # ; | |||
| '8 8 builtin' # : | |||
| ) | |||
| @ -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 '$foo'='echo alias' | |||
| local foo; foo=(echo param) | |||
| BUFFER='$foo' | |||
| expected_region_highlight=( | |||
| '1 4 alias' # $foo | |||
| ) | |||
| @ -1,42 +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 also param-precommand-option-argument1.zsh | |||
| alias sudo_u='sudo -u' | |||
| sudo(){} | |||
| BUFFER='sudo_u phy1729 echo foo' | |||
| expected_region_highlight=( | |||
| '1 6 alias' # sudo_u | |||
| '8 14 default' # phy1729 | |||
| '17 19 command "issue #540"' # echo (not builtin) | |||
| '21 23 default' # foo | |||
| ) | |||
| @ -1,42 +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 | |||
| # ------------------------------------------------------------------------------------------------- | |||
| alias sudo_b='sudo -b' | |||
| alias sudo_b_u='sudo_b -u' | |||
| sudo(){} | |||
| BUFFER='sudo_b_u phy1729 echo foo' | |||
| expected_region_highlight=( | |||
| '1 8 alias' # sudo_b_u | |||
| '10 16 default' # phy1729 | |||
| '18 21 command "issue #540"' # echo (not builtin) | |||
| '23 25 default' # foo | |||
| ) | |||
| @ -1,42 +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 also param-precommand-option-argument3.zsh | |||
| alias sudo_u='sudo -u' | |||
| sudo(){} | |||
| BUFFER='sudo_u phy1729 ls foo' | |||
| expected_region_highlight=( | |||
| '1 6 alias' # sudo_u | |||
| '8 14 default' # phy1729 | |||
| '16 17 command' # ls | |||
| '19 21 default' # foo | |||
| ) | |||
| @ -1,42 +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 | |||
| # ------------------------------------------------------------------------------------------------- | |||
| alias sudo_b='sudo -b' | |||
| alias sudo_b_u='sudo_b -u' | |||
| sudo(){} | |||
| BUFFER='sudo_b_u phy1729 ls foo' | |||
| expected_region_highlight=( | |||
| '1 8 alias' # sudo_b_u | |||
| '10 16 default' # phy1729 | |||
| '18 19 command' # ls | |||
| '21 23 default' # foo | |||
| ) | |||
| @ -1,39 +0,0 @@ | |||
| #!/usr/bin/env zsh | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Copyright (c) YYYY zsh-syntax-highlighting contributors | |||
| # All rights reserved. | |||
| # | |||
| # Redistribution and use in source and binary forms, with or without modification, are permitted | |||
| # provided that the following conditions are met: | |||
| # | |||
| # * Redistributions of source code must retain the above copyright notice, this list of conditions | |||
| # and the following disclaimer. | |||
| # * Redistributions in binary form must reproduce the above copyright notice, this list of | |||
| # conditions and the following disclaimer in the documentation and/or other materials provided | |||
| # with the distribution. | |||
| # * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors | |||
| # may be used to endorse or promote products derived from this software without specific prior | |||
| # written permission. | |||
| # | |||
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR | |||
| # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | |||
| # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | |||
| # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||
| # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | |||
| # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | |||
| # vim: ft=zsh sw=2 ts=2 et | |||
| # ------------------------------------------------------------------------------------------------- | |||
| alias a=: ls='ls -l' | |||
| BUFFER='"a" foo; \ls' | |||
| expected_region_highlight=( | |||
| '1 3 unknown-token' # "a" | |||
| '5 7 default' # foo | |||
| '8 8 commandseparator' # ; | |||
| '10 12 command' # \ls | |||
| ) | |||
| @ -1,38 +0,0 @@ | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Copyright (c) 2016 zsh-syntax-highlighting contributors | |||
| # All rights reserved. | |||
| # | |||
| # Redistribution and use in source and binary forms, with or without modification, are permitted | |||
| # provided that the following conditions are met: | |||
| # | |||
| # * Redistributions of source code must retain the above copyright notice, this list of conditions | |||
| # and the following disclaimer. | |||
| # * Redistributions in binary form must reproduce the above copyright notice, this list of | |||
| # conditions and the following disclaimer in the documentation and/or other materials provided | |||
| # with the distribution. | |||
| # * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors | |||
| # may be used to endorse or promote products derived from this software without specific prior | |||
| # written permission. | |||
| # | |||
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR | |||
| # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | |||
| # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | |||
| # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||
| # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | |||
| # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | |||
| # vim: ft=zsh sw=2 ts=2 et | |||
| # ------------------------------------------------------------------------------------------------- | |||
| alias x=\> | |||
| BUFFER='x foo echo bar' | |||
| expected_region_highlight=( | |||
| '1 1 alias' # x | |||
| '3 5 default' # foo | |||
| '7 10 builtin' # echo | |||
| '12 14 default' # bar | |||
| ) | |||
| @ -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 | |||
| ) | |||
| @ -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 | |||
| ) | |||
| @ -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 | |||
| ) | |||
| @ -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' # ) | |||
| ) | |||
| @ -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' # ) | |||
| ) | |||
| @ -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 | |||
| # ------------------------------------------------------------------------------------------------- | |||
| alias echo='echo foo' | |||
| BUFFER='echo bar' | |||
| expected_region_highlight=( | |||
| '1 4 alias' # echo | |||
| '6 8 default' # bar | |||
| ) | |||
| @ -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 | |||
| ) | |||
| @ -1,36 +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 | |||
| # ------------------------------------------------------------------------------------------------- | |||
| alias x=/ | |||
| BUFFER=$'x' | |||
| expected_region_highlight=( | |||
| '1 1 unknown-token' # x (/) | |||
| ) | |||
| @ -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 | |||
| ) | |||
| @ -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 | |||
| # ------------------------------------------------------------------------------------------------- | |||
| alias a=b b=foo | |||
| BUFFER='a ' | |||
| expected_region_highlight=( | |||
| '1 1 unknown-token' # a | |||
| ) | |||
| @ -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 | |||
| # ------------------------------------------------------------------------------------------------- | |||
| alias a='() { ls "$@" ; foo }' | |||
| BUFFER='a ' | |||
| expected_region_highlight=( | |||
| '1 1 unknown-token' # a | |||
| ) | |||
| @ -1,53 +0,0 @@ | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Copyright (c) 2015 zsh-syntax-highlighting contributors | |||
| # All rights reserved. | |||
| # | |||
| # Redistribution and use in source and binary forms, with or without modification, are permitted | |||
| # provided that the following conditions are met: | |||
| # | |||
| # * Redistributions of source code must retain the above copyright notice, this list of conditions | |||
| # and the following disclaimer. | |||
| # * Redistributions in binary form must reproduce the above copyright notice, this list of | |||
| # conditions and the following disclaimer in the documentation and/or other materials provided | |||
| # with the distribution. | |||
| # * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors | |||
| # may be used to endorse or promote products derived from this software without specific prior | |||
| # written permission. | |||
| # | |||
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR | |||
| # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | |||
| # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | |||
| # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||
| # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | |||
| # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | |||
| # vim: ft=zsh sw=2 ts=2 et | |||
| # ------------------------------------------------------------------------------------------------- | |||
| alias alias1="ls" | |||
| alias -s alias2="echo" | |||
| function alias1() {} # to check that it's highlighted as an alias, not as a function | |||
| BUFFER='x.alias2; alias1; alias2' | |||
| # Set expected_region_highlight as a function of zsh version. | |||
| # | |||
| # Highlight of suffix alias requires zsh-5.1.1 or newer; see issue #126, | |||
| # and commit 36403 to zsh itself. Therefore, check if the requisite zsh | |||
| # functionality is present, and skip verifying suffix-alias highlighting | |||
| # if it isn't. | |||
| expected_region_highlight=() | |||
| if zmodload -e zsh/parameter || [[ "$(type -w x.alias2)" == *suffix* ]]; then | |||
| expected_region_highlight+=( | |||
| "1 8 suffix-alias" # x.alias2 | |||
| ) | |||
| fi | |||
| expected_region_highlight+=( | |||
| "9 9 commandseparator" # ; | |||
| "11 16 alias" # alias1 | |||
| "17 17 commandseparator" # ; | |||
| "19 24 unknown-token" # alias2 | |||
| ) | |||
| @ -1,41 +0,0 @@ | |||
| #!/usr/bin/env zsh | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # Copyright (c) 2016 zsh-syntax-highlighting contributors | |||
| # All rights reserved. | |||
| # | |||
| # Redistribution and use in source and binary forms, with or without modification, are permitted | |||
| # provided that the following conditions are met: | |||
| # | |||
| # * Redistributions of source code must retain the above copyright notice, this list of conditions | |||
| # and the following disclaimer. | |||
| # * Redistributions in binary form must reproduce the above copyright notice, this list of | |||
| # conditions and the following disclaimer in the documentation and/or other materials provided | |||
| # with the distribution. | |||
| # * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors | |||
| # may be used to endorse or promote products derived from this software without specific prior | |||
| # written permission. | |||
| # | |||
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR | |||
| # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | |||
| # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | |||
| # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||
| # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | |||
| # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| # ------------------------------------------------------------------------------------------------- | |||
| # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | |||
| # vim: ft=zsh sw=2 ts=2 et | |||
| # ------------------------------------------------------------------------------------------------- | |||
| BUFFER='{ ls } always { pwd }' | |||
| expected_region_highlight=( | |||
| '1 1 reserved-word' # { | |||
| '3 4 command' # ls | |||
| '6 6 reserved-word' # } | |||
| '8 13 reserved-word' # always | |||
| '15 15 reserved-word' # { | |||
| '17 19 builtin' # pwd | |||
| '21 21 reserved-word' # } | |||
| ) | |||