fish-shell/src
Fabian Homborg 340de73172 Call "fish_command_not_found" if a command wasn't found
Previously, when a command wasn't found, fish would emit the
"fish_command_not_found" *event*.

This was annoying as it was hard to override (the code ended up
checking for a function called `__fish_command_not_found_handler`
anyway!), the setup was ugly,
and it's useless - there is no use case for multiple command-not-found handlers.

Instead, let's just call a function `fish_command_not_found` if it
exists, or print the default message otherwise.

The event is completely removed, but because a missing event is not an error
(MEISNAE in C++-speak) this isn't an issue.

Note that, for backwards-compatibility, we still keep the default
handler function around even tho the new one is hard-coded in C++.

Also, if we detect a previous handler, the new handler just calls it.

This way, the backwards-compatible way to install a custom handler is:

```fish
function __fish_command_not_found_handler --on-event fish_command_not_found
    # do a little dance, make a little love, get down tonight
end
```

and the new hotness is

```fish
function fish_command_not_found
    # do the thing
end
```

Fixes #7293.
2020-09-06 11:15:54 +02:00
..
widecharwidth Incorporate widecharwidth changes for narrow emoji 2020-08-04 12:40:46 -07:00
ast.cpp Address some warnings from clangd 2020-08-29 12:02:18 +02:00
ast.h Allow newlines after && and || 2020-08-06 21:24:26 +02:00
ast_node_types.inc Introduce a new fish ast 2020-07-04 14:58:02 -07:00
autoload.cpp Don't eagerly fetch the current time in autoloading 2020-08-08 15:30:04 -07:00
autoload.h Run clang-format on all files 2019-10-13 15:50:48 -07:00
builtin.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_argparse.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_argparse.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_bg.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_bg.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_bind.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_bind.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_block.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_block.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_builtin.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_builtin.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_cd.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_cd.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_command.cpp Let command, jobs and type take --query instead of --quiet 2020-09-04 16:55:09 +02:00
builtin_command.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_commandline.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_commandline.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_complete.cpp Remove the cursor position from highlighting 2020-08-11 17:42:30 -07:00
builtin_complete.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_contains.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_contains.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_disown.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_disown.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_echo.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_echo.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_emit.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_emit.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_eval.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_eval.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_exit.cpp Rework exit command 2020-08-15 16:06:54 -07:00
builtin_exit.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_fg.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_fg.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_function.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_function.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_functions.cpp Remove the cursor position from highlighting 2020-08-11 17:42:30 -07:00
builtin_functions.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_history.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_history.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_jobs.cpp Let command, jobs and type take --query instead of --quiet 2020-09-04 16:55:09 +02:00
builtin_jobs.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_math.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_math.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_printf.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_printf.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_pwd.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_pwd.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_random.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_random.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_read.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_read.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_realpath.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_realpath.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_return.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_return.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_set.cpp Return no status from successful variable assignments 2020-08-05 12:23:49 -07:00
builtin_set.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_set_color.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_set_color.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_source.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_source.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_status.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_status.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_string.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_string.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_test.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_test.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_ulimit.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_ulimit.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_wait.cpp Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_wait.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
color.cpp Another formatting run 2020-06-24 20:43:56 +02:00
color.h [clang-tidy] Fix inconsistent declarations 2019-11-25 14:13:33 -08:00
common.cpp Bravely have read_blocked return after first read 2020-07-30 22:08:54 -07:00
common.h Eliminate wcs2str 2020-07-29 16:37:39 -07:00
complete.cpp Remove a wrapper around run_on_main_thread 2020-08-24 16:26:15 -07:00
complete.h Introduce operation_context_t 2020-01-16 15:21:28 -08:00
enum_set.h [cppcheck] add some std::move 2020-03-14 15:07:54 -07:00
env.cpp Add a $status_generation variable that's incremented for each interactive command that produces a status. 2020-08-05 12:23:49 -07:00
env.h Convert var_table_t to an unordered_map 2020-06-25 00:56:49 -05:00
env_dispatch.cpp Remove duplicated line 2020-09-02 17:37:32 +02:00
env_dispatch.h Run clang-format on all files 2019-10-13 15:50:48 -07:00
env_universal_common.cpp Eliminate wcs2str 2020-07-29 16:37:39 -07:00
env_universal_common.h Continued adoption of autoclose_fd_t and exec_close 2020-01-29 14:16:16 -08:00
event.cpp Remove some dead code and enable a test 2020-08-09 15:05:16 -07:00
event.h [cppcheck] add some std::move 2020-03-14 15:07:54 -07:00
exec.cpp Make the 'time' keyword a fixed property of a job. 2020-09-02 15:06:17 -07:00
exec.h Correct a misspeeling 2020-08-06 11:51:08 -07:00
expand.cpp Clean up expand_cmdsubst somewhat 2020-07-14 15:19:10 -07:00
expand.h [clang-tidy] remove redundant string initialization 2020-04-05 10:13:13 +02:00
fallback.cpp Remove lrand48 checks and support 2020-07-08 11:00:12 -07:00
fallback.h Remove lrand48 checks and support 2020-07-08 11:00:12 -07:00
fd_monitor.cpp [cppcheck] add const in several places 2020-03-14 15:07:54 -07:00
fd_monitor.h Include sys/select.h for fd_set 2020-02-12 22:02:32 +01:00
fish.cpp Remove errant fish_wcwidth call 2020-09-04 17:12:22 +02:00
fish_indent.cpp fish_indent: preserve semis in if and while conditions 2020-08-17 17:40:28 +02:00
fish_key_reader.cpp Exit key reader normally on help, version 2020-05-05 12:33:22 +08:00
fish_test_helper.cpp Add a test that nohup works 2020-08-10 12:26:30 -07:00
fish_tests.cpp Remove the cursor position from highlighting 2020-08-11 17:42:30 -07:00
fish_version.cpp Reformat all files 2019-05-05 12:09:25 +02:00
fish_version.h Revert "Generate FISH_BUILD_VERSION info for cmake builds" 2018-01-08 22:28:10 -08:00
flog.cpp Stop #include-ing wcstringutil.h in flog.h 2020-07-29 17:04:18 -07:00
flog.h Revert "Revert "Factor repainting decions from readline commands better in the reader"" 2020-08-23 15:31:57 -07:00
function.cpp Adopt the new AST in parse_execution 2020-07-04 14:58:05 -07:00
function.h Remove the old parser bits 2020-07-04 14:58:05 -07:00
future_feature_flags.cpp Migrate a bunch of code out of common.h 2020-01-15 13:16:43 -08:00
future_feature_flags.h Run clang-format on all files 2019-10-13 15:50:48 -07:00
global_safety.h Mark s_cancellation_signal a relaxed atomic 2020-09-04 16:10:22 -07:00
highlight.cpp Remove the cursor position from highlighting 2020-08-11 17:42:30 -07:00
highlight.h Remove the cursor position from highlighting 2020-08-11 17:42:30 -07:00
history.cpp Reduce copying in parse_util_detect_errors 2020-07-12 16:57:30 -07:00
history.h Avoid forming owning_lock of incomplete type in history 2020-05-22 13:36:46 -07:00
history_file.cpp [clang-tidy] change several member functions to const 2020-04-05 10:13:13 +02:00
history_file.h [clang-tidy] change several member functions to const 2020-04-05 10:13:13 +02:00
input.cpp Revert "Revert "Factor repainting decions from readline commands better in the reader"" 2020-08-23 15:31:57 -07:00
input.h [cppcheck] add const in several places 2020-03-14 15:07:54 -07:00
input_common.cpp [clang-tidy] performance 2020-04-05 10:13:13 +02:00
input_common.h Add forward-single-char input command 2020-08-01 12:09:31 +02:00
intern.cpp Remove a few less useful debug messages 2020-01-19 14:22:50 +01:00
intern.h restyle intern module to match project style 2016-05-01 20:28:46 -07:00
io.cpp Ensure we don't leak half of a pipe 2020-09-05 13:24:26 -07:00
io.h Ensure we don't leak half of a pipe 2020-09-05 13:24:26 -07:00
iothread.cpp Guard thread_local 2020-05-22 13:41:05 -07:00
iothread.h Introduce debounce_t 2020-03-06 17:15:21 -08:00
job_group.cpp Implement cancel groups 2020-09-03 11:01:27 -07:00
job_group.h Implement cancel groups 2020-09-03 11:01:27 -07:00
kill.cpp [clang-tidy] Use C++ using instead of C typedef 2019-11-29 23:46:51 -08:00
kill.h fix typos 2019-10-23 19:38:44 +02:00
lru.h Use unordered_map instead of map in lru 2020-08-08 15:32:06 -07:00
maybe.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
null_terminated_array.cpp Change C casts to C++ ones 2020-05-01 13:30:56 -07:00
null_terminated_array.h Change C casts to C++ ones 2020-05-01 13:30:56 -07:00
operation_context.cpp Introduce operation_context_t 2020-01-16 15:21:28 -08:00
operation_context.h Rename job_tree to job_group 2020-05-30 14:22:44 -07:00
output.cpp Remove some dead code and enable a test 2020-08-09 15:05:16 -07:00
output.h camelCase to snake_case a function name 2020-08-23 03:38:25 -07:00
pager.cpp Fix a warning about ambiguous && and || in pager 2020-08-27 14:14:05 -07:00
pager.h Revert "Revert "Factor repainting decions from readline commands better in the reader"" 2020-08-23 15:31:57 -07:00
parse_constants.h Make parse_token_type_t an enum class 2020-07-09 14:22:04 -07:00
parse_execution.cpp Call "fish_command_not_found" if a command wasn't found 2020-09-06 11:15:54 +02:00
parse_execution.h Implement cancel groups 2020-09-03 11:01:27 -07:00
parse_tree.cpp Reduce copying in parse_util_detect_errors 2020-07-12 16:57:30 -07:00
parse_tree.h Reduce copying in parse_util_detect_errors 2020-07-12 16:57:30 -07:00
parse_util.cpp Teach up-line to cross empty lines 2020-08-29 12:02:18 +02:00
parse_util.h Reduce copying in parse_util_detect_errors 2020-07-12 16:57:30 -07:00
parser.cpp Implement cancel groups 2020-09-03 11:01:27 -07:00
parser.h Rework exit command 2020-08-15 16:06:54 -07:00
parser_keywords.cpp Simplify parser_keywords_is_reserved 2020-08-08 15:04:52 -07:00
parser_keywords.h Make IWYU output in lint.cpp less messy 2016-06-23 17:26:08 -07:00
path.cpp Stop #include-ing wcstringutil.h in flog.h 2020-07-29 17:04:18 -07:00
path.h Migrate a bunch of code out of common.h 2020-01-15 13:16:43 -08:00
postfork.cpp Bravely remove reclaim... param from continue_job, and rework tcsetpgrp calls 2020-07-27 14:51:37 -07:00
postfork.h Bravely remove reclaim... param from continue_job, and rework tcsetpgrp calls 2020-07-27 14:51:37 -07:00
print_help.cpp Run clang-format on all files 2019-10-13 15:50:48 -07:00
print_help.h restyle proc module to match project style 2016-05-02 22:07:58 -07:00
proc.cpp Implement cancel groups 2020-09-03 11:01:27 -07:00
proc.h Make the 'time' keyword a fixed property of a job. 2020-09-02 15:06:17 -07:00
reader.cpp Always check for fish_right_prompt's existence 2020-09-02 17:51:21 +02:00
reader.h Factor the exit state to make exit handlers more explicit 2020-08-30 15:09:31 -07:00
redirection.cpp Collapse io_data switch statements 2019-12-29 15:51:22 -08:00
redirection.h dup2_list_t::resolve_chain to stop returning maybe 2019-12-29 14:49:05 -08:00
sanity.cpp Change C casts to C++ ones 2020-05-01 13:30:56 -07:00
sanity.h Amend typos and grammar errors 2019-11-25 13:07:15 +01:00
screen.cpp camelCase to snake_case a function name 2020-08-23 03:38:25 -07:00
screen.h Correct pager size when command line soft-wraps 2020-07-05 08:55:17 +02:00
signal.cpp Mark s_cancellation_signal a relaxed atomic 2020-09-04 16:10:22 -07:00
signal.h Simplify topic monitoring 2020-08-06 19:01:30 -07:00
termsize.cpp Stop #include-ing wcstringutil.h in flog.h 2020-07-29 17:04:18 -07:00
termsize.h Eliminate the termsize handling from common.h 2020-06-07 20:00:42 -07:00
timer.cpp [clang-tidy] performance 2020-04-05 10:13:13 +02:00
timer.h Make "time" a job prefix 2020-01-03 01:07:49 -06:00
tinyexpr.cpp math: Implement tau 2020-08-26 17:48:58 +02:00
tinyexpr.h math: Complain about unknown *function*, not *variable* 2020-02-07 17:43:22 +01:00
tokenizer.cpp Remove some errant 'file' from redirection comment 2020-09-05 11:28:43 -07:00
tokenizer.h Remove preceding_escaped_nl 2020-07-07 13:48:35 -07:00
topic_monitor.cpp Use anon semaphores only on Linux 2020-09-05 13:04:22 -07:00
topic_monitor.h Correct a stale comment 2020-08-24 12:12:10 -07:00
trace.cpp [cppcheck] add const in several places 2020-03-14 15:07:54 -07:00
trace.h Add support for fish_trace variable to trace execution 2019-11-02 14:40:57 -07:00
utf8.cpp Change C casts to C++ ones 2020-05-01 13:30:56 -07:00
utf8.h [clang-tidy] Fix inconsistent declarations 2019-11-25 14:13:33 -08:00
util.cpp [clang-tidy] numeric literals to uppercase 2020-04-05 10:13:13 +02:00
util.h Return glob ordering to pre-3.1 state 2020-02-14 19:06:19 +01:00
wcstringutil.cpp Introduce wcs2string_callback 2020-07-29 19:36:20 -07:00
wcstringutil.h Introduce wcs2string_callback 2020-07-29 19:36:20 -07:00
wgetopt.cpp Remove some dead code and enable a test 2020-08-09 15:05:16 -07:00
wgetopt.h [clang-tidy] change several member functions to const 2020-04-05 10:13:13 +02:00
wildcard.cpp Apply clang-format 10 and selected lints from "make lint-all" 2020-07-01 00:44:06 +02:00
wildcard.h Correct the speeling of sentinel 2020-02-29 15:56:52 -08:00
wutil.cpp Remove some dead code and enable a test 2020-08-09 15:05:16 -07:00
wutil.h Remove some dead code and enable a test 2020-08-09 15:05:16 -07:00