[zsh] Keep current $BUFFER on ALT-C

Ideally, we could only use `print -sr` to update the command history.
However, the "cd" command by ALT-C is added to the history only after we
finalize the current command by pressing an additional enter key.

i.e. The cd command from ALT-C is not visible when you hit Up arrow. But
it appears once you hit enter key.

So when the current buffer is empty, we use `zle accept-line` so that
the command history is immediately updated.

Close #2200
pull/2145/head
Junegunn Choi 4 years ago
parent 82c4af2902
commit 9dfca77c36
No known key found for this signature in database
GPG Key ID: 254BC280FEF9C627

@ -87,10 +87,15 @@ fzf-cd-widget() {
zle redisplay
return 0
fi
BUFFER="cd ${(q)dir}"
unset dir # ensure this doesn't end up appearing in prompt expansion
zle accept-line
if [ -z "$BUFFER" ]; then
BUFFER="cd ${(q)dir}"
zle accept-line
else
print -sr "cd ${(q)dir}"
cd "$dir"
fi
local ret=$?
unset dir # ensure this doesn't end up appearing in prompt expansion
zle fzf-redraw-prompt
return $ret
}

Loading…
Cancel
Save