Compare commits

...

6 Commits

Author SHA1 Message Date
Eric Freese
76f415bf43 bump version v0.2.5 2016-02-14 08:55:20 -07:00
Eric Freese
5e419da326 Remove list of modify widgets and make 'modify' the default behavior. 2016-02-14 08:54:34 -07:00
Eric Freese
cd71081303 bump version v0.2.4 2016-02-14 01:08:21 -07:00
Eric Freese
9788c2ee49 Fix deprecation warnings. 2016-02-14 01:07:05 -07:00
Eric Freese
ebcfc46b72 Comment formatting 2016-02-14 00:29:43 -07:00
Eric Freese
b49d002888 [README] Add example of minimal .zshrc. 2016-02-13 23:53:32 -07:00
10 changed files with 99 additions and 186 deletions

View File

@@ -69,10 +69,11 @@ Set `ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE` to configure the style that the suggestion
This plugin works by triggering custom behavior when certain [zle widgets](http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Zle-Widgets) are invoked. You can add and remove widgets from these arrays to change the behavior of this plugin:
- `ZSH_AUTOSUGGEST_CLEAR_WIDGETS`: Widgets in this array will clear the suggestion when invoked.
- `ZSH_AUTOSUGGEST_MODIFY_WIDGETS`: Widgets in this array will modify the buffer and fetch a new suggestion when invoked.
- `ZSH_AUTOSUGGEST_ACCEPT_WIDGETS`: Widgets in this array will accept the suggestion when invoked.
- `ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS`: Widgets in this array will partially accept the suggestion when invoked.
Widgets not in any of these lists will update the suggestion when invoked.
**Note:** A widget shouldn't belong to more than one of the above arrays.
@@ -132,7 +133,7 @@ Before reporting an issue, please try temporarily disabling sections of your con
When reporting an issue, please include:
- The smallest, simplest `.zshrc` configuration that will reproduce the problem
- The smallest, simplest `.zshrc` configuration that will reproduce the problem. See [this comment](https://github.com/tarruda/zsh-autosuggestions/issues/102#issuecomment-180944764) for a good example of what this means.
- The version of zsh you're using (`zsh --version`)
- Which operating system you're running

View File

@@ -1 +1 @@
v0.2.3
v0.2.5

View File

@@ -1,18 +1,18 @@
#----------------#
#--------------------------------------------------------------------#
# Widget Helpers #
#----------------#
#--------------------------------------------------------------------#
# Bind a single widget to an autosuggest widget, saving a reference to the original widget
_zsh_autosuggest_bind_widget() {
local widget=$1
local autosuggest_function=$2
local autosuggest_action=$2
local prefix=$ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX
local action
# Save a reference to the original widget
case $widgets[$widget] in
# Already bound
user:_zsh_autosuggest_(bound|orig)_*);;
user:_zsh_autosuggest_(widget|orig)_*);;
# User-defined widget
user:*)
@@ -31,23 +31,8 @@ _zsh_autosuggest_bind_widget() {
;;
esac
# Set up widget to call $autosuggest_function if it exists
# Otherwise just call the original widget
if [ -n "$autosuggest_function" ]; then;
action="$autosuggest_function \$@";
else;
action="zle $prefix$widget -- \$@"
fi
# Create new function for the widget that highlights and calls the action
eval "_zsh_autosuggest_bound_$widget() {
_zsh_autosuggest_highlight_reset
$action
_zsh_autosuggest_highlight_apply
}"
# Create the bound widget
zle -N $widget _zsh_autosuggest_bound_$widget
zle -N $widget _zsh_autosuggest_widget_$autosuggest_action
}
# Map all configured widgets to the right autosuggest widgets
@@ -55,17 +40,16 @@ _zsh_autosuggest_bind_widgets() {
local widget;
# Find every widget we might want to bind and bind it appropriately
for widget in ${${(f)"$(builtin zle -la)"}:#(.*|_*|orig-*|autosuggest-*|$ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX*|run-help|which-command|beep|set-local-history|yank)}; do
if [ ${ZSH_AUTOSUGGEST_MODIFY_WIDGETS[(r)$widget]} ]; then
_zsh_autosuggest_bind_widget $widget _zsh_autosuggest_modify
elif [ ${ZSH_AUTOSUGGEST_CLEAR_WIDGETS[(r)$widget]} ]; then
_zsh_autosuggest_bind_widget $widget _zsh_autosuggest_clear
for widget in ${${(f)"$(builtin zle -la)"}:#(.*|_*|orig-*|autosuggest-*|$ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX*|zle-line-*|run-help|which-command|beep|set-local-history|yank)}; do
if [ ${ZSH_AUTOSUGGEST_CLEAR_WIDGETS[(r)$widget]} ]; then
_zsh_autosuggest_bind_widget $widget clear
elif [ ${ZSH_AUTOSUGGEST_ACCEPT_WIDGETS[(r)$widget]} ]; then
_zsh_autosuggest_bind_widget $widget _zsh_autosuggest_accept
_zsh_autosuggest_bind_widget $widget accept
elif [ ${ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS[(r)$widget]} ]; then
_zsh_autosuggest_bind_widget $widget _zsh_autosuggest_partial_accept
_zsh_autosuggest_bind_widget $widget partial_accept
else
_zsh_autosuggest_bind_widget $widget
# Assume any unspecified widget might modify the buffer
_zsh_autosuggest_bind_widget $widget modify
fi
done
}

View File

@@ -1,7 +1,7 @@
#--------------------------------#
#--------------------------------------------------------------------#
# Global Configuration Variables #
#--------------------------------#
#--------------------------------------------------------------------#
# Color to use when highlighting suggestion
# Uses format of `region_highlight`
@@ -22,27 +22,6 @@ ZSH_AUTOSUGGEST_CLEAR_WIDGETS=(
accept-line
)
# Widgets that modify the suggestion
ZSH_AUTOSUGGEST_MODIFY_WIDGETS=(
list-choices
complete-word
menu-complete
menu-expand-or-complete
reverse-menu-complete
expand-or-complete
expand-or-complete-prefix
self-insert
magic-space
bracketed-paste
expand-cmd-path
accept-and-menu-complete
backward-delete-char
vi-backward-delete-char
delete-char
vi-delete-char
delete-char-or-list
)
# Widgets that accept the entire suggestion
ZSH_AUTOSUGGEST_ACCEPT_WIDGETS=(
forward-char

View File

@@ -1,9 +1,11 @@
#-------------------------------------#
#--------------------------------------------------------------------#
# Handle Deprecated Variables/Widgets #
#-------------------------------------#
#--------------------------------------------------------------------#
unset _ZSH_AUTOSUGGEST_DEPRECATED_START_WIDGET_WARNING_SHOWN
_zsh_autosuggest_deprecated_warning() {
>&2 echo "zsh-autosuggestions: $@"
}
_zsh_autosuggest_check_deprecated_config() {
if [ -n "$AUTOSUGGESTION_HIGHLIGHT_COLOR" ]; then
@@ -23,17 +25,12 @@ _zsh_autosuggest_check_deprecated_config() {
fi
}
_zsh_autosuggest_deprecated_warning() {
>&2 echo "zsh-autosuggestions: $@"
}
_zsh_autosuggest_deprecated_start_widget() {
if [ -z "$_ZSH_AUTOSUGGEST_DEPRECATED_START_WIDGET_WARNING_SHOWN" ]; then
_zsh_autosuggest_deprecated_warning "The autosuggest-start widget is deprecated. Use the autosuggest_start function instead. For more info, see README at https://github.com/tarruda/zsh-autosuggestions."
_ZSH_AUTOSUGGEST_DEPRECATED_START_WIDGET_WARNING_SHOWN=true
fi
autosuggest_start
_zsh_autosuggest_deprecated_warning "The autosuggest-start widget is deprecated. For more info, see the README at https://github.com/tarruda/zsh-autosuggestions."
zle -D autosuggest-start
eval "zle-line-init() {
$(echo $functions[${widgets[zle-line-init]#*:}] | sed -e 's/zle autosuggest-start//g')
}"
}
zle -N autosuggest-start _zsh_autosuggest_deprecated_start_widget

View File

@@ -1,7 +1,7 @@
#--------------#
#--------------------------------------------------------------------#
# Highlighting #
#--------------#
#--------------------------------------------------------------------#
# If there was a highlight, remove it
_zsh_autosuggest_highlight_reset() {

View File

@@ -1,7 +1,7 @@
#-------#
#--------------------------------------------------------------------#
# Start #
#-------#
#--------------------------------------------------------------------#
# Start the autosuggestion widgets
_zsh_autosuggest_start() {

View File

@@ -1,7 +1,7 @@
#------------#
#--------------------------------------------------------------------#
# Suggestion #
#------------#
#--------------------------------------------------------------------#
# Get a suggestion from history that matches a given prefix
_zsh_autosuggest_suggestion() {

View File

@@ -1,7 +1,7 @@
#------------------------------------#
#--------------------------------------------------------------------#
# Autosuggest Widget Implementations #
#------------------------------------#
#--------------------------------------------------------------------#
# Clear the suggestion
_zsh_autosuggest_clear() {
@@ -71,17 +71,13 @@ _zsh_autosuggest_partial_accept() {
fi
}
_zsh_autosuggest_widget_accept() {
for action in clear modify accept partial_accept; do
eval "_zsh_autosuggest_widget_$action() {
_zsh_autosuggest_highlight_reset
_zsh_autosuggest_accept $@
_zsh_autosuggest_$action \$@
_zsh_autosuggest_highlight_apply
}
_zsh_autosuggest_widget_clear() {
_zsh_autosuggest_highlight_reset
_zsh_autosuggest_clear $@
_zsh_autosuggest_highlight_apply
}
}"
done
zle -N autosuggest-accept _zsh_autosuggest_widget_accept
zle -N autosuggest-clear _zsh_autosuggest_widget_clear

View File

@@ -1,6 +1,6 @@
# Fish-like fast/unobtrusive autosuggestions for zsh.
# https://github.com/tarruda/zsh-autosuggestions
# v0.2.3
# v0.2.5
# Copyright (c) 2013 Thiago de Arruda
# Copyright (c) 2016 Eric Freese
#
@@ -25,9 +25,9 @@
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.
#--------------------------------#
#--------------------------------------------------------------------#
# Global Configuration Variables #
#--------------------------------#
#--------------------------------------------------------------------#
# Color to use when highlighting suggestion
# Uses format of `region_highlight`
@@ -48,27 +48,6 @@ ZSH_AUTOSUGGEST_CLEAR_WIDGETS=(
accept-line
)
# Widgets that modify the suggestion
ZSH_AUTOSUGGEST_MODIFY_WIDGETS=(
list-choices
complete-word
menu-complete
menu-expand-or-complete
reverse-menu-complete
expand-or-complete
expand-or-complete-prefix
self-insert
magic-space
bracketed-paste
expand-cmd-path
accept-and-menu-complete
backward-delete-char
vi-backward-delete-char
delete-char
vi-delete-char
delete-char-or-list
)
# Widgets that accept the entire suggestion
ZSH_AUTOSUGGEST_ACCEPT_WIDGETS=(
forward-char
@@ -86,11 +65,13 @@ ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS=(
vi-forward-blank-word-end
)
#-------------------------------------#
#--------------------------------------------------------------------#
# Handle Deprecated Variables/Widgets #
#-------------------------------------#
#--------------------------------------------------------------------#
unset _ZSH_AUTOSUGGEST_DEPRECATED_START_WIDGET_WARNING_SHOWN
_zsh_autosuggest_deprecated_warning() {
>&2 echo "zsh-autosuggestions: $@"
}
_zsh_autosuggest_check_deprecated_config() {
if [ -n "$AUTOSUGGESTION_HIGHLIGHT_COLOR" ]; then
@@ -110,35 +91,30 @@ _zsh_autosuggest_check_deprecated_config() {
fi
}
_zsh_autosuggest_deprecated_warning() {
>&2 echo "zsh-autosuggestions: $@"
}
_zsh_autosuggest_deprecated_start_widget() {
if [ -z "$_ZSH_AUTOSUGGEST_DEPRECATED_START_WIDGET_WARNING_SHOWN" ]; then
_zsh_autosuggest_deprecated_warning "The autosuggest-start widget is deprecated. Use the autosuggest_start function instead. For more info, see README at https://github.com/tarruda/zsh-autosuggestions."
_ZSH_AUTOSUGGEST_DEPRECATED_START_WIDGET_WARNING_SHOWN=true
fi
autosuggest_start
_zsh_autosuggest_deprecated_warning "The autosuggest-start widget is deprecated. For more info, see the README at https://github.com/tarruda/zsh-autosuggestions."
zle -D autosuggest-start
eval "zle-line-init() {
$(echo $functions[${widgets[zle-line-init]#*:}] | sed -e 's/zle autosuggest-start//g')
}"
}
zle -N autosuggest-start _zsh_autosuggest_deprecated_start_widget
#----------------#
#--------------------------------------------------------------------#
# Widget Helpers #
#----------------#
#--------------------------------------------------------------------#
# Bind a single widget to an autosuggest widget, saving a reference to the original widget
_zsh_autosuggest_bind_widget() {
local widget=$1
local autosuggest_function=$2
local autosuggest_action=$2
local prefix=$ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX
local action
# Save a reference to the original widget
case $widgets[$widget] in
# Already bound
user:_zsh_autosuggest_(bound|orig)_*);;
user:_zsh_autosuggest_(widget|orig)_*);;
# User-defined widget
user:*)
@@ -157,23 +133,8 @@ _zsh_autosuggest_bind_widget() {
;;
esac
# Set up widget to call $autosuggest_function if it exists
# Otherwise just call the original widget
if [ -n "$autosuggest_function" ]; then;
action="$autosuggest_function \$@";
else;
action="zle $prefix$widget -- \$@"
fi
# Create new function for the widget that highlights and calls the action
eval "_zsh_autosuggest_bound_$widget() {
_zsh_autosuggest_highlight_reset
$action
_zsh_autosuggest_highlight_apply
}"
# Create the bound widget
zle -N $widget _zsh_autosuggest_bound_$widget
zle -N $widget _zsh_autosuggest_widget_$autosuggest_action
}
# Map all configured widgets to the right autosuggest widgets
@@ -181,17 +142,16 @@ _zsh_autosuggest_bind_widgets() {
local widget;
# Find every widget we might want to bind and bind it appropriately
for widget in ${${(f)"$(builtin zle -la)"}:#(.*|_*|orig-*|autosuggest-*|$ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX*|run-help|which-command|beep|set-local-history|yank)}; do
if [ ${ZSH_AUTOSUGGEST_MODIFY_WIDGETS[(r)$widget]} ]; then
_zsh_autosuggest_bind_widget $widget _zsh_autosuggest_modify
elif [ ${ZSH_AUTOSUGGEST_CLEAR_WIDGETS[(r)$widget]} ]; then
_zsh_autosuggest_bind_widget $widget _zsh_autosuggest_clear
for widget in ${${(f)"$(builtin zle -la)"}:#(.*|_*|orig-*|autosuggest-*|$ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX*|zle-line-*|run-help|which-command|beep|set-local-history|yank)}; do
if [ ${ZSH_AUTOSUGGEST_CLEAR_WIDGETS[(r)$widget]} ]; then
_zsh_autosuggest_bind_widget $widget clear
elif [ ${ZSH_AUTOSUGGEST_ACCEPT_WIDGETS[(r)$widget]} ]; then
_zsh_autosuggest_bind_widget $widget _zsh_autosuggest_accept
_zsh_autosuggest_bind_widget $widget accept
elif [ ${ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS[(r)$widget]} ]; then
_zsh_autosuggest_bind_widget $widget _zsh_autosuggest_partial_accept
_zsh_autosuggest_bind_widget $widget partial_accept
else
_zsh_autosuggest_bind_widget $widget
# Assume any unspecified widget might modify the buffer
_zsh_autosuggest_bind_widget $widget modify
fi
done
}
@@ -205,9 +165,9 @@ _zsh_autosuggest_invoke_original_widget() {
fi
}
#--------------#
#--------------------------------------------------------------------#
# Highlighting #
#--------------#
#--------------------------------------------------------------------#
# If there was a highlight, remove it
_zsh_autosuggest_highlight_reset() {
@@ -227,9 +187,9 @@ _zsh_autosuggest_highlight_apply() {
fi
}
#------------------------------------#
#--------------------------------------------------------------------#
# Autosuggest Widget Implementations #
#------------------------------------#
#--------------------------------------------------------------------#
# Clear the suggestion
_zsh_autosuggest_clear() {
@@ -299,24 +259,20 @@ _zsh_autosuggest_partial_accept() {
fi
}
_zsh_autosuggest_widget_accept() {
for action in clear modify accept partial_accept; do
eval "_zsh_autosuggest_widget_$action() {
_zsh_autosuggest_highlight_reset
_zsh_autosuggest_accept $@
_zsh_autosuggest_$action \$@
_zsh_autosuggest_highlight_apply
}
_zsh_autosuggest_widget_clear() {
_zsh_autosuggest_highlight_reset
_zsh_autosuggest_clear $@
_zsh_autosuggest_highlight_apply
}
}"
done
zle -N autosuggest-accept _zsh_autosuggest_widget_accept
zle -N autosuggest-clear _zsh_autosuggest_widget_clear
#------------#
#--------------------------------------------------------------------#
# Suggestion #
#------------#
#--------------------------------------------------------------------#
# Get a suggestion from history that matches a given prefix
_zsh_autosuggest_suggestion() {
@@ -333,9 +289,9 @@ _zsh_autosuggest_suggestion() {
echo ${history_matches[1]}
}
#-------#
#--------------------------------------------------------------------#
# Start #
#-------#
#--------------------------------------------------------------------#
# Start the autosuggestion widgets
_zsh_autosuggest_start() {