diff options
author | Přemysl Eric Janouch <p@janouch.name> | 2020-10-04 14:20:10 +0200 |
---|---|---|
committer | Přemysl Eric Janouch <p@janouch.name> | 2020-10-04 14:27:51 +0200 |
commit | b53a3a098144ed87d51076c87beacac02d039a70 (patch) | |
tree | 7920b76d3160cfcf0e7203ba949c29a5bb17a361 | |
parent | cf80a155017c2eecf506ac155c98aed5e962b4a0 (diff) | |
download | sdn-b53a3a098144ed87d51076c87beacac02d039a70.tar.gz sdn-b53a3a098144ed87d51076c87beacac02d039a70.tar.xz sdn-b53a3a098144ed87d51076c87beacac02d039a70.zip |
Revisit zsh integration
zsh's antisocial behaviour was fairly promptly fixed (thanks to
Stephane Chazelas and his patience).
zle-line-init and zle-line-reset seem to be user-defined widgets
and the order inverted. Put zle-line-init before reset-prompt
because some people do weird things in there.
-rw-r--r-- | README.adoc | 4 | ||||
-rw-r--r-- | sdn.cpp | 3 |
2 files changed, 4 insertions, 3 deletions
diff --git a/README.adoc b/README.adoc index f49c8c0..b9ddbd5 100644 --- a/README.adoc +++ b/README.adoc @@ -54,7 +54,7 @@ To start using this navigator, put the following in your '.zshrc': ---- sdn-navigate () { - # ... possibly zle-line-init + # ... possibly zle-line-finish while eval "`sdn "$BUFFER" "$CURSOR"`"; do [ -z "$cd" ] || cd "$cd" [ -z "$insert" ] || LBUFFER="$LBUFFER$insert " @@ -66,8 +66,8 @@ sdn-navigate () { eval "exec </dev/tty; $helper" || break done + # ... possibly zle-line-init zle reset-prompt - # ... possibly zle-line-finish } zle -N sdn-navigate bindkey '\eo' sdn-navigate @@ -1654,7 +1654,8 @@ fun save_config () { } int main (int argc, char *argv[]) { - // That bitch zle closes stdin before exec without redirection + // zsh before 5.4 may close stdin before exec without redirection, + // since then it redirects stdin to /dev/null (void) close (STDIN_FILENO); if (open ("/dev/tty", O_RDWR)) { cerr << "cannot open tty" << endl; |