From 43b3b907f8b73efdeb6a55ba995c81ab708baf32 Mon Sep 17 00:00:00 2001 From: Marlon Richert Date: Wed, 3 Feb 2021 12:26:17 +0200 Subject: [PATCH] [zsh] Don't run precmd hooks in cd widget (#2340) `precmd` hooks expect the Zsh Line Editor to not be active. Running these when the ZLE is active can lead to unpredictable results. See https://github.com/marlonrichert/zsh-autocomplete/issues/180 --- shell/key-bindings.zsh | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/shell/key-bindings.zsh b/shell/key-bindings.zsh index 4ae114b..8efa6af 100644 --- a/shell/key-bindings.zsh +++ b/shell/key-bindings.zsh @@ -68,16 +68,6 @@ fzf-file-widget() { zle -N fzf-file-widget bindkey '^T' fzf-file-widget -# Ensure precmds are run after cd -fzf-redraw-prompt() { - local precmd - for precmd in $precmd_functions; do - $precmd - done - zle reset-prompt -} -zle -N fzf-redraw-prompt - # ALT-C - cd into the selected directory fzf-cd-widget() { local cmd="${FZF_ALT_C_COMMAND:-"command find -L . -mindepth 1 \\( -path '*/\\.*' -o -fstype 'sysfs' -o -fstype 'devfs' -o -fstype 'devtmpfs' -o -fstype 'proc' \\) -prune \ @@ -88,16 +78,12 @@ fzf-cd-widget() { zle redisplay return 0 fi - if [ -z "$BUFFER" ]; then - BUFFER="cd ${(q)dir}" - zle accept-line - else - print -sr "cd ${(q)dir}" - cd "$dir" - fi + zle push-line # Clear buffer. Auto-restored on next prompt. + BUFFER="cd ${(q)dir}" + zle accept-line local ret=$? unset dir # ensure this doesn't end up appearing in prompt expansion - zle fzf-redraw-prompt + zle reset-prompt return $ret } zle -N fzf-cd-widget