Fisher: Fisher doesn't automatically load when $fisher_path is custom

Created on 23 Nov 2020  ·  3Comments  ·  Source: jorgebucaran/fisher

@jorgebucaran hey again. I have another problem regarding Fisher. My $fisher_path is custom and is set to ~/.local/share/fisher. Because of this, fisher.fish isn't in ~/.config/fish/functions and so it doesn't load automatically. I have to manually source ~/.local/share/fisher/functions/fisher.fish to load Fisher. I'm pretty sure it works like that. But I'm not sure if it's supposed to be like that. What do you think?

Most helpful comment

I really don't recommend changing $fisher_path, and I've toyed with the possibility to deprecate it in the future. But if you must change it, you'll also need to reproduce Fish configuration inside your custom $fisher_path.

That means:

  • putting the ./functions directory in $fish_function_path,
  • ./completions in $fish_complete_path, and
  • sourcing every *.fish file inside ./conf.d on startup.

You can do it in your config.fish.


Copied from an older commit when we still documented this. I don't endorse it anymore, and I can't honestly remember why setting fish_function_path and fish_complete_path was this convoluted, but there was probably a good reason! Might be to avoid overriding your user configuration in ~/.config/fish.

set -g fisher_path /path/to/another/location

set fish_function_path $fish_function_path[1] $fisher_path/functions $fish_function_path[2..-1]
set fish_complete_path $fish_complete_path[1] $fisher_path/completions $fish_complete_path[2..-1]

for file in $fisher_path/conf.d/*.fish
   source $file 2> /dev/null
end

All 3 comments

I really don't recommend changing $fisher_path, and I've toyed with the possibility to deprecate it in the future. But if you must change it, you'll also need to reproduce Fish configuration inside your custom $fisher_path.

That means:

  • putting the ./functions directory in $fish_function_path,
  • ./completions in $fish_complete_path, and
  • sourcing every *.fish file inside ./conf.d on startup.

You can do it in your config.fish.


Copied from an older commit when we still documented this. I don't endorse it anymore, and I can't honestly remember why setting fish_function_path and fish_complete_path was this convoluted, but there was probably a good reason! Might be to avoid overriding your user configuration in ~/.config/fish.

set -g fisher_path /path/to/another/location

set fish_function_path $fish_function_path[1] $fisher_path/functions $fish_function_path[2..-1]
set fish_complete_path $fish_complete_path[1] $fisher_path/completions $fish_complete_path[2..-1]

for file in $fisher_path/conf.d/*.fish
   source $file 2> /dev/null
end

Sorry to comment in a closed issue.

I really don't recommend changing $fisher_path, and I've toyed with the possibility to deprecate it in the future. But if you must change it, you'll also need to reproduce Fish configuration inside your custom $fisher_path.

I managed my dotfiles in the symbolic link way and use the method you documented to make plugins installed by fisher don't pollute my personal fish configs. If you have a plan to deprecate $fisher_path, is there some more preferred workaround to achieve this?

I've thought about deprecating $fisher_path, but I hardly see that actually happening. Ever. Feel free to use it if you must! 🙆‍♂️

Was this page helpful?
0 / 5 - 0 ratings