mirror of
https://github.com/fish-shell/fish-shell.git
synced 2025-03-15 23:22:53 +08:00
Make fish install a command_not_found handler in non-interactive uses.
Previously, fish's command_not_found handler would be installed in __fish_config_interactive. Errors that occured early in startup (e.g. in config.fish) or in non-interactive mode would therefore not be reported. With this change, fish now exposes its default cnf handler as __fish_default_command_not_found_handler . config.fish then installs a cnfh that invokes the default. When fish goes interactive, the initial cnfh is overwritten with a fancier one, that may in turn fall back to invoking the default.
This commit is contained in:
parent
64953e26fc
commit
3ab954644f
@ -10,6 +10,21 @@
|
||||
|
||||
set -g IFS \n\ \t
|
||||
|
||||
#
|
||||
# Create the default command_not_found handler
|
||||
#
|
||||
function __fish_default_command_not_found_handler
|
||||
echo "fish: Unknown command '$argv'" >&2
|
||||
end
|
||||
|
||||
#
|
||||
# Hook up the default as the principal command_not_found handler
|
||||
# This is likely to be overwritten in __fish_config_interactive
|
||||
#
|
||||
function __fish_command_not_found_handler --on-event fish_command_not_found
|
||||
__fish_default_command_not_found_handler $argv
|
||||
end
|
||||
|
||||
#
|
||||
# Set default search paths for completions and shellscript functions
|
||||
# unless they already exist
|
||||
|
@ -233,6 +233,11 @@ function __fish_config_interactive -d "Initializations that should be performed
|
||||
|
||||
# The first time a command is not found, look for command-not-found
|
||||
# This is not cheap so we try to avoid doing it during startup
|
||||
# config.fish already installed a handler for noninteractive command-not-found,
|
||||
# so delete it here since we are now interactive
|
||||
functions -e __fish_command_not_found_handler
|
||||
|
||||
# Now install our fancy variant
|
||||
function __fish_command_not_found_setup --on-event fish_command_not_found
|
||||
# Remove fish_command_not_found_setup so we only execute this once
|
||||
functions --erase __fish_command_not_found_setup
|
||||
@ -262,7 +267,7 @@ function __fish_config_interactive -d "Initializations that should be performed
|
||||
# Use standard fish command not found handler otherwise
|
||||
else
|
||||
function __fish_command_not_found_handler --on-event fish_command_not_found
|
||||
echo fish: Unknown command "'$argv'" >&2
|
||||
__fish_default_command_not_found_handler $argv
|
||||
end
|
||||
end
|
||||
__fish_command_not_found_handler $argv
|
||||
|
Loading…
x
Reference in New Issue
Block a user