diff --git a/share/completions/typst.fish b/share/completions/typst.fish new file mode 100644 index 000000000..91b9c24da --- /dev/null +++ b/share/completions/typst.fish @@ -0,0 +1,52 @@ +set -l commands compile watch init query fonts update help + +# global options +complete -c typst -n __fish_use_subcommand -f -l color -d 'Set when to use color' -a 'auto always never' +complete -c typst -n __fish_use_subcommand -r -l cert -d 'Path to custom CA certificate' +complete -c typst -n __fish_use_subcommand -f -l version -s v -d 'Print version' + +# help option/subcommand +complete -c typst -f -l help -s h -d 'Print help' +complete -c typst -f -n __fish_use_subcommand -a help -d 'Print help for the given subcommand(s)' +complete -c typst -n '__fish_seen_subcommand_from help' -x -a "$commands" + +# subcommands +complete -c typst -n __fish_use_subcommand -f -a compile -d 'Compile an input file' +complete -c typst -n __fish_use_subcommand -f -a watch -d 'Watch an input file and recompile on changes' +complete -c typst -n __fish_use_subcommand -f -a init -d 'Initialize a new project' +complete -c typst -n __fish_use_subcommand -f -a query -d 'Process an input file to extract metadata' +complete -c typst -n __fish_use_subcommand -f -a fonts -d 'List all discovered fonts' +complete -c typst -n __fish_use_subcommand -f -a update -d 'Self update the Typst CLI' + +complete -c typst -n "__fish_seen_subcommand_from $commands" -x + +# common subcommand options +# FIXME: only one input file +complete -c typst -n '__fish_seen_subcommand_from compile c watch w query' -x -ka '(__fish_complete_suffix .typ)' -d 'Input file' +#complete -c typst -n '__fish_seen_subcommand_from compile c watch w' -d 'Output file' +complete -c typst -n '__fish_seen_subcommand_from compile c watch w query' -x -l root -a '(__fish_complete_directories)' -d 'Project root (for absolute paths)' +complete -c typst -n '__fish_seen_subcommand_from compile c watch w query' -x -l input -d 'String key-value pair for `sys.inputs`' +complete -c typst -n '__fish_seen_subcommand_from compile c watch w query fonts' -x -l font-path -a '(__fish_complete_directories)' -d 'Additional directories to search for fonts' +complete -c typst -n '__fish_seen_subcommand_from compile c watch w query' -x -l diagnostic-format -a 'human short' -d 'Format to emit diagnostics in' + +# compile/watch subcommands +complete -c typst -n '__fish_seen_subcommand_from compile c watch w' -x -l format -s f -a 'pdf png svg' -d 'Format of the output file' +complete -c typst -n '__fish_seen_subcommand_from compile c watch w' -l open -d 'Open output file after compilation' +complete -c typst -n '__fish_seen_subcommand_from compile c watch w' -x -l ppi -d 'Pixels per inch for PNG export' +complete -c typst -n '__fish_seen_subcommand_from compile c watch w' -l timings -d 'Produce performance timings' + +# init subcommand +complete -c typst -n '__fish_seen_subcommand_from init' -n '__fish_is_nth_token 2' -x -d 'Template to use' +complete -c typst -n '__fish_seen_subcommand_from init' -n '__fish_is_nth_token 3' -x -a '(__fish_complete_directories)' -d 'Project directory' + +# query subcommand +complete -c typst -n '__fish_seen_subcommand_from query' -x -l field -d 'Extract just one field' +complete -c typst -n '__fish_seen_subcommand_from query' -f -l one -d 'Retrieve exactly one element' +complete -c typst -n '__fish_seen_subcommand_from query' -x -l format -a 'json yaml' -d 'Format to serialize in' + +# fonts subcommand +complete -c typst -n '__fish_seen_subcommand_from fonts' -f -l variants -d 'List style variants of each family' + +# update subcommand +complete -c typst -n '__fish_seen_subcommand_from update' -f -l force -d 'Force a downgrade to an older version' +complete -c typst -n '__fish_seen_subcommand_from update' -f -l revert -d 'Revert to the version from before the last update'