Merge pull request #403 from okdana/dana/typeset-g

Set global parameters with typeset -g
This commit is contained in:
Eric Freese 2018-12-21 23:19:23 -07:00 committed by GitHub
commit 66b842579a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 164 additions and 114 deletions

View file

@ -6,68 +6,90 @@
# Color to use when highlighting suggestion # Color to use when highlighting suggestion
# Uses format of `region_highlight` # Uses format of `region_highlight`
# More info: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Zle-Widgets # More info: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Zle-Widgets
: ${ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=8'} (( ! ${+ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE} )) &&
typeset -g ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=8'
# Prefix to use when saving original versions of bound widgets # Prefix to use when saving original versions of bound widgets
: ${ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX=autosuggest-orig-} (( ! ${+ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX} )) &&
typeset -g ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX=autosuggest-orig-
# Strategies to use to fetch a suggestion # Strategies to use to fetch a suggestion
# Will try each strategy in order until a suggestion is returned # Will try each strategy in order until a suggestion is returned
(( ! ${+ZSH_AUTOSUGGEST_STRATEGY} )) && ZSH_AUTOSUGGEST_STRATEGY=(history) (( ! ${+ZSH_AUTOSUGGEST_STRATEGY} )) && {
typeset -ga ZSH_AUTOSUGGEST_STRATEGY
ZSH_AUTOSUGGEST_STRATEGY=(history)
}
# Widgets that clear the suggestion # Widgets that clear the suggestion
(( ! ${+ZSH_AUTOSUGGEST_CLEAR_WIDGETS} )) && ZSH_AUTOSUGGEST_CLEAR_WIDGETS=( (( ! ${+ZSH_AUTOSUGGEST_CLEAR_WIDGETS} )) && {
history-search-forward typeset -ga ZSH_AUTOSUGGEST_CLEAR_WIDGETS
history-search-backward ZSH_AUTOSUGGEST_CLEAR_WIDGETS=(
history-beginning-search-forward history-search-forward
history-beginning-search-backward history-search-backward
history-substring-search-up history-beginning-search-forward
history-substring-search-down history-beginning-search-backward
up-line-or-beginning-search history-substring-search-up
down-line-or-beginning-search history-substring-search-down
up-line-or-history up-line-or-beginning-search
down-line-or-history down-line-or-beginning-search
accept-line up-line-or-history
) down-line-or-history
accept-line
)
}
# Widgets that accept the entire suggestion # Widgets that accept the entire suggestion
(( ! ${+ZSH_AUTOSUGGEST_ACCEPT_WIDGETS} )) && ZSH_AUTOSUGGEST_ACCEPT_WIDGETS=( (( ! ${+ZSH_AUTOSUGGEST_ACCEPT_WIDGETS} )) && {
forward-char typeset -ga ZSH_AUTOSUGGEST_ACCEPT_WIDGETS
end-of-line ZSH_AUTOSUGGEST_ACCEPT_WIDGETS=(
vi-forward-char forward-char
vi-end-of-line end-of-line
vi-add-eol vi-forward-char
) vi-end-of-line
vi-add-eol
)
}
# Widgets that accept the entire suggestion and execute it # Widgets that accept the entire suggestion and execute it
(( ! ${+ZSH_AUTOSUGGEST_EXECUTE_WIDGETS} )) && ZSH_AUTOSUGGEST_EXECUTE_WIDGETS=( (( ! ${+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 # Widgets that accept the suggestion as far as the cursor moves
(( ! ${+ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS} )) && ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS=( (( ! ${+ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS} )) && {
forward-word typeset -ga ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS
emacs-forward-word ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS=(
vi-forward-word forward-word
vi-forward-word-end emacs-forward-word
vi-forward-blank-word vi-forward-word
vi-forward-blank-word-end vi-forward-word-end
vi-find-next-char vi-forward-blank-word
vi-find-next-char-skip 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) # Widgets that should be ignored (globbing supported but must be escaped)
(( ! ${+ZSH_AUTOSUGGEST_IGNORE_WIDGETS} )) && ZSH_AUTOSUGGEST_IGNORE_WIDGETS=( (( ! ${+ZSH_AUTOSUGGEST_IGNORE_WIDGETS} )) && {
orig-\* typeset -ga ZSH_AUTOSUGGEST_IGNORE_WIDGETS
beep ZSH_AUTOSUGGEST_IGNORE_WIDGETS=(
run-help orig-\*
set-local-history beep
which-command run-help
yank set-local-history
yank-pop which-command
) yank
yank-pop
)
}
# Max size of buffer to trigger autosuggestion. Leave null for no upper bound. # Max size of buffer to trigger autosuggestion. Leave null for no upper bound.
: ${ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE=} (( ! ${+ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE} )) &&
typeset -g ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE=
# Pty name for calculating autosuggestions asynchronously # Pty name for calculating autosuggestions asynchronously
: ${ZSH_AUTOSUGGEST_ASYNC_PTY_NAME=zsh_autosuggest_pty} (( ! ${+ZSH_AUTOSUGGEST_ASYNC_PTY_NAME} )) &&
typeset -g ZSH_AUTOSUGGEST_ASYNC_PTY_NAME=zsh_autosuggest_pty

View file

@ -190,22 +190,25 @@ _zsh_autosuggest_partial_accept() {
return $retval return $retval
} }
for action in clear modify fetch suggest accept partial_accept execute enable disable toggle; do () {
eval "_zsh_autosuggest_widget_$action() { local action
local -i retval for action in clear modify fetch suggest accept partial_accept execute enable disable toggle; do
eval "_zsh_autosuggest_widget_$action() {
local -i retval
_zsh_autosuggest_highlight_reset _zsh_autosuggest_highlight_reset
_zsh_autosuggest_$action \$@ _zsh_autosuggest_$action \$@
retval=\$? retval=\$?
_zsh_autosuggest_highlight_apply _zsh_autosuggest_highlight_apply
zle -R zle -R
return \$retval return \$retval
}" }"
done done
}
zle -N autosuggest-fetch _zsh_autosuggest_widget_fetch zle -N autosuggest-fetch _zsh_autosuggest_widget_fetch
zle -N autosuggest-suggest _zsh_autosuggest_widget_suggest zle -N autosuggest-suggest _zsh_autosuggest_widget_suggest

View file

@ -42,71 +42,93 @@ zmodload zsh/zpty
# Color to use when highlighting suggestion # Color to use when highlighting suggestion
# Uses format of `region_highlight` # Uses format of `region_highlight`
# More info: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Zle-Widgets # More info: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Zle-Widgets
: ${ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=8'} (( ! ${+ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE} )) &&
typeset -g ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=8'
# Prefix to use when saving original versions of bound widgets # Prefix to use when saving original versions of bound widgets
: ${ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX=autosuggest-orig-} (( ! ${+ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX} )) &&
typeset -g ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX=autosuggest-orig-
# Strategies to use to fetch a suggestion # Strategies to use to fetch a suggestion
# Will try each strategy in order until a suggestion is returned # Will try each strategy in order until a suggestion is returned
(( ! ${+ZSH_AUTOSUGGEST_STRATEGY} )) && ZSH_AUTOSUGGEST_STRATEGY=(history) (( ! ${+ZSH_AUTOSUGGEST_STRATEGY} )) && {
typeset -ga ZSH_AUTOSUGGEST_STRATEGY
ZSH_AUTOSUGGEST_STRATEGY=(history)
}
# Widgets that clear the suggestion # Widgets that clear the suggestion
(( ! ${+ZSH_AUTOSUGGEST_CLEAR_WIDGETS} )) && ZSH_AUTOSUGGEST_CLEAR_WIDGETS=( (( ! ${+ZSH_AUTOSUGGEST_CLEAR_WIDGETS} )) && {
history-search-forward typeset -ga ZSH_AUTOSUGGEST_CLEAR_WIDGETS
history-search-backward ZSH_AUTOSUGGEST_CLEAR_WIDGETS=(
history-beginning-search-forward history-search-forward
history-beginning-search-backward history-search-backward
history-substring-search-up history-beginning-search-forward
history-substring-search-down history-beginning-search-backward
up-line-or-beginning-search history-substring-search-up
down-line-or-beginning-search history-substring-search-down
up-line-or-history up-line-or-beginning-search
down-line-or-history down-line-or-beginning-search
accept-line up-line-or-history
) down-line-or-history
accept-line
)
}
# Widgets that accept the entire suggestion # Widgets that accept the entire suggestion
(( ! ${+ZSH_AUTOSUGGEST_ACCEPT_WIDGETS} )) && ZSH_AUTOSUGGEST_ACCEPT_WIDGETS=( (( ! ${+ZSH_AUTOSUGGEST_ACCEPT_WIDGETS} )) && {
forward-char typeset -ga ZSH_AUTOSUGGEST_ACCEPT_WIDGETS
end-of-line ZSH_AUTOSUGGEST_ACCEPT_WIDGETS=(
vi-forward-char forward-char
vi-end-of-line end-of-line
vi-add-eol vi-forward-char
) vi-end-of-line
vi-add-eol
)
}
# Widgets that accept the entire suggestion and execute it # Widgets that accept the entire suggestion and execute it
(( ! ${+ZSH_AUTOSUGGEST_EXECUTE_WIDGETS} )) && ZSH_AUTOSUGGEST_EXECUTE_WIDGETS=( (( ! ${+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 # Widgets that accept the suggestion as far as the cursor moves
(( ! ${+ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS} )) && ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS=( (( ! ${+ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS} )) && {
forward-word typeset -ga ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS
emacs-forward-word ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS=(
vi-forward-word forward-word
vi-forward-word-end emacs-forward-word
vi-forward-blank-word vi-forward-word
vi-forward-blank-word-end vi-forward-word-end
vi-find-next-char vi-forward-blank-word
vi-find-next-char-skip 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) # Widgets that should be ignored (globbing supported but must be escaped)
(( ! ${+ZSH_AUTOSUGGEST_IGNORE_WIDGETS} )) && ZSH_AUTOSUGGEST_IGNORE_WIDGETS=( (( ! ${+ZSH_AUTOSUGGEST_IGNORE_WIDGETS} )) && {
orig-\* typeset -ga ZSH_AUTOSUGGEST_IGNORE_WIDGETS
beep ZSH_AUTOSUGGEST_IGNORE_WIDGETS=(
run-help orig-\*
set-local-history beep
which-command run-help
yank set-local-history
yank-pop which-command
) yank
yank-pop
)
}
# Max size of buffer to trigger autosuggestion. Leave null for no upper bound. # Max size of buffer to trigger autosuggestion. Leave null for no upper bound.
: ${ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE=} (( ! ${+ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE} )) &&
typeset -g ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE=
# Pty name for calculating autosuggestions asynchronously # Pty name for calculating autosuggestions asynchronously
: ${ZSH_AUTOSUGGEST_ASYNC_PTY_NAME=zsh_autosuggest_pty} (( ! ${+ZSH_AUTOSUGGEST_ASYNC_PTY_NAME} )) &&
typeset -g ZSH_AUTOSUGGEST_ASYNC_PTY_NAME=zsh_autosuggest_pty
#--------------------------------------------------------------------# #--------------------------------------------------------------------#
# Utility Functions # # Utility Functions #
@ -475,22 +497,25 @@ _zsh_autosuggest_partial_accept() {
return $retval return $retval
} }
for action in clear modify fetch suggest accept partial_accept execute enable disable toggle; do () {
eval "_zsh_autosuggest_widget_$action() { local action
local -i retval for action in clear modify fetch suggest accept partial_accept execute enable disable toggle; do
eval "_zsh_autosuggest_widget_$action() {
local -i retval
_zsh_autosuggest_highlight_reset _zsh_autosuggest_highlight_reset
_zsh_autosuggest_$action \$@ _zsh_autosuggest_$action \$@
retval=\$? retval=\$?
_zsh_autosuggest_highlight_apply _zsh_autosuggest_highlight_apply
zle -R zle -R
return \$retval return \$retval
}" }"
done done
}
zle -N autosuggest-fetch _zsh_autosuggest_widget_fetch zle -N autosuggest-fetch _zsh_autosuggest_widget_fetch
zle -N autosuggest-suggest _zsh_autosuggest_widget_suggest zle -N autosuggest-suggest _zsh_autosuggest_widget_suggest