mirror of
https://github.com/fish-shell/fish-shell.git
synced 2025-03-27 14:45:13 +08:00
Increase test coverage and improve completion commenting
This commit is contained in:
parent
a8a10d634b
commit
05a640b027
@ -920,6 +920,8 @@ bool completer_t::complete_param(const wcstring &scmd_orig, const wcstring &spop
|
|||||||
}
|
}
|
||||||
} else if (popt[0] == L'-') {
|
} else if (popt[0] == L'-') {
|
||||||
// Set to true if we found a matching old-style switch.
|
// Set to true if we found a matching old-style switch.
|
||||||
|
// Here we are testing the previous argument,
|
||||||
|
// to see how we should complete the current argument
|
||||||
bool old_style_match = false;
|
bool old_style_match = false;
|
||||||
|
|
||||||
// If we are using old style long options, check for them first.
|
// If we are using old style long options, check for them first.
|
||||||
@ -943,6 +945,8 @@ bool completer_t::complete_param(const wcstring &scmd_orig, const wcstring &spop
|
|||||||
const complete_entry_opt_t *o = &*oiter;
|
const complete_entry_opt_t *o = &*oiter;
|
||||||
// Gnu-style options with _optional_ arguments must be specified as a single
|
// Gnu-style options with _optional_ arguments must be specified as a single
|
||||||
// token, so that it can be differed from a regular argument.
|
// token, so that it can be differed from a regular argument.
|
||||||
|
// Here we are testing the previous argument for a GNU-style match,
|
||||||
|
// to see how we should complete the current argument
|
||||||
if (o->type == option_type_double_long && !(o->result_mode & NO_COMMON))
|
if (o->type == option_type_double_long && !(o->result_mode & NO_COMMON))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@ -960,6 +964,7 @@ bool completer_t::complete_param(const wcstring &scmd_orig, const wcstring &spop
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Now we try to complete an option itself
|
||||||
for (option_list_t::const_iterator oiter = options.begin(); oiter != options.end();
|
for (option_list_t::const_iterator oiter = options.begin(); oiter != options.end();
|
||||||
++oiter) {
|
++oiter) {
|
||||||
const complete_entry_opt_t *o = &*oiter;
|
const complete_entry_opt_t *o = &*oiter;
|
||||||
|
@ -56,6 +56,16 @@ complete -c TestDoubleDash -l TestDoubleDashOption
|
|||||||
complete -C'TestDoubleDash -' | sort
|
complete -C'TestDoubleDash -' | sort
|
||||||
echo "Expect no output:" (complete -C'TestDoubleDash -- -' | sort)
|
echo "Expect no output:" (complete -C'TestDoubleDash -- -' | sort)
|
||||||
|
|
||||||
|
# fish seems to have always handled "exclusive" options strangely
|
||||||
|
# It seems to treat them the same as "old-style" (single-dash) long options
|
||||||
|
echo "Testing exclusive options"
|
||||||
|
complete -c TestExclusive -x -s Q
|
||||||
|
complete -c TestExclusive -x -s W
|
||||||
|
complete -c TestExclusive -s A
|
||||||
|
echo "Expect -A -Q -W:" (complete -C'TestExclusive -' | sort | string join ' ')
|
||||||
|
echo "Expect -AQ -AW:" (complete -C'TestExclusive -A' | sort | string join ' ')
|
||||||
|
echo "Expect no output 1:" (complete -C'TestExclusive -Q')
|
||||||
|
echo "Expect no output 2:" (complete -C'TestExclusive -W')
|
||||||
|
|
||||||
# Test that directory completions work correctly
|
# Test that directory completions work correctly
|
||||||
if begin; rm -rf test6.tmp.dir; and mkdir test6.tmp.dir; end
|
if begin; rm -rf test6.tmp.dir; and mkdir test6.tmp.dir; end
|
||||||
|
@ -33,6 +33,11 @@ CCCC:
|
|||||||
Test that -- suppresses option completions
|
Test that -- suppresses option completions
|
||||||
--TestDoubleDashOption
|
--TestDoubleDashOption
|
||||||
Expect no output:
|
Expect no output:
|
||||||
|
Testing exclusive options
|
||||||
|
Expect -A -Q -W: -A -Q -W
|
||||||
|
Expect -AQ -AW: -AQ -AW
|
||||||
|
Expect no output 1:
|
||||||
|
Expect no output 2:
|
||||||
implicit cd complete works
|
implicit cd complete works
|
||||||
no implicit cd complete after 'command'
|
no implicit cd complete after 'command'
|
||||||
PATH does not cause incorrect implicit cd
|
PATH does not cause incorrect implicit cd
|
||||||
|
Loading…
x
Reference in New Issue
Block a user