Add __fish_can_complete_switches & __fish_should_complete_switches

To be used by completions to directly determine whether it is either
possible or preferable to complete a switch (instead of a subcommand),
(presuming that switches must come before subcommands).

* __fish_can_complete_switches: we are in a position where a switch may
be placed.
* __fish_should_complete_switches: we're in a position to accept a
switch and the current token starts with `-` so we have no choice but
to do so.
This commit is contained in:
Mahmoud Al-Qudsi 2018-04-19 17:52:20 -05:00
parent 342d0644ac
commit 7db0958804
2 changed files with 26 additions and 0 deletions

View file

@ -0,0 +1,14 @@
# Returns whether it is at all possible (even if not recommended)
# to complete a -s or --long argument.
function __fish_can_complete_switches
# Search backwards
for arg in (commandline -ct)[-1..1]
if test "$arg" = ""
continue
else if not string match -qr -- "^-\S*\$" "$arg"
return 1
end
end
return 0
end

View file

@ -0,0 +1,12 @@
# Returns whether we *should* complete a -s or --long argument.
# The preference is NOT to do so, i.e. prefer subcommands over switches.
function __fish_should_complete_switches
if not __fish_can_complete_switches
return 1
end
if string match -qr -- "^-" (commandline -ct)[-1]
return 0
end
return 1
end