diff --git a/share/functions/__fish_parent_directories.fish b/share/functions/__fish_parent_directories.fish new file mode 100644 index 000000000..9cdacdcc7 --- /dev/null +++ b/share/functions/__fish_parent_directories.fish @@ -0,0 +1,25 @@ +# Generates a list of parent directories for a given path +# i.e. /a/b/c/d -> [/a/b/c/, /a/b/, /a/, and /a] +function __fish_parent_directories + if test (count $argv) -ne 1 + # for use in completions, so don't spew error messages + return 1 + end + + set -l splits (string split '/' $argv[1]) + set -l parents + + for split in $splits + if test (string length "$split") -eq 0 + continue + end + + set parents "$parents[1]/$split" $parents + end + + for parent in $parents + echo $parent + end + + return 0 +end