You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
2.2 KiB
Fish
61 lines
2.2 KiB
Fish
###
|
|
# Loader for Oh My Fish! packages
|
|
# Loads all packages stored in ~/.config/fish/pkgs/
|
|
#
|
|
# Inspired by https://github.com/jorgebucaran/fisher
|
|
###
|
|
|
|
set -q pkgs_path; or set -g pkgs_path ~/.config/fish/pkgs
|
|
|
|
# also search for functions/completions/binaries/manpages within packages
|
|
set fish_function_path $fish_function_path[1] $pkgs_path/.functions $pkgs_path/*/functions $fish_function_path[2..-1]
|
|
set fish_complete_path $fish_complete_path[1] $pkgs_path/*/completions $fish_complete_path[2..-1]
|
|
set -x PATH $pkgs_path/*/bin $PATH
|
|
set -x MANPATH $pkgs_path/*/man $MANPATH
|
|
|
|
# load package key bindings when needed
|
|
if functions -q fish_user_key_bindings
|
|
functions -c fish_user_key_bindings fish_user_key_bindings_copy
|
|
end
|
|
function fish_user_key_bindings
|
|
for file in $pkgs_path/*/key_bindings.fish
|
|
builtin source $file 2>&1 > /dev/null
|
|
end
|
|
if functions -q fish_user_key_bindings_copy
|
|
fish_user_key_bindings_copy
|
|
end
|
|
end
|
|
|
|
# load custom config from packages
|
|
for file in $pkgs_path/*/conf.d/*.fish $pkgs_path/*/init.fish
|
|
builtin source $file 2> /dev/null
|
|
end
|
|
|
|
# ensure that the prompt is loaded (doesn't autoload for some reason)
|
|
if test -f $pkgs_path/.functions/fish_prompt.fish
|
|
builtin source $pkgs_path/.functions/fish_prompt.fish 2> /dev/null
|
|
end
|
|
|
|
# collect all functions on the top-level of packages into $pkgs_path/.functions
|
|
# (run by Ansible after packages have been updated)
|
|
function _pkgs_collect_functions
|
|
# clear the functions directory as we rebuild it from scratch
|
|
if test -d $pkgs_path/.functions
|
|
command rm -rf $pkgs_path/.functions
|
|
end
|
|
command mkdir -p $pkgs_path/.functions
|
|
|
|
# consider all fish files in the top-level of each package
|
|
for src in $pkgs_path/*/*.fish
|
|
set -l package (command basename (command dirname $src))
|
|
set -l filename (command basename $src)
|
|
|
|
# we don't care about uninstall.fish;
|
|
# init.fish and key_bindings.fish are dynamically handled on runtime above
|
|
if not contains $filename {init,key_bindings,uninstall}.fish
|
|
# create a relative symlink
|
|
command ln -sf ../$package/$filename $pkgs_path/.functions/$filename
|
|
end
|
|
end
|
|
end
|