mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-05-15 14:41:14 -03:00
completions frequently use
argparse ... -- (commandline -xpc)
The "commandline -xpc" output
contains only string tokens.
A syntactically-valid process ("-p") consistes of only string tokens
and redirection tokens. We skip all non-string tokens, but we do include
redirection targets, which are always strings. This is weird, and confuses
completion scripts such as the one above. Leave out redirection targets too.
Part of #11084
53 lines
1.3 KiB
Fish
53 lines
1.3 KiB
Fish
#RUN: %fish %s
|
|
|
|
commandline --input "echo foo | bar" --is-valid
|
|
and echo Valid
|
|
# CHECK: Valid
|
|
|
|
commandline --input "echo foo | " --is-valid
|
|
or echo Invalid $status
|
|
# CHECK: Invalid 2
|
|
|
|
# TODO: This seems a bit awkward?
|
|
# The empty commandline is an error, not incomplete?
|
|
commandline --input '' --is-valid
|
|
or echo Invalid $status
|
|
# CHECK: Invalid 1
|
|
|
|
commandline --input 'echo $$' --is-valid
|
|
or echo Invalid $status
|
|
# CHECK: Invalid 1
|
|
|
|
commandline --help &>/dev/null
|
|
echo Help $status
|
|
# CHECK: Help 0
|
|
|
|
commandline -pC 0 --input "test | test"
|
|
echo $status
|
|
# CHECK: 0
|
|
|
|
commandline --insert-smart '$ echo 123' --current-token
|
|
# CHECKERR: commandline: --insert-smart --current-token: options cannot be used together
|
|
# CHECKERR: {{.*}}/commandline.fish (line {{\d+}}):
|
|
# CHECKERR: commandline --insert-smart '$ echo 123' --current-token
|
|
# CHECKERR: ^
|
|
# CHECKERR: (Type 'help commandline' for related documentation)
|
|
|
|
commandline --input "echo {arg1,arg2} <in >out" --tokens-expanded
|
|
# CHECK: echo
|
|
# CHECK: arg1
|
|
# CHECK: arg2
|
|
|
|
commandline --input "echo <" --tokens-expanded
|
|
# CHECK: echo
|
|
commandline --input "echo >" --tokens-expanded
|
|
# CHECK: echo
|
|
commandline --input "echo > > arg" --tokens-expanded
|
|
# CHECK: echo
|
|
commandline --input "echo > {a,b}" --tokens-expanded
|
|
# CHECK: echo
|
|
|
|
commandline --input "echo {arg1,arg2} <in >out" --tokens-raw
|
|
# CHECK: echo
|
|
# CHECK: {arg1,arg2}
|