mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-04-20 16:11:14 -03:00
Commands like "commandline foo" silently fail, and "complete -C" fails with a weird "option requires an argument" error. I think at least the first one can be useful in edge cases, e.g. to test code that does not separate the `commandline` input and output (#11570), and to set fish's initial commandline, see the next commit. I don't think there are super strong reasons to allow these, but if the existing state is merely due to "no one has ever thought of doing this", then we should try changing it. For consistency, also allow "complete -C". I guess an argument for that is that it's weird to make a command behave differently in non-interactive shells. For now, keep the historical behavior of disabling access to the command line in non-interactive shells. If we find a good reason for allowing that (which seems unlikely), we can. Ref: https://github.com/fish-shell/fish-shell/pull/11570#discussion_r2144544053 Co-authored-by: Johannes Altmanninger <aclopte@gmail.com>
68 lines
1.6 KiB
Fish
68 lines
1.6 KiB
Fish
#RUN: %fish %s
|
|
|
|
set -g fish (status fish-path)
|
|
|
|
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}
|
|
|
|
$fish -ic '
|
|
commandline hello
|
|
commandline
|
|
commandline -i world
|
|
commandline
|
|
commandline --cursor 5
|
|
commandline -i " "
|
|
commandline
|
|
'
|
|
# CHECK: hello
|
|
# CHECK: helloworld
|
|
# CHECK: hello world
|