From 4a82ff1ead68db25645b2e920f17774a66e44e31 Mon Sep 17 00:00:00 2001 From: romkatv Date: Mon, 25 Feb 2019 12:59:31 +0100 Subject: [PATCH] speed up widget rebinding by removing redundant array subscripts --- src/bind.zsh | 23 +++++------------------ zsh-autosuggestions.zsh | 23 +++++------------------ 2 files changed, 10 insertions(+), 36 deletions(-) diff --git a/src/bind.zsh b/src/bind.zsh index ec762ef..a2e86e1 100644 --- a/src/bind.zsh +++ b/src/bind.zsh @@ -4,21 +4,8 @@ #--------------------------------------------------------------------# _zsh_autosuggest_incr_bind_count() { - if ((${+_ZSH_AUTOSUGGEST_BIND_COUNTS[$1]})); then - ((_ZSH_AUTOSUGGEST_BIND_COUNTS[$1]++)) - else - _ZSH_AUTOSUGGEST_BIND_COUNTS[$1]=1 - fi - - typeset -gi bind_count=$_ZSH_AUTOSUGGEST_BIND_COUNTS[$1] -} - -_zsh_autosuggest_get_bind_count() { - if ((${+_ZSH_AUTOSUGGEST_BIND_COUNTS[$1]})); then - typeset -gi bind_count=$_ZSH_AUTOSUGGEST_BIND_COUNTS[$1] - else - typeset -gi bind_count=0 - fi + typeset -gi bind_count=$((_ZSH_AUTOSUGGEST_BIND_COUNTS[$1]+1)) + _ZSH_AUTOSUGGEST_BIND_COUNTS[$1]=$bind_count } # Bind a single widget to an autosuggest widget, saving a reference to the original widget @@ -34,7 +21,9 @@ _zsh_autosuggest_bind_widget() { # Save a reference to the original widget case $widgets[$widget] in # Already bound - user:_zsh_autosuggest_(bound|orig)_*);; + user:_zsh_autosuggest_(bound|orig)_*) + bind_count=$((_ZSH_AUTOSUGGEST_BIND_COUNTS[$widget])) + ;; # User-defined widget user:*) @@ -56,8 +45,6 @@ _zsh_autosuggest_bind_widget() { ;; esac - _zsh_autosuggest_get_bind_count $widget - # Pass the original widget's name explicitly into the autosuggest # function. Use this passed in widget name to call the original # widget instead of relying on the $WIDGET variable being set diff --git a/zsh-autosuggestions.zsh b/zsh-autosuggestions.zsh index 67cb5c9..a2edce6 100644 --- a/zsh-autosuggestions.zsh +++ b/zsh-autosuggestions.zsh @@ -165,21 +165,8 @@ _zsh_autosuggest_feature_detect_zpty_returns_fd() { #--------------------------------------------------------------------# _zsh_autosuggest_incr_bind_count() { - if ((${+_ZSH_AUTOSUGGEST_BIND_COUNTS[$1]})); then - ((_ZSH_AUTOSUGGEST_BIND_COUNTS[$1]++)) - else - _ZSH_AUTOSUGGEST_BIND_COUNTS[$1]=1 - fi - - typeset -gi bind_count=$_ZSH_AUTOSUGGEST_BIND_COUNTS[$1] -} - -_zsh_autosuggest_get_bind_count() { - if ((${+_ZSH_AUTOSUGGEST_BIND_COUNTS[$1]})); then - typeset -gi bind_count=$_ZSH_AUTOSUGGEST_BIND_COUNTS[$1] - else - typeset -gi bind_count=0 - fi + typeset -gi bind_count=$((_ZSH_AUTOSUGGEST_BIND_COUNTS[$1]+1)) + _ZSH_AUTOSUGGEST_BIND_COUNTS[$1]=$bind_count } # Bind a single widget to an autosuggest widget, saving a reference to the original widget @@ -195,7 +182,9 @@ _zsh_autosuggest_bind_widget() { # Save a reference to the original widget case $widgets[$widget] in # Already bound - user:_zsh_autosuggest_(bound|orig)_*);; + user:_zsh_autosuggest_(bound|orig)_*) + bind_count=$((_ZSH_AUTOSUGGEST_BIND_COUNTS[$widget])) + ;; # User-defined widget user:*) @@ -217,8 +206,6 @@ _zsh_autosuggest_bind_widget() { ;; esac - _zsh_autosuggest_get_bind_count $widget - # Pass the original widget's name explicitly into the autosuggest # function. Use this passed in widget name to call the original # widget instead of relying on the $WIDGET variable being set