zsh-syntax-highlighting/highlighters/main
Matthew Martin 341a3ae1f0 highlighters: Use _zsh_highlight_add_highlight
_zsh_highlight_add_highlight appends to region_highlight $1 $2 and the
next non-null parameter. If there is no non-null parameter, do nothing,
This is so that highlighters can add a style with fallbacks if the most
specific style is not defined. If none of the applicable styles are
defined, do the right thing and don't add an invalid entry to
region_highlight.

The pattern highlighter doesn't use this function as it'd need too large
of an API change.
2016-04-29 10:09:16 -05:00
..
test-data tests: Specify the style key instead of the style itself 2016-04-29 09:51:13 -05:00
main-highlighter.zsh highlighters: Use _zsh_highlight_add_highlight 2016-04-29 10:09:16 -05:00
README.md docs: Fix broken symlinks 2015-11-24 00:40:09 -06:00

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)
  • 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
  • path - existing filenames
  • path_prefix - prefixes of existing filenames
  • globbing - 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 assignments
  • redirection - redirection operators (<, >, etc)
  • comment - comments, when setopt 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.