fish-shell/src
ridiculousfish e88eb508d0 Rework variable assignments during tab completion
Prior to this change, tab completing with a variable assignment like
`VAR=val cmd<tab>` would parse out and apply VAR=val, then recursively
invoke completions. This caused some awkwardness around the wrap chain -
if a wrapped command had a variable completion we risked infinite
recursion. A secondary problem is that we would run any command
substitutions inside variable assignment, which the user does not expect
to run until pressing enter.

With this change, we explicitly track variable assignments encountered
during tab completion, including both those explicitly given on the
command line and those found during wrap chain walk. We then apply them
while suppressing command substitutions.
2020-09-26 18:39:38 -07:00
..
widecharwidth Incorporate widecharwidth changes for narrow emoji 2020-08-04 12:40:46 -07:00
ast.cpp Minimize AST node vector reallocations 2020-09-08 11:55:10 -05: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 Make type a builtin 2020-09-21 20:58:34 +02: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 Declare functions in headers or use internal linkage (static) 2020-09-08 22:44:03 +02: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 Use bools, we have the technology 2020-09-24 18:53:19 +02: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 Refactor: apply some lints 2020-09-26 14:56:03 +02: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 Move functions_def to function.cpp 2020-09-21 17:44:58 +02: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 Use bools, we have the technology 2020-09-24 18:53:19 +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 builtin realpath: Add --no-symlinks option 2020-09-12 19:26:04 +02: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 set_color: Honor modifiers (bold, background..) with --print-colors 2020-09-17 12:33:56 +02: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 string: Handle unmatched capturing groups as empty 2020-09-20 10:36:17 +02: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 builtin test: Let -t work for the standard streams 2020-09-16 21:02:59 +02:00
builtin_test.h Change builtins to return maybe_t<int> instead of int 2020-08-05 12:23:49 -07:00
builtin_type.cpp type: Print *only* the path if given --path or --force-path 2020-09-23 17:24:51 +02:00
builtin_type.h Make type a builtin 2020-09-21 20:58:34 +02: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 Relax some main thread requirements around waiting for jobs 2020-09-13 17:54:52 -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 Use bools, we have the technology 2020-09-24 18:53:19 +02:00
common.h Eliminate wcs2str 2020-07-29 16:37:39 -07:00
complete.cpp Rework variable assignments during tab completion 2020-09-26 18:39:38 -07:00
complete.h Refactor: apply some lints 2020-09-26 14:56:03 +02:00
enum_set.h [cppcheck] add some std::move 2020-03-14 15:07:54 -07:00
env.cpp Actually create runtime path if needed 2020-09-17 12:33:56 +02:00
env.h Convert var_table_t to an unordered_map 2020-06-25 00:56:49 -05:00
env_dispatch.cpp Declare functions in headers or use internal linkage (static) 2020-09-08 22:44:03 +02:00
env_dispatch.h Declare functions in headers or use internal linkage (static) 2020-09-08 22:44:03 +02: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 useless casts 2020-09-08 22:44:03 +02: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 Declare functions in headers or use internal linkage (static) 2020-09-08 22:44:03 +02: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 Read arguments with fish -c 2020-09-26 14:47:20 +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 fish_tests: Break if unescape test failed 2020-09-26 10:43:05 +02: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 Move functions_def to function.cpp 2020-09-21 17:44:58 +02:00
function.h Move functions_def to function.cpp 2020-09-21 17:44:58 +02:00
future_feature_flags.cpp Make the global feature set an instance variable 2020-09-12 17:35:21 -07:00
future_feature_flags.h Fix the tests 2020-09-12 19:06:28 -07:00
global_safety.h Mark s_cancellation_signal a relaxed atomic 2020-09-04 16:10:22 -07:00
highlight.cpp Use bools, we have the technology 2020-09-24 18:53:19 +02: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 Declare functions in headers or use internal linkage (static) 2020-09-08 22:44:03 +02: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 Declare functions in headers or use internal linkage (static) 2020-09-08 22:44:03 +02: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 Use bools, we have the technology 2020-09-24 18:53:19 +02: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 Refactor: apply some lints 2020-09-26 14:56:03 +02: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 Use bools, we have the technology 2020-09-24 18:53:19 +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 Consolidate complete cycle detection and always report error on cycle 2020-09-26 14:56:03 +02: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 Detect windows line endings when executing a file 2020-09-25 16:51:05 +02: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 Relax some main thread requirements around waiting for jobs 2020-09-13 17:54:52 -07:00
proc.h Make the 'time' keyword a fixed property of a job. 2020-09-02 15:06:17 -07:00
reader.cpp reader: Return true if suppress-autosuggestion suppressed 2020-09-26 10:09:55 +02:00
reader.h Declare functions in headers or use internal linkage (static) 2020-09-08 22:44:03 +02: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 screen: Show suggestion if the commandline was pushed to a new line 2020-09-12 20:09:26 +02: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 Declare functions in headers or use internal linkage (static) 2020-09-08 22:44:03 +02:00
tinyexpr.h math: Complain about unknown *function*, not *variable* 2020-02-07 17:43:22 +01:00
tokenizer.cpp tokenizer: Switch to !iswblank instead of iswgraph 2020-09-11 23:53:26 +02:00
tokenizer.h Separate out variable assignments when completing 2020-09-26 17:30:25 -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 builtin realpath: Add --no-symlinks option 2020-09-12 19:26:04 +02:00
wutil.h builtin realpath: Add --no-symlinks option 2020-09-12 19:26:04 +02:00