aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cdlog.sh68
1 files changed, 24 insertions, 44 deletions
diff --git a/cdlog.sh b/cdlog.sh
index dfb51c2..645c483 100644
--- a/cdlog.sh
+++ b/cdlog.sh
@@ -21,6 +21,16 @@ cdlog.nicks()
w=$c4
}
+# Set state from args
+cdlog.args()
+{
+ c1=$1; c2=$2; c3=$3
+ c4=$4; c5=$5; c6=$6
+ c7=$7; c8=$8; c9=$8
+
+ cdlog.nicks
+}
+
# Change to directory: this is aliased to cd command.
cdlog.chdir()
{
@@ -45,55 +55,25 @@ cdlog.swap()
{
local cur=$PWD
local n=1
+ local d=("" "$c1" "$c2" "$c3" "$c4" "$c5" "$c6" "$c7" "$c8" "$c9")
+
+ unset d[0]
if [ $# -eq 1 ]; then
n=$1
fi
case $n in
- ( 1 | x )
- if command cd "$c1" ; then
- c1=$cur
- fi
- ;;
- ( 2 | y )
- if command cd "$c2" ; then
- c2=$cur
- fi
- ;;
- ( 3 | z )
- if command cd "$c3" ; then
- c3=$cur
- fi
- ;;
- ( 4 | w )
- if command cd "$c4" ; then
- c4=$cur
- fi
- ;;
- ( 5 )
- if command cd "$c5" ; then
- c5=$cur
- fi
- ;;
- ( 6 )
- if command cd "$c6" ; then
- c6=$cur
- fi
- ;;
- ( 7 )
- if command cd "$c7" ; then
- c7=$cur
- fi
- ;;
- ( 8 )
- if command cd "$c8" ; then
- c8=$cur
- fi
- ;;
- ( 9 )
- if command cd "$c9" ; then
- c9=$cur
+ ( x ) n = 1 ;;
+ ( y ) n = 2 ;;
+ ( z ) n = 3 ;;
+ ( w ) n = 4 ;;
+ esac
+
+ case $n in
+ ( [1-9] )
+ if command cd "${d[$n]}" ; then
+ d[$n]=$cur
fi
;;
( * )
@@ -101,7 +81,7 @@ cdlog.swap()
;;
esac
- cdlog.nicks
+ cdlog.args "${d[@]}"
}
# Change to most recent diretory in cdlog and remove it