Using HTTPS prevents:
- accidentally running a captive portal login screen as a Fish script and sourcing it
- other security and privacy benefits of HTTPS
Create fish config directories if they don't exist
before installing plugins. We'd already fixed this,
but f4b32b34 brought back #598, as it modifies how
we copy files into $fisher_path.
- Remove and install when updating instead of replacing files (#601)
- Updating shouldn't remove plugin if the host is unvailable (#602)
- Can't reliably update local plugins because of symlinks (#603)
- Filter duplicates in argv and fish_plugins (#604)
- Add support to install plugins from branch names with slashes (#588)
What happens when we install a new plugin or remove
an existing plugin? If we don't reload completions,
Fish won't be able to tab-complete for installed or
removed plugins, e.g., continue tab-completing when
they are no longer installed.
By loading `update` and `remove` completions at
completion load time we now invoke `fisher list`
every time the user tabs after `fisher update`
or `fisher remove`.
Prompts' `fish_*.fish` files get removed during a
full update when you try to replace your existing
prompt with a new one.
For example, during a `fisher update`, if we install
`foo/new_prompt` first, and remove `foo/old_prompt`
afterm we could end up without a fish_prompt file.
A cleaner approach would be to move fisher.fish to functions
but this would break older versions of fisher that hardcoded
the raw URL to the fisher.fish file for upgrades.