mirror of
https://github.com/zsh-users/zsh-syntax-highlighting.git
synced 2025-02-13 10:05:31 +08:00
Check for partial paths separately
It's really annoying to have partial paths appear the same as paths to complete files. However, it is still nice to be able to highlight them. Full paths are now bold while partial paths use plain underline.
This commit is contained in:
parent
e5d8a50d36
commit
0916794aeb
@ -31,7 +31,8 @@ This highlighter defines the following styles:
|
||||
* `precommand` - precommands (i.e. exec, builtin, ...)
|
||||
* `commandseparator` - command separation tokens
|
||||
* `hashed-command` - hashed commands
|
||||
* `path` - paths
|
||||
* `path` - paths which exist
|
||||
* `partial-path` - partial paths (prefixes of existing files)
|
||||
* `globbing` - globbing expressions
|
||||
* `history-expansion` - history expansion expressions
|
||||
* `single-hyphen-option` - single hyphen options
|
||||
|
@ -40,7 +40,8 @@
|
||||
: ${ZSH_HIGHLIGHT_STYLES[precommand]:=fg=green,underline}
|
||||
: ${ZSH_HIGHLIGHT_STYLES[commandseparator]:=none}
|
||||
: ${ZSH_HIGHLIGHT_STYLES[hashed-command]:=fg=green}
|
||||
: ${ZSH_HIGHLIGHT_STYLES[path]:=underline}
|
||||
: ${ZSH_HIGHLIGHT_STYLES[path]:=underline,bold}
|
||||
: ${ZSH_HIGHLIGHT_STYLES[partial-path]:=underline}
|
||||
: ${ZSH_HIGHLIGHT_STYLES[globbing]:=fg=blue}
|
||||
: ${ZSH_HIGHLIGHT_STYLES[history-expansion]:=fg=blue}
|
||||
: ${ZSH_HIGHLIGHT_STYLES[single-hyphen-option]:=none}
|
||||
@ -106,6 +107,8 @@ _zsh_highlight_main_highlighter()
|
||||
new_expression=true
|
||||
elif _zsh_highlight_main_highlighter_check_path; then
|
||||
style=$ZSH_HIGHLIGHT_STYLES[path]
|
||||
elif _zsh_highlight_main_highlighter_check_partial_path; then
|
||||
style=$ZSH_HIGHLIGHT_STYLES[partial-path]
|
||||
elif [[ $arg[0,1] = $histchars[0,1] ]]; then
|
||||
style=$ZSH_HIGHLIGHT_STYLES[history-expansion]
|
||||
else
|
||||
@ -128,6 +131,8 @@ _zsh_highlight_main_highlighter()
|
||||
*"*"*) $highlight_glob && style=$ZSH_HIGHLIGHT_STYLES[globbing] || style=$ZSH_HIGHLIGHT_STYLES[default];;
|
||||
*) if _zsh_highlight_main_highlighter_check_path; then
|
||||
style=$ZSH_HIGHLIGHT_STYLES[path]
|
||||
elif _zsh_highlight_main_highlighter_check_partial_path; then
|
||||
style=$ZSH_HIGHLIGHT_STYLES[partial-path]
|
||||
elif [[ $arg[0,1] = $histchars[0,1] ]]; then
|
||||
style=$ZSH_HIGHLIGHT_STYLES[history-expansion]
|
||||
elif [[ -n ${(M)ZSH_HIGHLIGHT_TOKENS_COMMANDSEPARATOR:#"$arg"} ]]; then
|
||||
@ -153,6 +158,16 @@ _zsh_highlight_main_highlighter_check_assign()
|
||||
|
||||
# Check if the argument is a path.
|
||||
_zsh_highlight_main_highlighter_check_path()
|
||||
{
|
||||
setopt localoptions nonomatch
|
||||
local expanded_path; : ${expanded_path:=${(Q)~arg}}
|
||||
[[ -z $expanded_path ]] && return 1
|
||||
[[ -e $expanded_path ]] && return 0
|
||||
return 1
|
||||
}
|
||||
|
||||
# Check if the argument is a partial path.
|
||||
_zsh_highlight_main_highlighter_check_partial_path()
|
||||
{
|
||||
setopt localoptions nonomatch
|
||||
local expanded_path; : ${expanded_path:=${(Q)~arg}}
|
||||
|
Loading…
Reference in New Issue
Block a user