From 6b8788d86328e97ebc7442fb1924d13ce50add56 Mon Sep 17 00:00:00 2001 From: Wolfgang Müller Date: Sun, 14 Nov 2021 12:52:07 +0100 Subject: Initial commit --- functions/sail.fish | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 functions/sail.fish (limited to 'functions/sail.fish') diff --git a/functions/sail.fish b/functions/sail.fish new file mode 100644 index 0000000..69548b1 --- /dev/null +++ b/functions/sail.fish @@ -0,0 +1,64 @@ +function sail + argparse --name=sail 'a/add=' 'e/edit' 'p/print' -- $argv + or return 1 + + set -l jumpfile (__sailfish_print_jumpfile) + + if set -q _flag_add + set -l dir (string replace -r "^$HOME" '~' (pwd)) + printf '%s\t%s\n' $_flag_a $dir >> $jumpfile + printf '%s -> %s\n' $_flag_a $dir + return 0 + end + + if set -q _flag_edit + $EDITOR $jumpfile + return 0 + end + + if set -q _flag_print + sort $jumpfile | column -t + return 0 + end + + set query $argv[1] + + if test -z $query + cd - + return 0 + end + + if not set -l jump (__sailfish_print_jump $query) + echo "sailfish: no such jump: $query"; return 1 + end + + cd $jump +end + +function __sailfish_print_jumpfile + set -l jumps $HOME/.config/sailfish/jumps + set -q XDG_CONFIG_HOME; and set jumps $XDG_CONFIG_HOME/sailfish/jumps + + if not test -r $jumps + mkdir -p (dirname $jumps); and touch $jumps + end + + echo $jumps +end + +function __sailfish_print_jump -a query + set -l jumps (__sailfish_print_jumpfile) + + test -z $query; and return 1 + + while read -d \t -al jump + if test $jump[1] = $query + test -z $jump[2]; and continue + + echo (string replace -r '^~' $HOME $jump[2]) + return 0 + end + end < $jumps + + return 1 +end -- cgit v1.2.3-2-gb3c3