- Resolve circular dependencies for local packages
- Integrate _fisher_deps functionality to _fisher_fetch
- Update _fisher_jobs to exit with status 1 if there are no jobs
- Use `set -q myvar[1]` instead of `test -z $myvar` where possible
- ci: use && (tears of joy)
- docs: better explore package directions
- refactor: add license info to README; remove LICENSE file
- refactor `fisher ls REGEX`
- refactor: merge fishfile read/write parser to one script
- refactor: take advantage of nullglob in for loops
- refactor: prepend "fisher:" to error messages to improve logging
- refactor: remove unnecessary message after self-uninstall
- refactor: rename `fisher self-complete` to `fisher complete`
- refactor: simplify status report format script
For tab completions we want to list only the packages that you
added yourself (via the CLI or fishfile) and ignore those that
are installed but are dependencies of another package/s.
- Optimize startup path #494
- Cuts fisher-related startup time to roughly 25ms
- Reduce legacy fish support (~~>=2.0~~ >=2.1)
- Read fishfile from `$fisher_path` instead of `$fish_config` #480, #479
- Don't add invalid packages to fishfile / validate fishfile #478#484#492
- Rewrite tar expansion logic / don't use `--strip-components` #489#496
- Better OpenBSD support
- Better msys2 on Windows 10 support
- Create symbolic links of original files when adding local packages #502
* With the addition of keybinding support for fish 2.x, fisher greatly
increases shell startup time (50-100ms in my testing). This is due to a
number of reasons, including using less-than-ideal builtins,
unconditionally running mkdir, unconditionally recreating
conf.d/fisher.fish, and checking for curl on startup (instead of when
curl is used).
* This patch cuts fisher-related startup time to roughly 25ms, simplifying
the code paths as much as I am able.
* The source function is removed as a compromise for speed. Fish 2.1 and
greater support `source`, and supporting fish 2.0 is not worth a hefty
speed penalty in my opinion.
* Remove curl checks, invert version logic.
* Update README to reflect fish 2.1+ requirement
Packages add key bindings via configuration snippets. As it turns out,
configuration snippets are not available in legacy fish and only fish
3.0 or newer can use the bind builtin on shell startup.
To support packages that add key bindings in legacy fish, we make a
copy of the user's fish_user_key_bindings function (if there it
exists) and create a new one that when called, will source every
*_key_bindings.fish inside \$fisher_path/conf.d and finally run our
copy of the user's fish_user_key_bindings, if it exists, to preserve
any user defined key bindings.
To be able to run code on shell startup we create a fisher.fish file
inside \$fisher_path/conf.d if running an older version of fish. When
the user upgrades to a supported fish version, we'll automatically
remove this file.
Command line usage help now tells you that running fisher will
update installed packages. Running fisher also commits fishfile
changes, but I couldn't fit all the words on the same line.