New helper functions __fish_is_first_arg and __fish_prev_arg_in

For usage in completion scripts.

Unlike `__fish_is_first_token` (which is probably not correctly named),
`__fish_is_first_arg` returns true regardless of whether existing tokens start with `-`
or not, to be used when an arg cannot be used with any other argument.

`__fish_prev_arg_in` is similar to `__fish_seen_...` but it explicitly
tests the preceding token only, for arguments that take only a single
parameter.
This commit is contained in:
Mahmoud Al-Qudsi 2018-05-06 18:46:56 -05:00
parent d652b9b606
commit 6dc74d3b6c
2 changed files with 21 additions and 0 deletions

View file

@ -0,0 +1,5 @@
# determine if this is the very first argument (regardless if switch or not)
function __fish_is_first_arg
set -l tokens (commandline -co)
test (count $tokens) -eq 1
end

View file

@ -0,0 +1,16 @@
# returns 0 only if previous argument is one of the supplied arguments
function __fish_prev_arg_in
set -l tokens (commandline -co)
set -l tokenCount (count $tokens)
if test $tokenCount -lt 2
# need at least cmd and prev argument
return 1
end
for arg in $argv
if string match -q -- $tokens[-1] $arg
return 0
end
end
return 1
end