mirror of
https://github.com/sharkdp/bat.git
synced 2024-11-25 17:23:39 +01:00
b43d31b75a
* Use correct return status so that approximate completion isn't broken * Follow zsh conventions on description forms * Some options can be used multiple times, e.g. -H, -r, --file-name * Set completion context correctly for the cache subcommand * Better completion for --map-syntax argument * Add --nonprintable-notation option * Correct some of the mutual exclusion lists for options
107 lines
4.9 KiB
Bash
Vendored
107 lines
4.9 KiB
Bash
Vendored
#compdef {{PROJECT_EXECUTABLE}}
|
|
|
|
local curcontext="$curcontext" ret=1
|
|
local -a state state_descr line
|
|
typeset -A opt_args
|
|
|
|
(( $+functions[_{{PROJECT_EXECUTABLE}}_cache_subcommand] )) ||
|
|
_{{PROJECT_EXECUTABLE}}_cache_subcommand() {
|
|
local -a args
|
|
args=(
|
|
'(-b --build -c --clear)'{-b,--build}'[initialize or update the syntax/theme cache]'
|
|
'(-b --build -c --clear)'{-c,--clear}'[remove the cached syntax definitions and themes]'
|
|
--source='[specify directory to load syntaxes and themes from]:directory:_files -/'
|
|
--target='[specify directory to store the cached syntax and theme set in]:directory:_files -/'
|
|
--blank'[create completely new syntax and theme sets]'
|
|
--acknowledgements'[build acknowledgements.bin]'
|
|
'(: -)'{-h,--help}'[show help information]'
|
|
)
|
|
|
|
_arguments -S -s $args
|
|
}
|
|
|
|
(( $+functions[_{{PROJECT_EXECUTABLE}}_main] )) ||
|
|
_{{PROJECT_EXECUTABLE}}_main() {
|
|
local -a args
|
|
args=(
|
|
'(-A --show-all)'{-A,--show-all}'[show non-printable characters (space, tab, newline, ..)]'
|
|
--nonprintable-notation='[specify how to display non-printable characters when using --show-all]:notation:(caret unicode)'
|
|
\*{-p,--plain}'[show plain style (alias for `--style=plain`), repeat twice to disable disable automatic paging (alias for `--paging=never`)]'
|
|
'(-l --language)'{-l+,--language=}'[set the language for syntax highlighting]:language:->languages'
|
|
\*{-H+,--highlight-line=}'[highlight specified block of lines]:start\:end'
|
|
\*--file-name='[specify the name to display for a file]:name:_files'
|
|
'(-d --diff)'--diff'[only show lines that have been added/removed/modified]'
|
|
--diff-context='[specify lines of context around added/removed/modified lines when using `--diff`]:lines'
|
|
--tabs='[set the tab width]:tab width [4]'
|
|
--wrap='[specify the text-wrapping mode]:mode [auto]:(auto never character)'
|
|
'!(--wrap)'{-S,--chop-long-lines}
|
|
--terminal-width='[explicitly set the width of the terminal instead of determining it automatically]:width'
|
|
'(-n --number --diff --diff-context)'{-n,--number}'[show line numbers]'
|
|
--color='[specify when to use colors]:when:(auto never always)'
|
|
--italic-text='[use italics in output]:when:(always never)'
|
|
--decorations='[specify when to show the decorations]:when:(auto never always)'
|
|
--paging='[specify when to use the pager]:when:(auto never always)'
|
|
'(-m --map-syntax)'{-m+,--map-syntax=}'[map a glob pattern to an existing syntax name]: :->syntax-maps'
|
|
'(--theme)'--theme='[set the color theme for syntax highlighting]:theme:->themes'
|
|
'(: --list-themes --list-languages -L)'--list-themes'[show all supported highlighting themes]'
|
|
--style='[comma-separated list of style elements to display]: : _values "style [default]"
|
|
default auto full plain changes header header-filename header-filesize grid rule numbers snip'
|
|
\*{-r+,--line-range=}'[only print the specified line range]:start\:end'
|
|
'(* -)'{-L,--list-languages}'[display all supported languages]'
|
|
"--no-config[don't use the configuration file]"
|
|
"--no-custom-assets[don't load custom assets]"
|
|
'(--no-lessopen)'--lessopen'[enable the $LESSOPEN preprocessor]'
|
|
'(--lessopen)'--no-lessopen'[disable the $LESSOPEN preprocessor if enabled (overrides --lessopen)]'
|
|
'(* -)'--config-dir"[show bat's configuration directory]"
|
|
'(* -)'--config-file'[show path to the configuration file]'
|
|
'(* -)'--generate-config-file'[generate a default configuration file]'
|
|
'(* -)'--cache-dir"[show bat's cache directory]"
|
|
'(* -)'{-h,--help}'[show help information]'
|
|
'(* -)'{-V,--version}'[show version information]'
|
|
'*: :{ _files || compadd cache }'
|
|
)
|
|
|
|
_arguments -S -s $args && ret=0
|
|
|
|
case "$state" in
|
|
syntax-maps)
|
|
if ! compset -P '*:'; then
|
|
_message -e patterns 'glob pattern:language'
|
|
return
|
|
fi
|
|
;& # fall-through
|
|
|
|
languages)
|
|
local IFS=$'\n'
|
|
local -a languages
|
|
languages=( $({{PROJECT_EXECUTABLE}} --list-languages | awk -F':|,' '{ for (i = 1; i <= NF; ++i) printf("%s:%s\n", $i, $1) }') )
|
|
|
|
_describe 'language' languages && ret=0
|
|
;;
|
|
|
|
themes)
|
|
local -a themes expl
|
|
themes=( ${(f)"$(_call_program themes {{PROJECT_EXECUTABLE}} --list-themes)"} )
|
|
|
|
_wanted themes expl 'theme' compadd -a themes && ret=0
|
|
;;
|
|
esac
|
|
|
|
return ret
|
|
}
|
|
|
|
case $words[2] in
|
|
cache)
|
|
## Completion of the 'cache' command itself is removed for better UX
|
|
## See https://github.com/sharkdp/bat/issues/2085#issuecomment-1271646802
|
|
shift words
|
|
(( CURRENT-- ))
|
|
curcontext="${curcontext%:*}-${words[1]}:"
|
|
_{{PROJECT_EXECUTABLE}}_cache_subcommand
|
|
;;
|
|
|
|
*)
|
|
_{{PROJECT_EXECUTABLE}}_main
|
|
;;
|
|
esac
|