86 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
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
 | 
						|
 | 
						|
 | 
						|
How to activate highlighters
 | 
						|
----------------------------
 | 
						|
 | 
						|
To activate an highlighter, add it to the `ZSH_HIGHLIGHT_HIGHLIGHTERS` array in
 | 
						|
`~/.zshrc`, for example:
 | 
						|
 | 
						|
    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 `myhighlighter` highlighter:
 | 
						|
 | 
						|
* Create your script at
 | 
						|
    `highlighters/${myhighlighter}/${myhighlighter}-highlighter.zsh`.
 | 
						|
 | 
						|
* Implement the `_zsh_highlight_myhighlighter_highlighter_predicate` function.
 | 
						|
  This function must return 0 when the highlighter needs to be called and
 | 
						|
  non-zero otherwise, for example:
 | 
						|
 | 
						|
        _zsh_highlight_myhighlighter_highlighter_predicate() {
 | 
						|
          # Call this highlighter in SVN working copies
 | 
						|
          [[ -d .svn ]]
 | 
						|
        }
 | 
						|
 | 
						|
* Implement the `_zsh_highlight_myhighlighter_highlighter` 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_HIGHLIGHT_STYLES[myhighlighter:aurora]:=fg=green}
 | 
						|
 | 
						|
        _zsh_highlight_myhighlighter_highlighter() {
 | 
						|
          # Colorize the whole buffer with the 'aurora' style
 | 
						|
          _zsh_highlight_add_highlight 0 $#BUFFER myhighlighter:aurora
 | 
						|
        }
 | 
						|
 | 
						|
* Activate your highlighter in `~/.zshrc`:
 | 
						|
 | 
						|
        ZSH_HIGHLIGHT_HIGHLIGHTERS+=(myhighlighter)
 | 
						|
 | 
						|
* [Write tests](../tests/README.md).
 |