From bf95b4c093b7894668a899441cdeabb14403e7f7 Mon Sep 17 00:00:00 2001 From: Arnaud Venturi Date: Fri, 4 May 2018 15:57:41 +0200 Subject: [PATCH] First try to fix partial accept in vicmd mode --- zsh-autosuggestions.zsh | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/zsh-autosuggestions.zsh b/zsh-autosuggestions.zsh index a1037ba..fd4745b 100644 --- a/zsh-autosuggestions.zsh +++ b/zsh-autosuggestions.zsh @@ -438,10 +438,26 @@ _zsh_autosuggest_partial_accept() { # Temporarily accept the suggestion. BUFFER="$BUFFER$POSTDISPLAY" + print keymap: $KEYMAP >> /tmp/zsh_autosuggest_log + print original widget name: $@ >> /tmp/zsh_autosuggest_log + print original buffer: $original_buffer >> /tmp/zsh_autosuggest_log + print original postdisplay: $POSTDISPLAY >> /tmp/zsh_autosuggest_log + print original cursor: $CURSOR >> /tmp/zsh_autosuggest_log + # Original widget moves the cursor _zsh_autosuggest_invoke_original_widget $@ retval=$? + # In vicmd keymap, the cursor is placed on the last character, not after + # For this reason, we need to increment it by 1 for our tests on it to + # keep working, then roll it back to its initial value + if [ $KEYMAP = 'vicmd' ]; then + (( CURSOR++ )) + fi + + print retval: $retval >> /tmp/zsh_autosuggest_log + print final cursor: $CURSOR >> /tmp/zsh_autosuggest_log + # If we've moved past the end of the original buffer if (( $CURSOR > $#original_buffer )); then # Set POSTDISPLAY to text right of the cursor @@ -454,6 +470,11 @@ _zsh_autosuggest_partial_accept() { BUFFER="$original_buffer" fi + if [ $KEYMAP = 'vicmd' ]; then + (( CURSOR-- )) + fi + + print '' >> /tmp/zsh_autosuggest_log return $retval }