12b879caf7
If possible, try to use the zsh/parameter module to get information about a shell words. This avoids subshells and is a huge speed improvement on systems such as cygwin. Note 1: $commands does not know about PATH_DIRS. So in case PATH_DIRS is set, 'type -w' is still used if nothing else matches. Note 2: zsh/parameter can't distinguish between 'command' and 'hashed'. Adjusted the test for that case to XFAIL. The ideal solution would be if whence had an option to put the result in REPLY instead of printing it to stdout. |
||
---|---|---|
.. | ||
test-data | ||
main-highlighter.zsh | ||
README.md |
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 / errorsreserved-word
- shell reserved words (if
,for
)alias
- aliasessuffix-alias
- suffix aliases (requires zsh 5.1.1 or newer)builtin
- shell builtin commands (shift
,pwd
,zstyle
)function
- function namescommand
- command namesprecommand
- precommand modifiers (e.g.,noglob
,builtin
)commandseparator
- command separation tokens (;
,&&
)hashed-command
- hashed commandspath
- existing filenamespath_prefix
- prefixes of existing filenamesglobbing
- globbing expressions (*.txt
)history-expansion
- history expansion expressions (!foo
and^foo^bar
)single-hyphen-option
- single hyphen options (-o
)double-hyphen-option
- double hyphen options (--option
)back-quoted-argument
- backquoted expressions (`foo`
)single-quoted-argument
- single quoted arguments ('foo'
)double-quoted-argument
- double quoted arguments ("foo"
)dollar-quoted-argument
- dollar quoted arguments ($'foo'
)dollar-double-quoted-argument
- parameter expansion inside double quotes ($foo
inside""
)back-double-quoted-argument
- back double quoted arguments (\x
inside""
)back-dollar-quoted-argument
- back dollar quoted arguments (\x
inside$''
)assign
- parameter assignmentsredirection
- redirection operators (<
,>
, etc)comment
- comments, whensetopt INTERACTIVE_COMMENTS
is in effect (echo # foo
)default
- everything else
To override one of those styles, change its entry in ZSH_HIGHLIGHT_STYLES
,
for example in ~/.zshrc
:
# 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.