diff options
author | Marlon Richert <marlonrichert@users.noreply.github.com> | 2021-02-03 12:26:17 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-03 19:26:17 +0900 |
commit | 43b3b907f8b73efdeb6a55ba995c81ab708baf32 (patch) | |
tree | aea793e1cf83e7dab490113b81fde2861526a43f /shell | |
parent | fcd896508bb6c995f0f256fa98fec34c0a788a30 (diff) |
[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
Diffstat (limited to 'shell')
-rw-r--r-- | shell/key-bindings.zsh | 22 |
1 files changed, 4 insertions, 18 deletions
diff --git a/shell/key-bindings.zsh b/shell/key-bindings.zsh index 4ae114b2..8efa6af9 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 |