mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-06-08 19:31:14 -03:00
Use standalone code paths by default
When users update fish by replacing files, existing shells might throw weird errors because internal functions in share/functions/ might have changed. This is easy to remedy by restarting the shell, but I guess it would be nice if old shells kept using old data. This is somewhat at odds with lazy-loading. But we can use the standalone mode. Turn that on by default. Additionally, this could simplify packaging. Some packages incorrectly put third party files into /usr/share/fish/completion/ when they ought to use /usr/share/fish/vendor_completions.d/ for that. That packaging mistake can make file conflicts randomly appearing when either fish or foo ships a completion for foo. Once we actually stop installing /usr/share/fish/completions, there will no longer be a conflict (for better or worse, things will silently not work, unless packagers notice that the directory doesn't actually exist anymore). The only advantage of having /usr/share/fish/ on the file system is discoverability. But getting the full source code is better anyway. Note that we still install (redundant) $__fish_data_dir when using CMake. This is to not unnecessarily break both 1. already running (old) shells as users upgrade to 4.2 2. plugins (as mentioned in an earlier commit), We can stop installing $__fish_data_dir once we expect 99% of users to upgrade from at least 4.2. If we end up reverting this, we should try to get rid of the embed-data knob in another way, but I'm not sure how. Closes #11921 To-do: - maybe make it a feature flag so users can turn it off without recompiling with "set -Ua no-embed-data".
This commit is contained in:
@@ -381,7 +381,6 @@ By default ``$fish_function_path`` contains the following:
|
||||
- A directory for users to keep their own functions, usually ``~/.config/fish/functions`` (controlled by the ``XDG_CONFIG_HOME`` environment variable).
|
||||
- A directory for functions for all users on the system, usually ``/etc/fish/functions`` (really ``$__fish_sysconfdir/functions``).
|
||||
- Directories for other software to put their own functions. These are in the directories under ``$__fish_user_data_dir`` (usually ``~/.local/share/fish``, controlled by the ``XDG_DATA_HOME`` environment variable) and in the ``XDG_DATA_DIRS`` environment variable, in a subdirectory called ``fish/vendor_functions.d``. The default value for ``XDG_DATA_DIRS`` is usually ``/usr/share/fish/vendor_functions.d`` and ``/usr/local/share/fish/vendor_functions.d``.
|
||||
- The functions shipped with fish, usually installed in ``/usr/share/fish/functions`` (really ``$__fish_data_dir/functions``).
|
||||
|
||||
If you are unsure, your functions probably belong in ``~/.config/fish/functions``.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user