Merge pull request #669 from danielshahaf/cdpath-and-nonexecutable-in-command-position-v1
Command position: non-executable files, non-cdable directories, CDPATH false positives
This commit is contained in:
		
						commit
						e4f24f8901
					
				|  | @ -27,6 +27,7 @@ This highlighter defines the following styles: | ||||||
| * `precommand` - precommand modifiers (e.g., `noglob`, `builtin`) | * `precommand` - precommand modifiers (e.g., `noglob`, `builtin`) | ||||||
| * `commandseparator` - command separation tokens (`;`, `&&`) | * `commandseparator` - command separation tokens (`;`, `&&`) | ||||||
| * `hashed-command` - hashed commands | * `hashed-command` - hashed commands | ||||||
|  | * `autodirectory` - a directory name in command position when the `AUTO_CD` option is set | ||||||
| * `path` - existing filenames | * `path` - existing filenames | ||||||
| * `path_pathseparator` - path separators in filenames (`/`); if unset, `path` is used (default) | * `path_pathseparator` - path separators in filenames (`/`); if unset, `path` is used (default) | ||||||
| * `path_prefix` - prefixes of existing filenames | * `path_prefix` - prefixes of existing filenames | ||||||
|  |  | ||||||
|  | @ -36,6 +36,7 @@ | ||||||
| : ${ZSH_HIGHLIGHT_STYLES[global-alias]:=fg=cyan} | : ${ZSH_HIGHLIGHT_STYLES[global-alias]:=fg=cyan} | ||||||
| : ${ZSH_HIGHLIGHT_STYLES[precommand]:=fg=green,underline} | : ${ZSH_HIGHLIGHT_STYLES[precommand]:=fg=green,underline} | ||||||
| : ${ZSH_HIGHLIGHT_STYLES[commandseparator]:=none} | : ${ZSH_HIGHLIGHT_STYLES[commandseparator]:=none} | ||||||
|  | : ${ZSH_HIGHLIGHT_STYLES[autodirectory]:=fg=green,underline} | ||||||
| : ${ZSH_HIGHLIGHT_STYLES[path]:=underline} | : ${ZSH_HIGHLIGHT_STYLES[path]:=underline} | ||||||
| : ${ZSH_HIGHLIGHT_STYLES[path_pathseparator]:=} | : ${ZSH_HIGHLIGHT_STYLES[path_pathseparator]:=} | ||||||
| : ${ZSH_HIGHLIGHT_STYLES[path_prefix_pathseparator]:=} | : ${ZSH_HIGHLIGHT_STYLES[path_prefix_pathseparator]:=} | ||||||
|  | @ -113,6 +114,7 @@ _zsh_highlight_main_calculate_fallback() { | ||||||
|       command arg0 |       command arg0 | ||||||
|       precommand arg0 |       precommand arg0 | ||||||
|       hashed-command arg0 |       hashed-command arg0 | ||||||
|  |       autodirectory arg0 | ||||||
|       arg0_\* arg0 |       arg0_\* arg0 | ||||||
| 
 | 
 | ||||||
|       # TODO: Maybe these? — |       # TODO: Maybe these? — | ||||||
|  | @ -1016,7 +1018,7 @@ _zsh_highlight_main_highlighter_highlight_list() | ||||||
|                           fi |                           fi | ||||||
|                           _zsh_highlight_main__stack_pop 'R' reserved-word |                           _zsh_highlight_main__stack_pop 'R' reserved-word | ||||||
|                         else |                         else | ||||||
|                           if _zsh_highlight_main_highlighter_check_path $arg; then |                           if _zsh_highlight_main_highlighter_check_path $arg 1; then | ||||||
|                             style=$REPLY |                             style=$REPLY | ||||||
|                           else |                           else | ||||||
|                             style=unknown-token |                             style=unknown-token | ||||||
|  | @ -1125,12 +1127,27 @@ _zsh_highlight_main_highlighter_highlight_path_separators() | ||||||
| # Check if $1 is a path. | # Check if $1 is a path. | ||||||
| # If yes, return 0 and in $REPLY the style to use. | # If yes, return 0 and in $REPLY the style to use. | ||||||
| # Else, return non-zero (and the contents of $REPLY is undefined). | # Else, return non-zero (and the contents of $REPLY is undefined). | ||||||
|  | # | ||||||
|  | # $2 should be non-zero iff we're in command position. | ||||||
| _zsh_highlight_main_highlighter_check_path() | _zsh_highlight_main_highlighter_check_path() | ||||||
| { | { | ||||||
|   _zsh_highlight_main_highlighter_expand_path "$1" |   _zsh_highlight_main_highlighter_expand_path "$1" | ||||||
|   local expanded_path="$REPLY" tmp_path |   local expanded_path="$REPLY" tmp_path | ||||||
|  |   integer in_command_position=$2 | ||||||
| 
 | 
 | ||||||
|   REPLY=path |   if [[ $zsyh_user_options[autocd] == on ]]; then | ||||||
|  |     integer autocd=1 | ||||||
|  |   else | ||||||
|  |     integer autocd=0 | ||||||
|  |   fi | ||||||
|  | 
 | ||||||
|  |   if (( in_command_position )); then | ||||||
|  |     # ### Currently, this value is never returned: either it's overwritten | ||||||
|  |     # ### below, or the return code is non-zero | ||||||
|  |     REPLY=arg0 | ||||||
|  |   else | ||||||
|  |     REPLY=path | ||||||
|  |   fi | ||||||
| 
 | 
 | ||||||
|   if [[ ${1[1]} == '=' && $1 == ??* && ${1[2]} != $'\x28' && $zsyh_user_options[equals] == 'on' && $expanded_path[1] != '/' ]]; then |   if [[ ${1[1]} == '=' && $1 == ??* && ${1[2]} != $'\x28' && $zsyh_user_options[equals] == 'on' && $expanded_path[1] != '/' ]]; then | ||||||
|     REPLY=unknown-token # will error out if executed |     REPLY=unknown-token # will error out if executed | ||||||
|  | @ -1152,15 +1169,35 @@ _zsh_highlight_main_highlighter_check_path() | ||||||
|     tmp_path=$tmp_path:h |     tmp_path=$tmp_path:h | ||||||
|   done |   done | ||||||
| 
 | 
 | ||||||
|   [[ -L $expanded_path ]] && return 0 |   if (( in_command_position )); then | ||||||
|   [[ -e $expanded_path ]] && return 0 |     if [[ -x $expanded_path ]]; then | ||||||
|  |       if (( autocd )); then | ||||||
|  |         if [[ -d $expanded_path ]]; then | ||||||
|  |           REPLY=autodirectory | ||||||
|  |         fi | ||||||
|  |         return 0 | ||||||
|  |       elif [[ ! -d $expanded_path ]]; then | ||||||
|  |         # ### This seems unreachable for the current callers | ||||||
|  |         return 0 | ||||||
|  |       fi | ||||||
|  |     fi | ||||||
|  |   else | ||||||
|  |     if [[ -L $expanded_path || -e $expanded_path ]]; then | ||||||
|  |       return 0 | ||||||
|  |     fi | ||||||
|  |   fi | ||||||
| 
 | 
 | ||||||
|   # Search the path in CDPATH |   # Search the path in CDPATH | ||||||
|   if [[ $expanded_path != /* ]]; then |   if [[ $expanded_path != /* ]] && (( autocd || ! in_command_position )); then | ||||||
|     local cdpath_dir |  | ||||||
|     # TODO: When we've dropped support for pre-5.0.6 zsh, use the *(Y1) glob qualifier here. |     # TODO: When we've dropped support for pre-5.0.6 zsh, use the *(Y1) glob qualifier here. | ||||||
|  |     local cdpath_dir | ||||||
|     for cdpath_dir in $cdpath ; do |     for cdpath_dir in $cdpath ; do | ||||||
|       [[ -e "$cdpath_dir/$expanded_path" ]] && return 0 |       if [[ -d "$cdpath_dir/$expanded_path" && -x "$cdpath_dir/$expanded_path" ]]; then | ||||||
|  |         if (( in_command_position && autocd )); then | ||||||
|  |           REPLY=autodirectory | ||||||
|  |         fi | ||||||
|  |         return 0 | ||||||
|  |       fi | ||||||
|     done |     done | ||||||
|   fi |   fi | ||||||
| 
 | 
 | ||||||
|  | @ -1169,10 +1206,18 @@ _zsh_highlight_main_highlighter_check_path() | ||||||
| 
 | 
 | ||||||
|   # If this word ends the buffer, check if it's the prefix of a valid path. |   # If this word ends the buffer, check if it's the prefix of a valid path. | ||||||
|   if (( has_end && (len == end_pos) )) && |   if (( has_end && (len == end_pos) )) && | ||||||
|  |      (( ! in_alias )) && | ||||||
|      [[ $WIDGET != zle-line-finish ]]; then |      [[ $WIDGET != zle-line-finish ]]; then | ||||||
|     # TODO: When we've dropped support for pre-5.0.6 zsh, use the *(Y1) glob qualifier here. |     # TODO: When we've dropped support for pre-5.0.6 zsh, use the *(Y1) glob qualifier here. | ||||||
|     local -a tmp |     local -a tmp | ||||||
|     tmp=( ${expanded_path}*(N) ) |     if (( in_command_position )); then | ||||||
|  |       # We include directories even when autocd is enabled, because those | ||||||
|  |       # directories might contain executable files: e.g., BUFFER="/bi" en route | ||||||
|  |       # to typing "/bin/sh". | ||||||
|  |       tmp=( ${expanded_path}*(N-*,N-/) ) | ||||||
|  |     else | ||||||
|  |       tmp=( ${expanded_path}*(N) ) | ||||||
|  |     fi | ||||||
|     (( ${+tmp[1]} )) && REPLY=path_prefix && return 0 |     (( ${+tmp[1]} )) && REPLY=path_prefix && return 0 | ||||||
|   fi |   fi | ||||||
| 
 | 
 | ||||||
|  | @ -1183,6 +1228,8 @@ _zsh_highlight_main_highlighter_check_path() | ||||||
| # Highlight an argument and possibly special chars in quotes starting at $1 in $arg | # Highlight an argument and possibly special chars in quotes starting at $1 in $arg | ||||||
| # This command will at least highlight $1 to end_pos with the default style | # This command will at least highlight $1 to end_pos with the default style | ||||||
| # If $2 is set to 0, the argument cannot be highlighted as an option. | # If $2 is set to 0, the argument cannot be highlighted as an option. | ||||||
|  | # | ||||||
|  | # This function currently assumes it's never called for the command word. | ||||||
| _zsh_highlight_main_highlighter_highlight_argument() | _zsh_highlight_main_highlighter_highlight_argument() | ||||||
| { | { | ||||||
|   local base_style=default i=$1 option_eligible=${2:-1} path_eligible=1 ret start style |   local base_style=default i=$1 option_eligible=${2:-1} path_eligible=1 ret start style | ||||||
|  | @ -1317,7 +1364,8 @@ _zsh_highlight_main_highlighter_highlight_argument() | ||||||
|       else |       else | ||||||
|         base_style=numeric-fd |         base_style=numeric-fd | ||||||
|       fi |       fi | ||||||
|     elif _zsh_highlight_main_highlighter_check_path $arg[$1,-1]; then |     # This function is currently never called for the command word, so $2 is hard-coded as 0. | ||||||
|  |     elif _zsh_highlight_main_highlighter_check_path $arg[$1,-1] 0; then | ||||||
|       base_style=$REPLY |       base_style=$REPLY | ||||||
|       _zsh_highlight_main_highlighter_highlight_path_separators $base_style |       _zsh_highlight_main_highlighter_highlight_path_separators $base_style | ||||||
|       highlights+=($reply) |       highlights+=($reply) | ||||||
|  |  | ||||||
|  | @ -31,5 +31,5 @@ | ||||||
| BUFFER=$'/' | BUFFER=$'/' | ||||||
| 
 | 
 | ||||||
| expected_region_highlight=( | expected_region_highlight=( | ||||||
|   '1 1 path' # / |   '1 1 path_prefix' # / | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  | @ -0,0 +1,36 @@ | ||||||
|  | #!/usr/bin/env zsh | ||||||
|  | # ------------------------------------------------------------------------------------------------- | ||||||
|  | # Copyright (c) 2020 zsh-syntax-highlighting contributors | ||||||
|  | # All rights reserved. | ||||||
|  | # | ||||||
|  | # Redistribution and use in source and binary forms, with or without modification, are permitted | ||||||
|  | # provided that the following conditions are met: | ||||||
|  | # | ||||||
|  | #  * Redistributions of source code must retain the above copyright notice, this list of conditions | ||||||
|  | #    and the following disclaimer. | ||||||
|  | #  * Redistributions in binary form must reproduce the above copyright notice, this list of | ||||||
|  | #    conditions and the following disclaimer in the documentation and/or other materials provided | ||||||
|  | #    with the distribution. | ||||||
|  | #  * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors | ||||||
|  | #    may be used to endorse or promote products derived from this software without specific prior | ||||||
|  | #    written permission. | ||||||
|  | # | ||||||
|  | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR | ||||||
|  | # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | ||||||
|  | # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | ||||||
|  | # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||||||
|  | # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||||
|  | # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | ||||||
|  | # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | ||||||
|  | # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||||
|  | # ------------------------------------------------------------------------------------------------- | ||||||
|  | # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | ||||||
|  | # vim: ft=zsh sw=2 ts=2 et | ||||||
|  | # ------------------------------------------------------------------------------------------------- | ||||||
|  | 
 | ||||||
|  | setopt autocd | ||||||
|  | BUFFER=$'/' | ||||||
|  | 
 | ||||||
|  | expected_region_highlight=( | ||||||
|  |   '1 1 autodirectory' # / | ||||||
|  | ) | ||||||
|  | @ -28,8 +28,10 @@ | ||||||
| # vim: ft=zsh sw=2 ts=2 et | # vim: ft=zsh sw=2 ts=2 et | ||||||
| # ------------------------------------------------------------------------------------------------- | # ------------------------------------------------------------------------------------------------- | ||||||
| 
 | 
 | ||||||
| BUFFER=$'/bin' | BUFFER=$'/bin; /bin' | ||||||
| 
 | 
 | ||||||
| expected_region_highlight=( | expected_region_highlight=( | ||||||
|   '1 4 path' # /bin |   '1 4 unknown-token' # /bin (in middle) | ||||||
|  |   '5 5 commandseparator' # ; | ||||||
|  |   '7 10 path_prefix' # /bin (at end) | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  | @ -0,0 +1,38 @@ | ||||||
|  | #!/usr/bin/env zsh | ||||||
|  | # ------------------------------------------------------------------------------------------------- | ||||||
|  | # Copyright (c) 2020 zsh-syntax-highlighting contributors | ||||||
|  | # All rights reserved. | ||||||
|  | # | ||||||
|  | # Redistribution and use in source and binary forms, with or without modification, are permitted | ||||||
|  | # provided that the following conditions are met: | ||||||
|  | # | ||||||
|  | #  * Redistributions of source code must retain the above copyright notice, this list of conditions | ||||||
|  | #    and the following disclaimer. | ||||||
|  | #  * Redistributions in binary form must reproduce the above copyright notice, this list of | ||||||
|  | #    conditions and the following disclaimer in the documentation and/or other materials provided | ||||||
|  | #    with the distribution. | ||||||
|  | #  * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors | ||||||
|  | #    may be used to endorse or promote products derived from this software without specific prior | ||||||
|  | #    written permission. | ||||||
|  | # | ||||||
|  | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR | ||||||
|  | # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | ||||||
|  | # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | ||||||
|  | # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||||||
|  | # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||||
|  | # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | ||||||
|  | # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | ||||||
|  | # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||||
|  | # ------------------------------------------------------------------------------------------------- | ||||||
|  | # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | ||||||
|  | # vim: ft=zsh sw=2 ts=2 et | ||||||
|  | # ------------------------------------------------------------------------------------------------- | ||||||
|  | 
 | ||||||
|  | setopt autocd | ||||||
|  | BUFFER=$'/bin; /bin' | ||||||
|  | 
 | ||||||
|  | expected_region_highlight=( | ||||||
|  |   '1 4 autodirectory' # /bin (in middle) | ||||||
|  |   '5 5 commandseparator' # ; | ||||||
|  |   '7 10 autodirectory' # /bin (at end) | ||||||
|  | ) | ||||||
|  | @ -32,5 +32,5 @@ alias x=/ | ||||||
| BUFFER=$'x' | BUFFER=$'x' | ||||||
| 
 | 
 | ||||||
| expected_region_highlight=( | expected_region_highlight=( | ||||||
|   '1 1 unknown-token "issue #668"' # x (/) |   '1 1 unknown-token' # x (/) | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  | @ -0,0 +1,37 @@ | ||||||
|  | #!/usr/bin/env zsh | ||||||
|  | # ------------------------------------------------------------------------------------------------- | ||||||
|  | # Copyright (c) 2020 zsh-syntax-highlighting contributors | ||||||
|  | # All rights reserved. | ||||||
|  | # | ||||||
|  | # Redistribution and use in source and binary forms, with or without modification, are permitted | ||||||
|  | # provided that the following conditions are met: | ||||||
|  | # | ||||||
|  | #  * Redistributions of source code must retain the above copyright notice, this list of conditions | ||||||
|  | #    and the following disclaimer. | ||||||
|  | #  * Redistributions in binary form must reproduce the above copyright notice, this list of | ||||||
|  | #    conditions and the following disclaimer in the documentation and/or other materials provided | ||||||
|  | #    with the distribution. | ||||||
|  | #  * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors | ||||||
|  | #    may be used to endorse or promote products derived from this software without specific prior | ||||||
|  | #    written permission. | ||||||
|  | # | ||||||
|  | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR | ||||||
|  | # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | ||||||
|  | # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | ||||||
|  | # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||||||
|  | # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||||
|  | # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | ||||||
|  | # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | ||||||
|  | # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||||
|  | # ------------------------------------------------------------------------------------------------- | ||||||
|  | # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | ||||||
|  | # vim: ft=zsh sw=2 ts=2 et | ||||||
|  | # ------------------------------------------------------------------------------------------------- | ||||||
|  | 
 | ||||||
|  | setopt autocd | ||||||
|  | alias x=/ | ||||||
|  | BUFFER=$'x' | ||||||
|  | 
 | ||||||
|  | expected_region_highlight=( | ||||||
|  |   '1 1 alias' # x | ||||||
|  | ) | ||||||
|  | @ -34,7 +34,7 @@ | ||||||
| BUFFER='$PWD; ${PWD}' | BUFFER='$PWD; ${PWD}' | ||||||
| 
 | 
 | ||||||
| expected_region_highlight=( | expected_region_highlight=( | ||||||
|   "1 4 path" # $PWD |   "1 4 unknown-token" # $PWD (without AUTO_CD) | ||||||
|   "5 5 commandseparator" # ; |   "5 5 commandseparator" # ; | ||||||
|   "7 12 path" # ${PWD} |   "7 12 path_prefix" # ${PWD} | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  | @ -0,0 +1,38 @@ | ||||||
|  | #!/usr/bin/env zsh | ||||||
|  | # ------------------------------------------------------------------------------------------------- | ||||||
|  | # Copyright (c) 2020 zsh-syntax-highlighting contributors | ||||||
|  | # All rights reserved. | ||||||
|  | # | ||||||
|  | # Redistribution and use in source and binary forms, with or without modification, are permitted | ||||||
|  | # provided that the following conditions are met: | ||||||
|  | # | ||||||
|  | #  * Redistributions of source code must retain the above copyright notice, this list of conditions | ||||||
|  | #    and the following disclaimer. | ||||||
|  | #  * Redistributions in binary form must reproduce the above copyright notice, this list of | ||||||
|  | #    conditions and the following disclaimer in the documentation and/or other materials provided | ||||||
|  | #    with the distribution. | ||||||
|  | #  * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors | ||||||
|  | #    may be used to endorse or promote products derived from this software without specific prior | ||||||
|  | #    written permission. | ||||||
|  | # | ||||||
|  | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR | ||||||
|  | # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | ||||||
|  | # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | ||||||
|  | # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||||||
|  | # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||||
|  | # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | ||||||
|  | # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | ||||||
|  | # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||||
|  | # ------------------------------------------------------------------------------------------------- | ||||||
|  | # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | ||||||
|  | # vim: ft=zsh sw=2 ts=2 et | ||||||
|  | # ------------------------------------------------------------------------------------------------- | ||||||
|  | 
 | ||||||
|  | setopt autocd | ||||||
|  | BUFFER=$'$PWD; ${PWD}' | ||||||
|  | 
 | ||||||
|  | expected_region_highlight=( | ||||||
|  |   '1 4 autodirectory' # $PWD | ||||||
|  |   '5 5 commandseparator' # ; | ||||||
|  |   '7 12 autodirectory' # ${PWD} | ||||||
|  | ) | ||||||
|  | @ -0,0 +1,39 @@ | ||||||
|  | #!/usr/bin/env zsh | ||||||
|  | # ------------------------------------------------------------------------------------------------- | ||||||
|  | # Copyright (c) 2020 zsh-syntax-highlighting contributors | ||||||
|  | # All rights reserved. | ||||||
|  | # | ||||||
|  | # Redistribution and use in source and binary forms, with or without modification, are permitted | ||||||
|  | # provided that the following conditions are met: | ||||||
|  | # | ||||||
|  | #  * Redistributions of source code must retain the above copyright notice, this list of conditions | ||||||
|  | #    and the following disclaimer. | ||||||
|  | #  * Redistributions in binary form must reproduce the above copyright notice, this list of | ||||||
|  | #    conditions and the following disclaimer in the documentation and/or other materials provided | ||||||
|  | #    with the distribution. | ||||||
|  | #  * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors | ||||||
|  | #    may be used to endorse or promote products derived from this software without specific prior | ||||||
|  | #    written permission. | ||||||
|  | # | ||||||
|  | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR | ||||||
|  | # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | ||||||
|  | # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | ||||||
|  | # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||||||
|  | # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||||
|  | # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | ||||||
|  | # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | ||||||
|  | # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||||
|  | # ------------------------------------------------------------------------------------------------- | ||||||
|  | # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | ||||||
|  | # vim: ft=zsh sw=2 ts=2 et | ||||||
|  | # ------------------------------------------------------------------------------------------------- | ||||||
|  | 
 | ||||||
|  | touch foo | ||||||
|  | chmod -x foo | ||||||
|  | BUFFER=$'./foo; ./foo' | ||||||
|  | 
 | ||||||
|  | expected_region_highlight=( | ||||||
|  |   '1 5 unknown-token' # ./foo (in middle) | ||||||
|  |   '6 6 commandseparator' # ; | ||||||
|  |   '8 12 unknown-token' # ./foo (at end) | ||||||
|  | ) | ||||||
		Loading…
	
		Reference in New Issue