mirror of
https://github.com/fish-shell/fish-shell
synced 2024-12-29 06:13:20 +00:00
Highlight %self as an operator
This commit is contained in:
parent
d73c487d60
commit
5fa4e0d2ee
2 changed files with 15 additions and 3 deletions
|
@ -2472,7 +2472,6 @@ static void test_complete() {
|
|||
do_test(completions.at(1).completion == L"zero");
|
||||
do_test((completions.at(1).flags & COMPLETE_NO_SPACE) != 0);
|
||||
|
||||
|
||||
// Test wraps.
|
||||
do_test(comma_join(complete_get_wrap_targets(L"wrapper1")) == L"");
|
||||
complete_add_wrapper(L"wrapper1", L"wrapper2");
|
||||
|
@ -4086,6 +4085,13 @@ static void test_highlighting() {
|
|||
{L"end", highlight_spec_command},
|
||||
});
|
||||
|
||||
highlight_tests.push_back({
|
||||
{L"echo", highlight_spec_command},
|
||||
{L"%self", highlight_spec_operator},
|
||||
{L"not%self", highlight_spec_param},
|
||||
{L"self%not", highlight_spec_param},
|
||||
});
|
||||
|
||||
// Verify variables and wildcards in commands using /bin/cat.
|
||||
env_set(L"VARIABLE_IN_COMMAND", ENV_LOCAL, {L"a"});
|
||||
env_set(L"VARIABLE_IN_COMMAND2", ENV_LOCAL, {L"at"});
|
||||
|
|
|
@ -444,6 +444,12 @@ static void color_string_internal(const wcstring &buffstr, highlight_spec_t base
|
|||
const size_t buff_len = buffstr.size();
|
||||
std::fill(colors, colors + buff_len, base_color);
|
||||
|
||||
// Hacky support for %self which must be an unquoted literal argument.
|
||||
if (buffstr == PROCESS_EXPAND_SELF_STR) {
|
||||
std::fill_n(colors, wcslen(PROCESS_EXPAND_SELF_STR), highlight_spec_operator);
|
||||
return;
|
||||
}
|
||||
|
||||
enum { e_unquoted, e_single_quoted, e_double_quoted } mode = e_unquoted;
|
||||
int bracket_count = 0;
|
||||
for (size_t in_pos = 0; in_pos < buff_len; in_pos++) {
|
||||
|
@ -692,8 +698,8 @@ class highlighter_t {
|
|||
|
||||
public:
|
||||
// Constructor
|
||||
highlighter_t(const wcstring &str, size_t pos, const env_vars_snapshot_t &ev,
|
||||
wcstring wd, bool can_do_io)
|
||||
highlighter_t(const wcstring &str, size_t pos, const env_vars_snapshot_t &ev, wcstring wd,
|
||||
bool can_do_io)
|
||||
: buff(str),
|
||||
cursor_pos(pos),
|
||||
vars(ev),
|
||||
|
|
Loading…
Reference in a new issue