diff options
author | hut <hut@lavabit.com> | 2010-03-24 14:05:08 +0100 |
---|---|---|
committer | hut <hut@lavabit.com> | 2010-03-24 14:05:08 +0100 |
commit | 55435343b142c424619e3072475ca8b3366d109c (patch) | |
tree | 55c5ba8d815bd2d4cfca2086dba998eaebb83067 /doc/cd-after-exit.txt | |
parent | efbde17048b14d43895e4cf91e798fb97702b68f (diff) | |
parent | 0a16f0da970ae344f0094767c08995dd63f616cb (diff) | |
download | ranger-55435343b142c424619e3072475ca8b3366d109c.tar.gz |
Merge branch 'master' into newkey
Conflicts: ranger/api/keys.py ranger/container/commandlist.py ranger/core/actions.py ranger/defaults/keys.py ranger/gui/ui.py ranger/gui/widgets/browserview.py
Diffstat (limited to 'doc/cd-after-exit.txt')
-rw-r--r-- | doc/cd-after-exit.txt | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/doc/cd-after-exit.txt b/doc/cd-after-exit.txt index 5e54fee0..ee300518 100644 --- a/doc/cd-after-exit.txt +++ b/doc/cd-after-exit.txt @@ -1,6 +1,8 @@ The "cd-after-exit" Feature +=========================== -== Abstract +Abstract +-------- This document explains the troublesome implementation of the "cd-after-exit" feature. @@ -8,7 +10,8 @@ feature. This is written for developers who wonder how it's working. -== Specification +Specification +------------- When the feature is enabled, ranger will attempt to change the directory of the parent shell (from which ranger is run) to the last visited directory @@ -20,7 +23,8 @@ addition of support for csh, ksh, and other shells to those who actually use those shells. -== What's the problem? +What's the problem? +------------------- Shells have several limitations, the implementation could not be done easily because: @@ -33,7 +37,8 @@ of the parent shell at all. which is directly integrated in to the shell and can not be run this way. -== Redirection of streams +Redirection of streams +---------------------- The only way I found is using cd `program` from inside the shell to change the directory to whatever `program` prints to the stdout: @@ -62,7 +67,8 @@ switch which: bash$ cd `ranger --cd-after-exit 3>&1 1>&2 2>&3 3>&-` -== Argument passing +Argument passing +---------------- This works well enough, but there are two remaining problems: @@ -92,7 +98,8 @@ run.sh: cd "`$RANGER --cd-after-exit \"$@\" 3>&1 1>&2 2>&3 3>&-`" -== Put it in a nutshell +Put it in a nutshell +-------------------- I didn't want to have 2 files for the main program and wanted just one file at /usr/bin/ranger. So I used this trick to merge both files into one: @@ -120,7 +127,8 @@ A convenient way of using this feature is adding this line to your bashrc: alias rn='source ranger ranger' -== Open issues +Open issues +----------- Unfortunately there is some redundancy: you have to type the path to ranger twice. I know of no way to fix this, because it is not possible to get the |