diff options
author | hut <hut@lavabit.com> | 2010-01-21 06:16:06 +0100 |
---|---|---|
committer | hut <hut@lavabit.com> | 2010-01-21 06:16:06 +0100 |
commit | e19337f1a6ffd878ceb96e0da9f3b8b1b170f692 (patch) | |
tree | 22a1ab0c993af4fd2486afa2fa9d7ff4d6906d36 | |
parent | f0df3fa5aa4f1dc4773a7ab11496747468ca6560 (diff) | |
download | ranger-e19337f1a6ffd878ceb96e0da9f3b8b1b170f692.tar.gz |
updated doc
-rw-r--r-- | doc/cd-after-exit.txt | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/doc/cd-after-exit.txt b/doc/cd-after-exit.txt index b13a8449..4b24c088 100644 --- a/doc/cd-after-exit.txt +++ b/doc/cd-after-exit.txt @@ -5,6 +5,8 @@ The "cd-after-exit" Feature This document explains the troublesome implementation of the "cd-after-exit" feature. +This is written for developers who wonder how it's working. + == Specification @@ -118,6 +120,24 @@ A convenient way of using this feature is adding this line to your bashrc: alias rn='source ranger ranger' +== Keyboard interrupt handling + +Another thing: If Ctrl+C is pressed anywhere in the program, the execution +of the sourced shell script is stopped and the feature stops working. + +To handle that, I use: trap "" INT +This ignores all interrupt signals. However, since ranger needs to know +about ^C presses, I use this approach: + + ranger_exec="$1" + shift + trap "" INT + exec 3< <($ranger_exec --cd-after-exit $@ 3>&1 1>&2 2>&3 3>&-) + while read ranger_output; do false; done <&3 + cd "$ranger_output" + #...and some clean ups + + == Open issues Unfortunately there is some redundancy: you have to type the path to ranger @@ -134,8 +154,4 @@ Example: If you find a way to make this print out 'sourced.sh', let me know. :) -Another thing: If Ctrl+C is pressed anywhere in the program, the execution -of the sourced shell script is stopped and the feature stops working. - - Dec 25, 2009 |