aboutsummaryrefslogtreecommitdiffhomepage
path: root/share/functions/cd.fish
diff options
context:
space:
mode:
Diffstat (limited to 'share/functions/cd.fish')
-rw-r--r--share/functions/cd.fish35
1 files changed, 35 insertions, 0 deletions
diff --git a/share/functions/cd.fish b/share/functions/cd.fish
new file mode 100644
index 00000000..e9287c4b
--- /dev/null
+++ b/share/functions/cd.fish
@@ -0,0 +1,35 @@
+#
+# The following functions add support for a directory history
+#
+
+function cd -d (_ "Change directory")
+
+ # Skip history in subshells
+ if status --is-command-substitution
+ builtin cd $argv
+ return $status
+ end
+
+ # Avoid set completions
+ set previous (command pwd)
+
+ if test $argv[1] = - ^/dev/null
+ if test $__fish_cd_direction = next ^/dev/null
+ nextd
+ else
+ prevd
+ end
+ return $status
+ end
+
+ builtin cd $argv[1]
+
+ if test $status = 0 -a (command pwd) != $previous
+ set -g dirprev $dirprev $previous
+ set -e dirnext
+ set -g __fish_cd_direction prev
+ end
+
+ return $status
+end
+