mirror of
https://github.com/fish-shell/fish-shell
synced 2024-12-25 20:33:08 +00:00
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:
parent
2f2a221c56
commit
225f748f79
1 changed files with 25 additions and 0 deletions
25
share/functions/__fish_parent_directories.fish
Normal file
25
share/functions/__fish_parent_directories.fish
Normal 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
|
Loading…
Reference in a new issue