*: Change highlighters' namespace.
Fixes #329. Merge remote-tracking branch 'danielsh/i329-v1' * danielsh/i329-v1: highlighters: Rename entry points. driver: Rename highlighter entry points
This commit is contained in:
commit
c7f7d2ff16
@ -54,16 +54,16 @@ To create your own `acme` highlighter:
|
|||||||
* Create your script at
|
* Create your script at
|
||||||
`highlighters/acme/acme-highlighter.zsh`.
|
`highlighters/acme/acme-highlighter.zsh`.
|
||||||
|
|
||||||
* Implement the `_zsh_highlight_acme_highlighter_predicate` function.
|
* Implement the `_zsh_highlight_highlighter_acme_predicate` function.
|
||||||
This function must return 0 when the highlighter needs to be called and
|
This function must return 0 when the highlighter needs to be called and
|
||||||
non-zero otherwise, for example:
|
non-zero otherwise, for example:
|
||||||
|
|
||||||
_zsh_highlight_acme_highlighter_predicate() {
|
_zsh_highlight_highlighter_acme_predicate() {
|
||||||
# Call this highlighter in SVN working copies
|
# Call this highlighter in SVN working copies
|
||||||
[[ -d .svn ]]
|
[[ -d .svn ]]
|
||||||
}
|
}
|
||||||
|
|
||||||
* Implement the `_zsh_highlight_acme_highlighter` function.
|
* Implement the `_zsh_highlight_highlighter_acme_paint` function.
|
||||||
This function does the actual syntax highlighting, by calling
|
This function does the actual syntax highlighting, by calling
|
||||||
`_zsh_highlight_add_highlight` with the start and end of the region to
|
`_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
|
be highlighted and the `ZSH_HIGHLIGHT_STYLES` key to use. Define the default
|
||||||
@ -73,13 +73,23 @@ To create your own `acme` highlighter:
|
|||||||
|
|
||||||
: ${ZSH_HIGHLIGHT_STYLES[acme:aurora]:=fg=green}
|
: ${ZSH_HIGHLIGHT_STYLES[acme:aurora]:=fg=green}
|
||||||
|
|
||||||
_zsh_highlight_acme_highlighter() {
|
_zsh_highlight_highlighter_acme_paint() {
|
||||||
# Colorize the whole buffer with the 'aurora' style
|
# Colorize the whole buffer with the 'aurora' style
|
||||||
_zsh_highlight_add_highlight 0 $#BUFFER acme:aurora
|
_zsh_highlight_add_highlight 0 $#BUFFER acme:aurora
|
||||||
}
|
}
|
||||||
|
|
||||||
* Name your own functions and global variables `_zsh_highlight_acme_*`.
|
* Name your own functions and global variables `_zsh_highlight_acme_*`.
|
||||||
|
|
||||||
|
- In zsh-syntax-highlighting 0.4.0 and earlier, the entrypoints
|
||||||
|
`_zsh_highlight_highlighter_acme_predicate` and
|
||||||
|
`_zsh_highlight_highlighter_acme_paint`
|
||||||
|
were named
|
||||||
|
`_zsh_highlight_acme_highlighter_predicate` and
|
||||||
|
`_zsh_highlight_highlighter_acme_paint` respectively.
|
||||||
|
|
||||||
|
These names are still supported for backwards compatibility;
|
||||||
|
however, support for them will be removed in a a future major or minor release (v0.x.0 or v1.0.0).
|
||||||
|
|
||||||
* Activate your highlighter in `~/.zshrc`:
|
* Activate your highlighter in `~/.zshrc`:
|
||||||
|
|
||||||
ZSH_HIGHLIGHT_HIGHLIGHTERS+=(acme)
|
ZSH_HIGHLIGHT_HIGHLIGHTERS+=(acme)
|
||||||
|
@ -38,13 +38,13 @@
|
|||||||
: ${ZSH_HIGHLIGHT_STYLES[cursor-matchingbracket]:=standout}
|
: ${ZSH_HIGHLIGHT_STYLES[cursor-matchingbracket]:=standout}
|
||||||
|
|
||||||
# Whether the brackets highlighter should be called or not.
|
# Whether the brackets highlighter should be called or not.
|
||||||
_zsh_highlight_brackets_highlighter_predicate()
|
_zsh_highlight_highlighter_brackets_predicate()
|
||||||
{
|
{
|
||||||
_zsh_highlight_cursor_moved || _zsh_highlight_buffer_modified
|
_zsh_highlight_cursor_moved || _zsh_highlight_buffer_modified
|
||||||
}
|
}
|
||||||
|
|
||||||
# Brackets highlighting function.
|
# Brackets highlighting function.
|
||||||
_zsh_highlight_brackets_highlighter()
|
_zsh_highlight_highlighter_brackets_paint()
|
||||||
{
|
{
|
||||||
local char style
|
local char style
|
||||||
local -i bracket_color_size=${#ZSH_HIGHLIGHT_STYLES[(I)bracket-level-*]} buflen=${#BUFFER} level=0 matchingpos pos
|
local -i bracket_color_size=${#ZSH_HIGHLIGHT_STYLES[(I)bracket-level-*]} buflen=${#BUFFER} level=0 matchingpos pos
|
||||||
|
@ -32,14 +32,14 @@
|
|||||||
: ${ZSH_HIGHLIGHT_STYLES[cursor]:=standout}
|
: ${ZSH_HIGHLIGHT_STYLES[cursor]:=standout}
|
||||||
|
|
||||||
# Whether the cursor highlighter should be called or not.
|
# Whether the cursor highlighter should be called or not.
|
||||||
_zsh_highlight_cursor_highlighter_predicate()
|
_zsh_highlight_highlighter_cursor_predicate()
|
||||||
{
|
{
|
||||||
# remove cursor highlighting when the line is finished
|
# remove cursor highlighting when the line is finished
|
||||||
[[ $WIDGET == zle-line-finish ]] || _zsh_highlight_cursor_moved
|
[[ $WIDGET == zle-line-finish ]] || _zsh_highlight_cursor_moved
|
||||||
}
|
}
|
||||||
|
|
||||||
# Cursor highlighting function.
|
# Cursor highlighting function.
|
||||||
_zsh_highlight_cursor_highlighter()
|
_zsh_highlight_highlighter_cursor_paint()
|
||||||
{
|
{
|
||||||
[[ $WIDGET == zle-line-finish ]] && return
|
[[ $WIDGET == zle-line-finish ]] && return
|
||||||
|
|
||||||
|
@ -32,13 +32,13 @@
|
|||||||
: ${ZSH_HIGHLIGHT_STYLES[line]:=}
|
: ${ZSH_HIGHLIGHT_STYLES[line]:=}
|
||||||
|
|
||||||
# Whether the root highlighter should be called or not.
|
# Whether the root highlighter should be called or not.
|
||||||
_zsh_highlight_line_highlighter_predicate()
|
_zsh_highlight_highlighter_line_predicate()
|
||||||
{
|
{
|
||||||
_zsh_highlight_buffer_modified
|
_zsh_highlight_buffer_modified
|
||||||
}
|
}
|
||||||
|
|
||||||
# root highlighting function.
|
# root highlighting function.
|
||||||
_zsh_highlight_line_highlighter()
|
_zsh_highlight_highlighter_line_paint()
|
||||||
{
|
{
|
||||||
_zsh_highlight_add_highlight 0 $#BUFFER line
|
_zsh_highlight_add_highlight 0 $#BUFFER line
|
||||||
}
|
}
|
||||||
|
@ -60,7 +60,7 @@
|
|||||||
: ${ZSH_HIGHLIGHT_STYLES[comment]:=fg=black,bold}
|
: ${ZSH_HIGHLIGHT_STYLES[comment]:=fg=black,bold}
|
||||||
|
|
||||||
# Whether the highlighter should be called or not.
|
# Whether the highlighter should be called or not.
|
||||||
_zsh_highlight_main_highlighter_predicate()
|
_zsh_highlight_highlighter_main_predicate()
|
||||||
{
|
{
|
||||||
# may need to remove path_prefix highlighting when the line ends
|
# may need to remove path_prefix highlighting when the line ends
|
||||||
[[ $WIDGET == zle-line-finish ]] || _zsh_highlight_buffer_modified
|
[[ $WIDGET == zle-line-finish ]] || _zsh_highlight_buffer_modified
|
||||||
@ -149,7 +149,7 @@ _zsh_highlight_main__resolve_alias() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Main syntax highlighting function.
|
# Main syntax highlighting function.
|
||||||
_zsh_highlight_main_highlighter()
|
_zsh_highlight_highlighter_main_paint()
|
||||||
{
|
{
|
||||||
## Before we even 'emulate -L', we must test a few options that would reset.
|
## Before we even 'emulate -L', we must test a few options that would reset.
|
||||||
if [[ -o interactive_comments ]]; then
|
if [[ -o interactive_comments ]]; then
|
||||||
@ -165,7 +165,7 @@ _zsh_highlight_main_highlighter()
|
|||||||
|
|
||||||
# At the PS3 prompt and in vared, highlight nothing.
|
# At the PS3 prompt and in vared, highlight nothing.
|
||||||
#
|
#
|
||||||
# (We can't check this in _zsh_highlight_main_highlighter_predicate because
|
# (We can't check this in _zsh_highlight_highlighter_main_predicate because
|
||||||
# if the predicate returns false, the previous value of region_highlight
|
# if the predicate returns false, the previous value of region_highlight
|
||||||
# would be reused.)
|
# would be reused.)
|
||||||
if [[ $CONTEXT == (select|vared) ]]; then
|
if [[ $CONTEXT == (select|vared) ]]; then
|
||||||
|
@ -32,13 +32,13 @@
|
|||||||
typeset -gA ZSH_HIGHLIGHT_PATTERNS
|
typeset -gA ZSH_HIGHLIGHT_PATTERNS
|
||||||
|
|
||||||
# Whether the pattern highlighter should be called or not.
|
# Whether the pattern highlighter should be called or not.
|
||||||
_zsh_highlight_pattern_highlighter_predicate()
|
_zsh_highlight_highlighter_pattern_predicate()
|
||||||
{
|
{
|
||||||
_zsh_highlight_buffer_modified
|
_zsh_highlight_buffer_modified
|
||||||
}
|
}
|
||||||
|
|
||||||
# Pattern syntax highlighting function.
|
# Pattern syntax highlighting function.
|
||||||
_zsh_highlight_pattern_highlighter()
|
_zsh_highlight_highlighter_pattern_paint()
|
||||||
{
|
{
|
||||||
setopt localoptions extendedglob
|
setopt localoptions extendedglob
|
||||||
local pattern
|
local pattern
|
||||||
|
@ -32,13 +32,13 @@
|
|||||||
: ${ZSH_HIGHLIGHT_STYLES[root]:=standout}
|
: ${ZSH_HIGHLIGHT_STYLES[root]:=standout}
|
||||||
|
|
||||||
# Whether the root highlighter should be called or not.
|
# Whether the root highlighter should be called or not.
|
||||||
_zsh_highlight_root_highlighter_predicate()
|
_zsh_highlight_highlighter_root_predicate()
|
||||||
{
|
{
|
||||||
_zsh_highlight_buffer_modified
|
_zsh_highlight_buffer_modified
|
||||||
}
|
}
|
||||||
|
|
||||||
# root highlighting function.
|
# root highlighting function.
|
||||||
_zsh_highlight_root_highlighter()
|
_zsh_highlight_highlighter_root_paint()
|
||||||
{
|
{
|
||||||
if (( EUID == 0 )) { _zsh_highlight_add_highlight 0 $#BUFFER root }
|
if (( EUID == 0 )) { _zsh_highlight_add_highlight 0 $#BUFFER root }
|
||||||
}
|
}
|
||||||
|
@ -92,7 +92,7 @@ _zsh_highlight()
|
|||||||
typeset -ga ${cache_place}
|
typeset -ga ${cache_place}
|
||||||
|
|
||||||
# If highlighter needs to be invoked
|
# If highlighter needs to be invoked
|
||||||
if "_zsh_highlight_${highlighter}_highlighter_predicate"; then
|
if "_zsh_highlight_highlighter_${highlighter}_predicate"; then
|
||||||
|
|
||||||
# save a copy, and cleanup region_highlight
|
# save a copy, and cleanup region_highlight
|
||||||
region_highlight_copy=("${region_highlight[@]}")
|
region_highlight_copy=("${region_highlight[@]}")
|
||||||
@ -100,7 +100,7 @@ _zsh_highlight()
|
|||||||
|
|
||||||
# Execute highlighter and save result
|
# Execute highlighter and save result
|
||||||
{
|
{
|
||||||
"_zsh_highlight_${highlighter}_highlighter"
|
"_zsh_highlight_highlighter_${highlighter}_paint"
|
||||||
} always {
|
} always {
|
||||||
eval "${cache_place}=(\"\${region_highlight[@]}\")"
|
eval "${cache_place}=(\"\${region_highlight[@]}\")"
|
||||||
}
|
}
|
||||||
@ -329,13 +329,26 @@ _zsh_highlight_load_highlighters()
|
|||||||
local highlighter highlighter_dir
|
local highlighter highlighter_dir
|
||||||
for highlighter_dir ($1/*/); do
|
for highlighter_dir ($1/*/); do
|
||||||
highlighter="${highlighter_dir:t}"
|
highlighter="${highlighter_dir:t}"
|
||||||
[[ -f "$highlighter_dir/${highlighter}-highlighter.zsh" ]] && {
|
[[ -f "$highlighter_dir/${highlighter}-highlighter.zsh" ]] &&
|
||||||
. "$highlighter_dir/${highlighter}-highlighter.zsh"
|
. "$highlighter_dir/${highlighter}-highlighter.zsh"
|
||||||
type "_zsh_highlight_${highlighter}_highlighter" &> /dev/null &&
|
if type "_zsh_highlight_highlighter_${highlighter}_paint" &> /dev/null &&
|
||||||
type "_zsh_highlight_${highlighter}_highlighter_predicate" &> /dev/null || {
|
type "_zsh_highlight_highlighter_${highlighter}_predicate" &> /dev/null;
|
||||||
print -r -- >&2 "zsh-syntax-highlighting: '${highlighter}' highlighter should define both required functions '_zsh_highlight_${highlighter}_highlighter' and '_zsh_highlight_${highlighter}_highlighter_predicate' in '${highlighter_dir}/${highlighter}-highlighter.zsh'."
|
then
|
||||||
}
|
# New (0.5.0) function names
|
||||||
}
|
elif type "_zsh_highlight_${highlighter}_highlighter" &> /dev/null &&
|
||||||
|
type "_zsh_highlight_${highlighter}_highlighter_predicate" &> /dev/null;
|
||||||
|
then
|
||||||
|
# Old (0.4.x) function names
|
||||||
|
if false; then
|
||||||
|
# TODO: only show this warning for plugin authors/maintainers, not for end users
|
||||||
|
print -r -- >&2 "zsh-syntax-highlighting: warning: ${(qq)highlighter} highlighter uses deprecated entry point names; please ask its maintainer to update it: https://github.com/zsh-users/zsh-syntax-highlighting/issues/329"
|
||||||
|
fi
|
||||||
|
# Make it work.
|
||||||
|
eval "_zsh_highlight_highlighter_${(q)highlighter}_paint() { _zsh_highlight_${(q)highlighter}_highlighter \"\$@\" }"
|
||||||
|
eval "_zsh_highlight_highlighter_${(q)highlighter}_predicate() { _zsh_highlight_${(q)highlighter}_highlighter_predicate \"\$@\" }"
|
||||||
|
else
|
||||||
|
print -r -- >&2 "zsh-syntax-highlighting: '${highlighter}' highlighter should define both required functions '_zsh_highlight_highlighter_${highlighter}_paint' and '_zsh_highlight_highlighter_${highlighter}_predicate' in '${highlighter_dir}/${highlighter}-highlighter.zsh'."
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user