2020-08-08 07:49:53 +02:00
#compdef bat
# FIXME: help me with the subcommand `cache`, zsh completion is hard as hell
local -a args
local state
args = (
'(-A --show-all)' { -A,--show-all} '[Show non-printable characters (space, tab, newline, ..)]'
{ -p,--plain} '[Show plain style (alias for `--style=plain`)]:When `-p` is used twice (`-pp`), it also disables automatic paging (alias for `--style=plain --paging=never`)'
'(-l --language)' { -l+,--language= } '[Set the language for syntax highlighting]:<language>:->language'
2020-08-08 08:31:39 +02:00
'(-H --highlight-line)' { -H,--highlight-line} '[Highlight lines N through M]:<N\:M>...'
2020-08-08 07:49:53 +02:00
'(--file-name)' --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)' --diff-context'[Include N lines of context around added/removed/modified lines when using `--diff`]:<N> (lines):()'
'(--tabs)' --tabs'[Set the tab width to T spaces]:<T> (tab width):()'
'(--wrap)' --wrap= '[Specify the text-wrapping mode]:<when>:(auto never character)'
'(--terminal-width)' --terminal-width'[Explicitly set the width of the terminal instead of determining it automatically]:<width>'
'(-n --number)' { -n,--number} '[Show line numbers]'
'(--color)' --color= '[When to use colors]:<when>:(auto never always)'
'(--italic-text)' --italic-text= '[Use italics in output]:<when>:(always never)'
'(--decorations)' --decorations= '[When to show the decorations]:<when>:(auto never always)'
'(--paging)' --paging= '[Specify when to use the pager]:<when>:(auto never always)'
2020-08-08 08:31:39 +02:00
'(-m --map-syntax)' { -m+,--map-syntax= } '[Use the specified syntax for files matching the glob pattern]:<glob\:syntax>...'
2020-08-08 07:49:53 +02:00
'(--theme)' --theme= '[Set the color theme for syntax highlighting]:<theme>:->theme'
'(: --list-themes --list-languages -L)' --list-themes'[Display all supported highlighting themes]'
'(--style)' --style= '[Comma-separated list of style elements to display]:<components>:->style'
2020-08-08 08:31:39 +02:00
'(-r --line-range)' { -r+,--line-range= } '[Only print the lines from N to M]:<N\:M>...'
2020-08-08 07:49:53 +02:00
'(: --list-themes --list-languages -L)' { -L,--list-languages} '[Display all supported languages]'
'(: -)' { -h,--help} '[Print this help message]'
'(: -)' { -V,--version} '[Show version information]'
'*: :_files'
)
_arguments -S -s $args
case " $state " in
language)
local IFS = $'\n'
local -a languages
languages = ( $( bat --list-languages | awk -F':|,' '{ for (i = 1; i <= NF; ++i) printf("%s:%s\n", $i, $1) }' ) )
_describe 'language' languages
; ;
theme)
local IFS = $'\n'
local -a themes
themes = ( $( bat --list-themes | sort) )
_values 'theme' $themes
; ;
style)
_values -s , 'style' auto full plain changes header grid numbers snip
; ;
esac