Files
flameshot/data/shell-completion/flameshot.fish
Haris Gušić ab32f40348 Add fish completions (#2247)
* Add fish completions

Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>

* Fix minor bug in `flameshot config` output

Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>

* Add fish completions to install target

Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>

* Add release note

Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>

* Update rpm package spec

Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
2022-01-14 22:55:56 +01:00

112 lines
5.3 KiB
Fish

set -l SUBCOMMANDS gui screen full launcher config
####################
# HELPER FUNCTIONS #
####################
# Complete the subcommand provided as the first argument.
# The rest of the arguments are the same as fish's `complete`. The option
# '-c flameshot' is implicit.
function __flameshot_complete --argument-names cmd
set -l conditions "__fish_seen_subcommand_from $cmd"
argparse -i "n/condition=" -- $argv[2..]
[ -n "$_flag_n" ] && set -l conditions "$conditions && $_flag_n"
complete -c flameshot $argv -n "$conditions"
end
# Return success if the command line contains no positional arguments
function __flameshot_no_positional_args
set -l -- args (commandline -po) # cmdline broken up into list
set -l -- cmdline (commandline -p) # single string
set -l -- n (count $args) # number of cmdline tokens
for i in (seq 2 $n)
set -l arg $args[$i]
[ -z "$arg" ] && continue # can be caused by '--' argument
# If the the last token is a positional argument and there is no
# trailing space, we ignore it
[ "$i" = "$n" ] && [ (string sub -s -1 "$cmdline") != ' ' ] && break
if string match -rvq '^-' -- "$arg" # doesn't start with -
return 1
end
end
# contains a '--' argument
string match -r -- '\s--\s' "$cmdline" && return 1
return 0
end
# Complete paths matching $argv
function __flameshot_complete_paths
complete -C"nOnExIsTeNtCoMmAndZIOAGA2329jdbfaFkahDf21234h8z43 $argv"
end
# Complete the region option
function __flameshot_complete_region --argument subcommand
if [ "$subcommand" = "screen" ]
echo all\tCapture entire screen
else
echo all\tCapture all screens
echo screen0\tCapture screen 0
echo screen1\tCapture screen 1
echo screen2\tCapture screen 2
echo screen3\tCapture screen 3
end
echo WxH+X+Y\tCustom region in pixels
end
# Complete screen numbers
function __flameshot_complete_screen_number
echo 0\tScreen 0
echo 1\tScreen 1
echo 2\tScreen 2
echo 3\tScreen 3
end
###############
# COMPLETIONS #
###############
# No subcommand
complete -c flameshot -n __flameshot_no_positional_args -f -a "$SUBCOMMANDS"
complete -c flameshot -l "help" -s "h" -f -d "Display help message"
complete -c flameshot -l "version" -s "v" -f -d "Display version information" -n __flameshot_no_positional_args
# GUI subcommand
__flameshot_complete gui -f
__flameshot_complete gui -l "path" -s "p" -rk -d "Output file or directory"
__flameshot_complete gui -l "clipboard" -s "c" -f -d "Copy screenshot to the clipboard"
__flameshot_complete gui -l "delay" -s "d" -frk -d "Delay time in milliseconds"
__flameshot_complete gui -l "region" -frk -d "Screenshot region to select (WxH+X+Y)" -a "(__flameshot_complete_region gui)"
__flameshot_complete gui -l "raw" -s "r" -f -d "Print raw PNG capture"
__flameshot_complete gui -l "print-geometry" -s "g" -f -d "Print geometry of the selection"
__flameshot_complete gui -l "upload" -s "u" -f -d "Upload the screenshot"
__flameshot_complete gui -l "pin" -f -d "Pin the screenshot to the screen"
__flameshot_complete gui -l "accept-on-select" -s "s" -f -d "Accept capture as soon as a selection is made"
# SCREEN subcommand
__flameshot_complete screen -f
__flameshot_complete screen -l "number" -s "n" -frk -d "Screen number (starting from 0)" -a "(__flameshot_complete_screen_number)"
__flameshot_complete screen -l "path" -s "p" -rk -d "Output file or directory"
__flameshot_complete screen -l "clipboard" -s "c" -f -d "Copy screenshot to the clipboard"
__flameshot_complete screen -l "delay" -s "d" -frk -d "Delay time in milliseconds"
__flameshot_complete screen -l "region" -frk -d "Screenshot region to select (WxH+X+Y)" -a "(__flameshot_complete_region screen)"
__flameshot_complete screen -l "raw" -s "r" -f -d "Print raw PNG capture"
__flameshot_complete screen -l "upload" -s "u" -f -d "Upload the screenshot"
__flameshot_complete screen -l "pin" -f -d "Pin the screenshot to the screen"
# FULL command
__flameshot_complete full -f
__flameshot_complete full -l "path" -s "p" -rk -d "Output file or directory"
__flameshot_complete full -l "clipboard" -s "c" -f -d "Copy screenshot to the clipboard"
__flameshot_complete full -l "delay" -s "d" -frk -d "Delay time in milliseconds"
__flameshot_complete full -l "region" -frk -d "Screenshot region to select (WxH+X+Y)" -a "(__flameshot_complete_region full)"
__flameshot_complete full -l "raw" -s "r" -f -d "Print raw PNG capture"
__flameshot_complete full -l "upload" -s "u" -f -d "Upload the screenshot"
# LAUNCHER command doesn't have any completions specific to itself
# CONFIG command -- TODO will be completed in a future version
__flameshot_complete config -f
__flameshot_complete config -l "check" -f -d "Check the configuration for errors"