diff --git a/CHANGELOG.md b/CHANGELOG.md index 89789c54..81f36a38 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -43,6 +43,7 @@ - Fixed bug caused by using `--plain` and `--terminal-width=N` flags simultaneously, see #3529 (@H4k1l) - Fixed syntax tests path, see #3610 (@foxfromworld) - Fix zsh tab completion word-splitting language names containing spaces (e.g. `HTML (Jinja2)`, `Apache Conf`), see #3693 (@YoshKoz) +- Fix zsh tab completion offering invalid `-l` arguments (file globs, paths, hidden filenames) sourced from the second column of `--list-languages`. Closes #3735, see #3737 (@truffle-dev) ## Other - Use git version of cross. See #3533 (@OctopusET) diff --git a/assets/completions/bat.zsh.in b/assets/completions/bat.zsh.in index 4fddcbb4..efdb185e 100644 --- a/assets/completions/bat.zsh.in +++ b/assets/completions/bat.zsh.in @@ -90,7 +90,12 @@ _{{PROJECT_EXECUTABLE}}_main() { languages) local IFS=$'\n' local -a languages - languages=( ${(f)"$({{PROJECT_EXECUTABLE}} --color=never --decorations=never --list-languages | awk -F':|,' '{ for (i = 1; i <= NF; ++i) printf("%s:%s\n", $i, $1) }')"} ) + # `--list-languages` emits one `name:matchers` line per language, + # which `_describe` parses as `value:description`. Only the + # language name is offered as the completion value; the matchers + # show up as the menu description. See + # https://github.com/sharkdp/bat/issues/3735. + languages=( ${(f)"$({{PROJECT_EXECUTABLE}} --color=never --decorations=never --list-languages)"} ) _describe 'language' languages && ret=0 ;;