diff --git a/plugins/jump/README.md b/plugins/jump/README.md new file mode 100644 index 0000000..fc8013e --- /dev/null +++ b/plugins/jump/README.md @@ -0,0 +1,7 @@ +jump +==== + +A port of [Jeroen Janssens' "jump" utility] [1] to the fish shell (and [Oh My Fish!] [2]). + +[1]: http://jeroenjanssens.com/2013/08/16/quickly-navigate-your-filesystem-from-the-command-line.html +[2]: https://github.com/bpinto/oh-my-fish diff --git a/plugins/jump/jump.fish b/plugins/jump/jump.fish new file mode 100644 index 0000000..b054c36 --- /dev/null +++ b/plugins/jump/jump.fish @@ -0,0 +1,11 @@ +function jump + if test (count $argv) -ne 1 + echo "Usage: jump " + else + if test -d $MARKPATH/$argv[1] -a -L $MARKPATH/$argv[1] + cd $MARKPATH/$argv[1] + else + echo "No such mark: $argv[1]" + end + end +end diff --git a/plugins/jump/jump.load b/plugins/jump/jump.load new file mode 100644 index 0000000..20081b5 --- /dev/null +++ b/plugins/jump/jump.load @@ -0,0 +1,2 @@ +set -gx MARKPATH $HOME/.marks +command mkdir -p $MARKPATH diff --git a/plugins/jump/mark.fish b/plugins/jump/mark.fish new file mode 100644 index 0000000..6c175a8 --- /dev/null +++ b/plugins/jump/mark.fish @@ -0,0 +1,22 @@ +function mark + if test (count $argv) -eq 0 -o (count $argv) -gt 2 + echo "Usage: mark [DIRECTORY]" + else if test -e $MARKPATH/$argv[1] + if test -d $MARKPATH/$argv[1] -a -L $MARKPATH/$argv[1] + echo "A mark named $argv[1] already exists." + else + echo "$MARKPATH/$argv[1] already exists." + end + else if test (count $argv) -eq 1 + command ln -s (pwd) $MARKPATH/$argv[1] + else if test (count $argv) -eq 2 + if test -d $argv[2] + set -l current_dir (pwd) + cd $argv[2] + command ln -s (pwd) $MARKPATH/$argv[1] + cd $current_dir + else + echo "$argv[2] is not a valid directory." + end + end +end diff --git a/plugins/jump/marks.fish b/plugins/jump/marks.fish new file mode 100644 index 0000000..9787e2f --- /dev/null +++ b/plugins/jump/marks.fish @@ -0,0 +1,28 @@ +function marks + if test (count $argv) -gt 0 + echo "Usage: marks" + else + set -l file_list (command ls $MARKPATH) + if test (count $file_list) -eq 0 + echo "No marks currently defined." + else + set -l mark_list + for file in $file_list + if test -d $MARKPATH/$file -a -L $MARKPATH/$file + set mark_list $mark_list $file + end + end + if test (count $mark_list) -eq 0 + echo "No marks currently defined." + else + set -l current_dir (pwd) + for mark_name in $mark_list + cd $MARKPATH/$mark_name + set -l real_path (pwd) + echo "$mark_name -> $real_path" + end + cd $current_dir + end + end + end +end diff --git a/plugins/jump/unmark.fish b/plugins/jump/unmark.fish new file mode 100644 index 0000000..8965e1c --- /dev/null +++ b/plugins/jump/unmark.fish @@ -0,0 +1,13 @@ +function unmark + if test (count $argv) -eq 0 + echo "Usage: unmark ..." + else + for mark_name in $argv + if test -d $MARKPATH/$mark_name -a -L $MARKPATH/$mark_name + command rm -i $MARKPATH/$mark_name + else + echo "No such mark: $mark_name" + end + end + end +end