File tree 2 files changed +19
-7
lines changed
2 files changed +19
-7
lines changed Original file line number Diff line number Diff line change @@ -46,10 +46,13 @@ syntax highlighting.
46
46
47
47
### Does syntax highlighting work during incremental history search?
48
48
49
- Highlighting the command line during an incremental history search
50
- (with the ` history-incremental-search-backward ` widget, which is
51
- bound by default to <kbd >Ctrl+R</kbd > in zsh's emacs keymap) requires zsh 5.3
52
- or newer.
49
+ Yes!
50
+
51
+ If you're using ` history-incremental-search-backward ` (by default bound to <kbd >Ctrl+R</kbd >
52
+ in zsh's emacs keymap) then it works with _ zsh version 5.3 and newer_ .
53
+
54
+ If you're using ` history-incremental-pattern-search-backward ` , then syntax highlighting works
55
+ in _ zsh 5.3.2 and newer_ due to [ a bug in zsh] ( http://www.zsh.org/cgi-bin/mla/redirect?WORKERNUMBER=40285 ) .
53
56
54
57
Under zsh 5.2 and older, the zsh-default [ underlining] [ zshzle-Character-Highlighting ]
55
58
of the matched portion of the buffer remains available, but zsh-syntax-highlighting's
Original file line number Diff line number Diff line change 53
53
# Core highlighting update system
54
54
# -------------------------------------------------------------------------------------------------
55
55
56
+ # Use workaround for bug in ZSH?
57
+ # zsh-users/zsh@48cadf4 http://www.zsh.org/mla/workers//2017/msg00034.html
58
+ autoload -U is-at-least
59
+ if is-at-least 5.3.2; then
60
+ zsh_highlight__pat_static_bug=false
61
+ else
62
+ zsh_highlight__pat_static_bug=true
63
+ fi
64
+
56
65
# Array declaring active highlighters names.
57
66
typeset -ga ZSH_HIGHLIGHT_HIGHLIGHTERS
58
67
@@ -67,7 +76,9 @@ _zsh_highlight()
67
76
68
77
# Remove all highlighting in isearch, so that only the underlining done by zsh itself remains.
69
78
# For details see FAQ entry 'Why does syntax highlighting not work while searching history?'.
70
- if [[ $WIDGET == zle-isearch-update ]] && ! (( $+ ISEARCHMATCH_ACTIVE )) ; then
79
+ # This disables highlighting during isearch (for reasons explained in README.md) unless zsh is new enough
80
+ # and doesn't have the 5.3.1 bug
81
+ if [[ $WIDGET == zle-isearch-update ]] && { $zsh_highlight__pat_static_bug || ! (( $+ ISEARCHMATCH_ACTIVE )) }; then
71
82
region_highlight=()
72
83
return $ret
73
84
fi
@@ -394,8 +405,6 @@ add-zsh-hook preexec _zsh_highlight_preexec_hook 2>/dev/null || {
394
405
# Load zsh/parameter module if available
395
406
zmodload zsh/parameter 2> /dev/null || true
396
407
397
- autoload -U is-at-least
398
-
399
408
# Initialize the array of active highlighters if needed.
400
409
[[ $# ZSH_HIGHLIGHT_HIGHLIGHTERS -eq 0 ]] && ZSH_HIGHLIGHT_HIGHLIGHTERS=(main)
401
410
You can’t perform that action at this time.
0 commit comments