diff options
author | Sebastian Reuße <seb@wirrsal.net> | 2016-07-04 12:13:02 +0200 |
---|---|---|
committer | Sebastian Reuße <seb@wirrsal.net> | 2016-07-05 08:57:11 +0200 |
commit | fed5e5d5afbc0a553a0116f77342f047df03ad7d (patch) | |
tree | 35c52f3f60b862aed1913d473ed9e93dd1738be5 /shell/key-bindings.zsh | |
parent | b864885753f67b3985406f7b901a9563100f768a (diff) |
[zsh] Re-initialize zle when widgets finish
zle automatically calls zle-line-init when it starts to read a new line. Many
Zsh setups use this hook to set the terminal into application mode, since this
will then allow defining keybinds based on the $terminfo variable (the escape
codes in said variable are only valid in application mode).
However, fzf resets the terminal into raw mode, rendering $terminfo values
invalid once the widget has finished. Accordingly, keyboard bindings defined
via $terminfo won’t work anymore.
This fixes the issue by calling zle-line-init when widgets finish. Care is taken
to not call this widget when it is undefined.
Fixes #279
Diffstat (limited to 'shell/key-bindings.zsh')
-rw-r--r-- | shell/key-bindings.zsh | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/shell/key-bindings.zsh b/shell/key-bindings.zsh index ea65c0c0..b9fb6e92 100644 --- a/shell/key-bindings.zsh +++ b/shell/key-bindings.zsh @@ -25,6 +25,7 @@ fzf-file-widget() { LBUFFER="${LBUFFER}$(__fsel)" local ret=$? zle redisplay + typeset -f zle-line-init >/dev/null && zle zle-line-init return $ret } zle -N fzf-file-widget @@ -38,6 +39,7 @@ fzf-cd-widget() { cd "${$(eval "$cmd | $(__fzfcmd) +m $FZF_ALT_C_OPTS"):-.}" local ret=$? zle reset-prompt + typeset -f zle-line-init >/dev/null && zle zle-line-init return $ret } zle -N fzf-cd-widget @@ -56,6 +58,7 @@ fzf-history-widget() { fi fi zle redisplay + typeset -f zle-line-init >/dev/null && zle zle-line-init return $ret } zle -N fzf-history-widget |