2006-02-08 18:20:43 +08:00
|
|
|
#
|
|
|
|
# The following functions add support for a directory history
|
|
|
|
#
|
|
|
|
|
2007-01-16 09:29:18 +08:00
|
|
|
function cd --description "Change directory"
|
2006-02-08 18:20:43 +08:00
|
|
|
|
|
|
|
# Skip history in subshells
|
|
|
|
if status --is-command-substitution
|
|
|
|
builtin cd $argv
|
|
|
|
return $status
|
|
|
|
end
|
|
|
|
|
|
|
|
# Avoid set completions
|
2006-06-17 21:11:45 +08:00
|
|
|
set -l previous $PWD
|
2006-02-08 18:20:43 +08:00
|
|
|
|
|
|
|
if test $argv[1] = - ^/dev/null
|
2009-02-02 06:20:58 +08:00
|
|
|
if test "$__fish_cd_direction" = next ^/dev/null
|
2006-02-08 18:20:43 +08:00
|
|
|
nextd
|
|
|
|
else
|
|
|
|
prevd
|
|
|
|
end
|
|
|
|
return $status
|
|
|
|
end
|
|
|
|
|
|
|
|
builtin cd $argv[1]
|
2006-06-16 23:18:48 +08:00
|
|
|
set -l cd_status $status
|
2006-02-08 18:20:43 +08:00
|
|
|
|
2009-02-02 06:20:58 +08:00
|
|
|
if test $cd_status = 0 -a "$PWD" != "$previous"
|
2006-02-08 18:20:43 +08:00
|
|
|
set -g dirprev $dirprev $previous
|
|
|
|
set -e dirnext
|
|
|
|
set -g __fish_cd_direction prev
|
|
|
|
end
|
|
|
|
|
2006-06-16 23:18:48 +08:00
|
|
|
return $cd_status
|
2006-02-08 18:20:43 +08:00
|
|
|
end
|
|
|
|
|