summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorCélestin Matte <celestin.matte@gmail.com>2014-04-28 19:42:45 +0200
committerCélestin Matte <celestin.matte@gmail.com>2014-04-28 19:56:56 +0200
commit04681ff7ceb8a7db4111dbfac5f06477561c4c4a (patch)
tree92084599e4470814c239e18f52cb50c1164aa86a
parent3e31022b943f33f0466f9f5b7b452cf2363bfb40 (diff)
downloadranger-04681ff7ceb8a7db4111dbfac5f06477561c4c4a.tar.gz
Handle CDPATH
This shell feature allows one to cd directly to remote directories located
in paths defined in the variable. Allow handling of such variable in ranger.
Compatible with: bash, ksh, zsh, csh, and possibly others.
-rw-r--r--ranger/core/actions.py12
1 files changed, 12 insertions, 0 deletions
diff --git a/ranger/core/actions.py b/ranger/core/actions.py
index ec853f1b..8424b51d 100644
--- a/ranger/core/actions.py
+++ b/ranger/core/actions.py
@@ -451,7 +451,19 @@ class Actions(FileManagerAware, EnvironmentAware, SettingsAware):
     def enter_dir(self, path, remember=False, history=True):
         """Enter the directory at the given path"""
         cwd = self.thisdir
+        # bash and ksh syntax
+        cdpath = os.environ.get('CDPATH', None)
+        if cdpath == "":
+            # zsh and csh syntax
+            os.environ.get('cdpath', None)
+        paths = cdpath.split(':')
         result = self.thistab.enter_dir(path, history=history)
+        if result == 0:
+            for p in paths:
+                curpath = p + '/' + path
+                if os.path.isdir(curpath):
+                    result = self.thistab.enter_dir(curpath, history=history)
+                    break
         if cwd != self.thisdir:
             if remember:
                 self.bookmarks.remember(cwd)