summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPřemysl Janouch <p.janouch@gmail.com>2017-06-30 22:51:52 +0200
committerPřemysl Janouch <p.janouch@gmail.com>2017-06-30 22:51:52 +0200
commit4fa98abec391fd03e11ec404d819b2bd5584e854 (patch)
treea85aa074dac8f7abfbe59a549ef9e2d0a320f56f
parent571447298ae0b02527c94e7a26cd6451e520dd96 (diff)
downloadsdn-4fa98abec391fd03e11ec404d819b2bd5584e854.tar.gz
sdn-4fa98abec391fd03e11ec404d819b2bd5584e854.tar.xz
sdn-4fa98abec391fd03e11ec404d819b2bd5584e854.zip
Figure out bash
-rw-r--r--README.adoc35
1 files changed, 29 insertions, 6 deletions
diff --git a/README.adoc b/README.adoc
index b1c78f0..1b9cdd2 100644
--- a/README.adoc
+++ b/README.adoc
@@ -41,20 +41,43 @@ zsh
---
To start using this navigator, put the following in your .zshrc:
....
-navigate () {
+sdn-navigate () {
# ... possibly zle-line-init
- eval `navigator`
+ eval `sdn`
[ -z "$cd" ] || cd "$cd"
[ -z "$insert" ] || LBUFFER="$LBUFFER$insert "
zle reset-prompt
# ... possibly zle-line-finish
}
-zle -N navigate
-bindkey '\eo' navigate
+zle -N sdn-navigate
+bindkey '\eo' sdn-navigate
....
-As far as I'm aware, bash cannot be used for this, as there is no command to
-reset the prompt from within a `bind -x` handler.
+bash
+----
+Here we can't reset the prompt from within a `bind -x` handler but there is
+an acceptable workaround:
+....
+sdn-navigate () {
+ SDN_L=$READLINE_LINE SDN_P=$READLINE_POINT
+ READLINE_LINE=
+
+ eval `sdn`
+ [[ -z "$cd" ]] || cd "$cd"
+ [[ -z "$insert" ]] || {
+ SDN_L="${SDN_L:0:$SDN_P}$insert ${SDN_L:$SDN_P}"
+ ((SDN_P=SDN_P+${#insert}+1))
+ }
+}
+sdn-restore () {
+ READLINE_LINE=$SDN_L READLINE_POINT=$SDN_P
+ unset SDN_L SDN_P
+}
+
+bind -x '"\200": sdn-navigate'
+bind -x '"\201": sdn-restore'
+bind '"\eo":"\200\C-m\201"'
+....
Colors
------