treat zle-isearch-exit like an accept-* widget

Accepting a line in an iserch does not call through any of the
accept-widgets. To be able to still do some cleanup (remove
cursor imprint, remove partial path highlinting) use
zle-isearch-exit instead.
This commit is contained in:
m0viefreak 2015-12-29 20:04:52 +01:00
parent 38c3ac8831
commit fb418b90d3
3 changed files with 15 additions and 8 deletions

View File

@ -34,15 +34,14 @@
# 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_cursor_highlighter_predicate()
{ {
# accept-* may trigger removal of cursor highlighting # widgets which accept lines may trigger removal of cursor highlighting
[[ $WIDGET == accept-* ]] || _zsh_highlight_cursor_moved || _zsh_highlight_is_accept_line_type_widget
_zsh_highlight_cursor_moved
} }
# Cursor highlighting function. # Cursor highlighting function.
_zsh_highlight_cursor_highlighter() _zsh_highlight_cursor_highlighter()
{ {
[[ $WIDGET == accept-* ]] && return _zsh_highlight_is_accept_line_type_widget && return
region_highlight+=("$CURSOR $(( $CURSOR + 1 )) $ZSH_HIGHLIGHT_STYLES[cursor]") region_highlight+=("$CURSOR $(( $CURSOR + 1 )) $ZSH_HIGHLIGHT_STYLES[cursor]")
} }

View File

@ -60,8 +60,8 @@
# Whether the highlighter should be called or not. # Whether the highlighter should be called or not.
_zsh_highlight_main_highlighter_predicate() _zsh_highlight_main_highlighter_predicate()
{ {
# accept-* may trigger removal of path_prefix highlighting # widgets which accept lines may trigger removal of path_prefix highlighting
[[ $WIDGET == accept-* ]] || _zsh_highlight_is_accept_line_type_widget ||
_zsh_highlight_buffer_modified _zsh_highlight_buffer_modified
} }
@ -455,7 +455,7 @@ _zsh_highlight_main_highlighter_check_path()
# If this word ends the buffer, check if it's the prefix of a valid path. # If this word ends the buffer, check if it's the prefix of a valid path.
if [[ ${BUFFER[1]} != "-" && ${#BUFFER} == $end_pos ]] && if [[ ${BUFFER[1]} != "-" && ${#BUFFER} == $end_pos ]] &&
[[ $WIDGET != accept-* ]]; then ! _zsh_highlight_is_accept_line_type_widget; then
local -a tmp local -a tmp
tmp=( ${expanded_path}*(N) ) tmp=( ${expanded_path}*(N) )
(( $#tmp > 0 )) && style_override=path_prefix && return 0 (( $#tmp > 0 )) && style_override=path_prefix && return 0

View File

@ -174,6 +174,14 @@ _zsh_highlight_cursor_moved()
[[ -n $CURSOR ]] && [[ -n ${_ZSH_HIGHLIGHT_PRIOR_CURSOR-} ]] && (($_ZSH_HIGHLIGHT_PRIOR_CURSOR != $CURSOR)) [[ -n $CURSOR ]] && [[ -n ${_ZSH_HIGHLIGHT_PRIOR_CURSOR-} ]] && (($_ZSH_HIGHLIGHT_PRIOR_CURSOR != $CURSOR))
} }
# Whether the current widget is an accept-line type widget.
#
# Returns 0 if the the current widget is an accept-line type widget.
_zsh_highlight_is_accept_line_type_widget()
{
[[ $WIDGET == accept-* ]] || [[ $WIDGET == zsh-isearch-exit ]]
}
# ------------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------------
# Setup functions # Setup functions