aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPřemysl Eric Janouch <p@janouch.name>2020-10-04 14:20:10 +0200
committerPřemysl Eric Janouch <p@janouch.name>2020-10-04 14:27:51 +0200
commitb53a3a098144ed87d51076c87beacac02d039a70 (patch)
tree7920b76d3160cfcf0e7203ba949c29a5bb17a361
parentcf80a155017c2eecf506ac155c98aed5e962b4a0 (diff)
downloadsdn-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.adoc4
-rw-r--r--sdn.cpp3
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
diff --git a/sdn.cpp b/sdn.cpp
index 5549beb..3a3ab26 100644
--- a/sdn.cpp
+++ b/sdn.cpp
@@ -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;