diff --git a/README.md b/README.md index f5e447f..79fd590 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,12 @@ Easily jump between commonly visited directories by running this in ranger: :z ``` +Or use interactive mode: + +``` +:zi +``` + ## Features - Very simple & fast thanks to zoxide @@ -43,6 +49,12 @@ directories. Simply add a binding to your `~/.config/ranger/rc.conf` file: map cz console z%space ``` +Or for interactive use: + +``` +map cz zi +``` + ## See Also - [ranger-zjumper](https://github.com/ask1234560/ranger-zjumper). diff --git a/__init__.py b/__init__.py index 4e4668f..fedc500 100644 --- a/__init__.py +++ b/__init__.py @@ -13,6 +13,7 @@ def hook_init(fm): process.wait() fm.signal_bind("cd", zoxide_add) + fm.commands.alias("zi", "z -i") return hook_init_prev(fm) @@ -26,17 +27,22 @@ class z(ranger.api.commands.Command): """ def execute(self): results = self.query(self.args[1:]) + if not results: + return + if os.path.isdir(results[0]): self.fm.cd(results[0]) def query(self, args): try: - p = Popen( - ["zoxide", "query"] + self.args[1:], - stdout=PIPE, - stderr=PIPE + p = self.fm.execute_command("zoxide query {}".format(" ".join(self.args[1:])), + stdout=PIPE ) stdout, stderr = p.communicate() + + if not stdout: + return None + if p.returncode == 0: output = stdout.decode("utf-8").strip() if output: @@ -52,3 +58,4 @@ class z(ranger.api.commands.Command): def tab(self, tabnum): results = self.query(self.args[1:]) return ["z {}".format(x) for x in results] +