From 3b56be3e263cce1e83c4979e6c969849fac9f500 Mon Sep 17 00:00:00 2001 From: Charles Thorley Date: Tue, 10 Dec 2013 17:55:51 -0800 Subject: [PATCH 1/9] Added jump plugin --- plugins/jump/README.md | 7 +++++++ plugins/jump/jump.fish | 11 +++++++++++ plugins/jump/jump.load | 2 ++ plugins/jump/mark.fish | 15 +++++++++++++++ plugins/jump/marks.fish | 20 ++++++++++++++++++++ plugins/jump/unmark.fish | 13 +++++++++++++ 6 files changed, 68 insertions(+) create mode 100644 plugins/jump/README.md create mode 100644 plugins/jump/jump.fish create mode 100644 plugins/jump/jump.load create mode 100644 plugins/jump/mark.fish create mode 100644 plugins/jump/marks.fish create mode 100644 plugins/jump/unmark.fish 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..dbfc73c --- /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..8707c13 --- /dev/null +++ b/plugins/jump/jump.load @@ -0,0 +1,2 @@ +set -x 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..d0546f4 --- /dev/null +++ b/plugins/jump/mark.fish @@ -0,0 +1,15 @@ +function mark + 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] + cd $argv[2] + command ln -s (pwd) $MARKPATH/$argv[1] + cd - + else + echo "$argv[2] is not a valid directory." + end + else + echo "Usage: mark [DIRECTORY]" + end +end diff --git a/plugins/jump/marks.fish b/plugins/jump/marks.fish new file mode 100644 index 0000000..7681d31 --- /dev/null +++ b/plugins/jump/marks.fish @@ -0,0 +1,20 @@ +function marks + if test (count $argv) -gt 0 + echo "Usage: marks" + else + set -l file_list (command ls $MARKPATH/) + 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 + for mark_name in $mark_list + echo "$mark_name -> "(realpath $MARKPATH/$mark_name) + end + end + end +end diff --git a/plugins/jump/unmark.fish b/plugins/jump/unmark.fish new file mode 100644 index 0000000..a383b19 --- /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 From d157cd13ccaf84c5e7349cdcfd1648689c5f9056 Mon Sep 17 00:00:00 2001 From: Charles Thorley Date: Tue, 10 Dec 2013 18:22:28 -0800 Subject: [PATCH 2/9] Removed realpath dependency --- plugins/jump/marks.fish | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/jump/marks.fish b/plugins/jump/marks.fish index 7681d31..2210164 100644 --- a/plugins/jump/marks.fish +++ b/plugins/jump/marks.fish @@ -13,7 +13,7 @@ function marks echo "No marks currently defined." else for mark_name in $mark_list - echo "$mark_name -> "(realpath $MARKPATH/$mark_name) + echo "$mark_name -> "(readlink -f $MARKPATH/$mark_name) end end end From 89655b2edf8f949a2d9756c552c1d42801c154f9 Mon Sep 17 00:00:00 2001 From: Charles Thorley Date: Tue, 10 Dec 2013 18:29:42 -0800 Subject: [PATCH 3/9] Actually, let's stick to builtins --- plugins/jump/marks.fish | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/plugins/jump/marks.fish b/plugins/jump/marks.fish index 2210164..07a3597 100644 --- a/plugins/jump/marks.fish +++ b/plugins/jump/marks.fish @@ -13,7 +13,10 @@ function marks echo "No marks currently defined." else for mark_name in $mark_list - echo "$mark_name -> "(readlink -f $MARKPATH/$mark_name) + cd $MARKPATH/$mark_name + set -l real_path (pwd) + cd - + echo "$mark_name -> $real_path" end end end From 930753ddbe175540d102f01d099ca72f39b74982 Mon Sep 17 00:00:00 2001 From: Charles Thorley Date: Thu, 12 Dec 2013 18:18:16 -0800 Subject: [PATCH 4/9] Bug fixes --- plugins/jump/mark.fish | 3 ++- plugins/jump/marks.fish | 31 ++++++++++++++++++------------- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/plugins/jump/mark.fish b/plugins/jump/mark.fish index d0546f4..5f23f41 100644 --- a/plugins/jump/mark.fish +++ b/plugins/jump/mark.fish @@ -3,9 +3,10 @@ function mark 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 - + cd $current_dir else echo "$argv[2] is not a valid directory." end diff --git a/plugins/jump/marks.fish b/plugins/jump/marks.fish index 07a3597..e658bbf 100644 --- a/plugins/jump/marks.fish +++ b/plugins/jump/marks.fish @@ -2,21 +2,26 @@ function marks if test (count $argv) -gt 0 echo "Usage: marks" else - set -l file_list (command ls $MARKPATH/) - 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 + set -l file_list (command ls $MARKPATH) + if test (count $file_list) -eq 0 echo "No marks currently defined." else - for mark_name in $mark_list - cd $MARKPATH/$mark_name - set -l real_path (pwd) - cd - - echo "$mark_name -> $real_path" + 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 From 7960f780191c565a546addc9ab1fb04f9048a1d7 Mon Sep 17 00:00:00 2001 From: Charles Thorley Date: Fri, 13 Dec 2013 18:10:13 -0800 Subject: [PATCH 5/9] Additional gatekeeping --- plugins/jump/mark.fish | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/plugins/jump/mark.fish b/plugins/jump/mark.fish index 5f23f41..7a228db 100644 --- a/plugins/jump/mark.fish +++ b/plugins/jump/mark.fish @@ -1,5 +1,13 @@ function mark - if test (count $argv) -eq 1 + 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] @@ -10,7 +18,5 @@ function mark else echo "$argv[2] is not a valid directory." end - else - echo "Usage: mark [DIRECTORY]" end end From e0dc54480adb16229d0e79dfffef04200fc23214 Mon Sep 17 00:00:00 2001 From: Charles Thorley Date: Thu, 9 Jan 2014 20:30:20 -0800 Subject: [PATCH 6/9] Two-space indentation --- plugins/jump/jump.fish | 14 ++++++------ plugins/jump/jump.load | 2 +- plugins/jump/mark.fish | 38 ++++++++++++++++----------------- plugins/jump/marks.fish | 46 ++++++++++++++++++++-------------------- plugins/jump/unmark.fish | 20 ++++++++--------- 5 files changed, 60 insertions(+), 60 deletions(-) diff --git a/plugins/jump/jump.fish b/plugins/jump/jump.fish index dbfc73c..b054c36 100644 --- a/plugins/jump/jump.fish +++ b/plugins/jump/jump.fish @@ -1,11 +1,11 @@ function jump - if test (count $argv) -ne 1 - echo "Usage: 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 - if test -d $MARKPATH/$argv[1] -a -L $MARKPATH/$argv[1] - cd $MARKPATH/$argv[1] - else - echo "No such mark: $argv[1]" - end + echo "No such mark: $argv[1]" end + end end diff --git a/plugins/jump/jump.load b/plugins/jump/jump.load index 8707c13..20081b5 100644 --- a/plugins/jump/jump.load +++ b/plugins/jump/jump.load @@ -1,2 +1,2 @@ -set -x MARKPATH $HOME/.marks +set -gx MARKPATH $HOME/.marks command mkdir -p $MARKPATH diff --git a/plugins/jump/mark.fish b/plugins/jump/mark.fish index 7a228db..6c175a8 100644 --- a/plugins/jump/mark.fish +++ b/plugins/jump/mark.fish @@ -1,22 +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 + 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 index e658bbf..9787e2f 100644 --- a/plugins/jump/marks.fish +++ b/plugins/jump/marks.fish @@ -1,28 +1,28 @@ function marks - if test (count $argv) -gt 0 - echo "Usage: 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 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 + 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 index a383b19..8965e1c 100644 --- a/plugins/jump/unmark.fish +++ b/plugins/jump/unmark.fish @@ -1,13 +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 + 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 From f26686a9fc93ddeaa43bd4c3016acab63447738c Mon Sep 17 00:00:00 2001 From: Charles Thorley Date: Thu, 12 Dec 2013 18:18:16 -0800 Subject: [PATCH 7/9] Bug fixes --- plugins/jump/mark.fish | 3 ++- plugins/jump/marks.fish | 31 ++++++++++++++++++------------- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/plugins/jump/mark.fish b/plugins/jump/mark.fish index d0546f4..5f23f41 100644 --- a/plugins/jump/mark.fish +++ b/plugins/jump/mark.fish @@ -3,9 +3,10 @@ function mark 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 - + cd $current_dir else echo "$argv[2] is not a valid directory." end diff --git a/plugins/jump/marks.fish b/plugins/jump/marks.fish index 07a3597..e658bbf 100644 --- a/plugins/jump/marks.fish +++ b/plugins/jump/marks.fish @@ -2,21 +2,26 @@ function marks if test (count $argv) -gt 0 echo "Usage: marks" else - set -l file_list (command ls $MARKPATH/) - 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 + set -l file_list (command ls $MARKPATH) + if test (count $file_list) -eq 0 echo "No marks currently defined." else - for mark_name in $mark_list - cd $MARKPATH/$mark_name - set -l real_path (pwd) - cd - - echo "$mark_name -> $real_path" + 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 From 2bf2e10d243699667f402b0127ce7a1ad93b6d47 Mon Sep 17 00:00:00 2001 From: Charles Thorley Date: Fri, 13 Dec 2013 18:10:13 -0800 Subject: [PATCH 8/9] Additional gatekeeping --- plugins/jump/mark.fish | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/plugins/jump/mark.fish b/plugins/jump/mark.fish index 5f23f41..7a228db 100644 --- a/plugins/jump/mark.fish +++ b/plugins/jump/mark.fish @@ -1,5 +1,13 @@ function mark - if test (count $argv) -eq 1 + 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] @@ -10,7 +18,5 @@ function mark else echo "$argv[2] is not a valid directory." end - else - echo "Usage: mark [DIRECTORY]" end end From d6024ce6e4d486a1ff15cbf5833f0fea9b446500 Mon Sep 17 00:00:00 2001 From: Charles Thorley Date: Thu, 9 Jan 2014 20:30:20 -0800 Subject: [PATCH 9/9] Two-space indentation --- plugins/jump/jump.fish | 14 ++++++------ plugins/jump/jump.load | 2 +- plugins/jump/mark.fish | 38 ++++++++++++++++----------------- plugins/jump/marks.fish | 46 ++++++++++++++++++++-------------------- plugins/jump/unmark.fish | 20 ++++++++--------- 5 files changed, 60 insertions(+), 60 deletions(-) diff --git a/plugins/jump/jump.fish b/plugins/jump/jump.fish index dbfc73c..b054c36 100644 --- a/plugins/jump/jump.fish +++ b/plugins/jump/jump.fish @@ -1,11 +1,11 @@ function jump - if test (count $argv) -ne 1 - echo "Usage: 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 - if test -d $MARKPATH/$argv[1] -a -L $MARKPATH/$argv[1] - cd $MARKPATH/$argv[1] - else - echo "No such mark: $argv[1]" - end + echo "No such mark: $argv[1]" end + end end diff --git a/plugins/jump/jump.load b/plugins/jump/jump.load index 8707c13..20081b5 100644 --- a/plugins/jump/jump.load +++ b/plugins/jump/jump.load @@ -1,2 +1,2 @@ -set -x MARKPATH $HOME/.marks +set -gx MARKPATH $HOME/.marks command mkdir -p $MARKPATH diff --git a/plugins/jump/mark.fish b/plugins/jump/mark.fish index 7a228db..6c175a8 100644 --- a/plugins/jump/mark.fish +++ b/plugins/jump/mark.fish @@ -1,22 +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 + 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 index e658bbf..9787e2f 100644 --- a/plugins/jump/marks.fish +++ b/plugins/jump/marks.fish @@ -1,28 +1,28 @@ function marks - if test (count $argv) -gt 0 - echo "Usage: 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 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 + 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 index a383b19..8965e1c 100644 --- a/plugins/jump/unmark.fish +++ b/plugins/jump/unmark.fish @@ -1,13 +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 + 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