mirror of
https://github.com/zsh-users/zsh-autosuggestions.git
synced 2025-02-13 10:05:30 +08:00
c1910348c7
Based on https://github.com/Valodim/zsh-capture-completion `zpty -r` with a pattern seems to have some funky behavior on older versions, giving unpredictable results Don't use `-s` option to `zmodload`. It is not available in zsh versions older than 5.3 If running in sync mode and a completion takes a long time, the user can ^C out of it. We need to use `always` in the strategy function or the pty will not be destroyed in this case and the next time we go to create it, it will fail, making the shell unusable. User can have many different completion styles set that will modify what they've already typed. These styles will result in suggestions that don't match what the user has already typed. We try our best to unset some of the more problematic ones, but add some code to fetch to invalidate suggestions that don't match what the user's already typed.
92 lines
2.6 KiB
Bash
92 lines
2.6 KiB
Bash
|
|
#--------------------------------------------------------------------#
|
|
# Global Configuration Variables #
|
|
#--------------------------------------------------------------------#
|
|
|
|
# Color to use when highlighting suggestion
|
|
# Uses format of `region_highlight`
|
|
# More info: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Zle-Widgets
|
|
(( ! ${+ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE} )) &&
|
|
typeset -g ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=8'
|
|
|
|
# Prefix to use when saving original versions of bound widgets
|
|
(( ! ${+ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX} )) &&
|
|
typeset -g ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX=autosuggest-orig-
|
|
|
|
# Strategies to use to fetch a suggestion
|
|
# Will try each strategy in order until a suggestion is returned
|
|
(( ! ${+ZSH_AUTOSUGGEST_STRATEGY} )) && {
|
|
typeset -ga ZSH_AUTOSUGGEST_STRATEGY
|
|
ZSH_AUTOSUGGEST_STRATEGY=(history)
|
|
}
|
|
|
|
# Widgets that clear the suggestion
|
|
(( ! ${+ZSH_AUTOSUGGEST_CLEAR_WIDGETS} )) && {
|
|
typeset -ga ZSH_AUTOSUGGEST_CLEAR_WIDGETS
|
|
ZSH_AUTOSUGGEST_CLEAR_WIDGETS=(
|
|
history-search-forward
|
|
history-search-backward
|
|
history-beginning-search-forward
|
|
history-beginning-search-backward
|
|
history-substring-search-up
|
|
history-substring-search-down
|
|
up-line-or-beginning-search
|
|
down-line-or-beginning-search
|
|
up-line-or-history
|
|
down-line-or-history
|
|
accept-line
|
|
)
|
|
}
|
|
|
|
# Widgets that accept the entire suggestion
|
|
(( ! ${+ZSH_AUTOSUGGEST_ACCEPT_WIDGETS} )) && {
|
|
typeset -ga ZSH_AUTOSUGGEST_ACCEPT_WIDGETS
|
|
ZSH_AUTOSUGGEST_ACCEPT_WIDGETS=(
|
|
forward-char
|
|
end-of-line
|
|
vi-forward-char
|
|
vi-end-of-line
|
|
vi-add-eol
|
|
)
|
|
}
|
|
|
|
# Widgets that accept the entire suggestion and execute it
|
|
(( ! ${+ZSH_AUTOSUGGEST_EXECUTE_WIDGETS} )) && {
|
|
typeset -ga ZSH_AUTOSUGGEST_EXECUTE_WIDGETS
|
|
ZSH_AUTOSUGGEST_EXECUTE_WIDGETS=(
|
|
)
|
|
}
|
|
|
|
# Widgets that accept the suggestion as far as the cursor moves
|
|
(( ! ${+ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS} )) && {
|
|
typeset -ga ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS
|
|
ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS=(
|
|
forward-word
|
|
emacs-forward-word
|
|
vi-forward-word
|
|
vi-forward-word-end
|
|
vi-forward-blank-word
|
|
vi-forward-blank-word-end
|
|
vi-find-next-char
|
|
vi-find-next-char-skip
|
|
)
|
|
}
|
|
|
|
# Widgets that should be ignored (globbing supported but must be escaped)
|
|
(( ! ${+ZSH_AUTOSUGGEST_IGNORE_WIDGETS} )) && {
|
|
typeset -ga ZSH_AUTOSUGGEST_IGNORE_WIDGETS
|
|
ZSH_AUTOSUGGEST_IGNORE_WIDGETS=(
|
|
orig-\*
|
|
beep
|
|
run-help
|
|
set-local-history
|
|
which-command
|
|
yank
|
|
yank-pop
|
|
)
|
|
}
|
|
|
|
# Pty name for capturing completions for completion suggestion strategy
|
|
(( ! ${+ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME} )) &&
|
|
typeset -g ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME=zsh_autosuggest_completion_pty
|