Add __fish_parent_directories helper function for completions

Can be used to retrieve a list of parent paths, useful for searching
ancestors recursively via their absolute paths. Paths are returned from
deepest to shallowest, starting from the path passed in. Paths are not
validated for performance reasons. (Usually the input to
__fish_parent_directories would be (pwd) or (dir $file).)
This commit is contained in:
Mahmoud Al-Qudsi 2018-03-05 08:25:25 -06:00
parent 2f2a221c56
commit 225f748f79

View File

@ -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