diff options
| author | Norbert Lange <norbert.lange@andritz.com> | 2022-07-19 11:39:59 +0200 |
|---|---|---|
| committer | Norbert Lange <norbert.lange@andritz.com> | 2022-07-19 13:59:06 +0200 |
| commit | 061f09cd53620f71e5471248e4fe5f8935879f45 (patch) | |
| tree | 8ca9007fc4438e8e5b2c80291d920d757bc44e75 /src/_cmake | |
| parent | Merge pull request #880 from zsh-users/update-nano (diff) | |
| download | zsh-completions-061f09cd53620f71e5471248e4fe5f8935879f45.tar zsh-completions-061f09cd53620f71e5471248e4fe5f8935879f45.tar.gz zsh-completions-061f09cd53620f71e5471248e4fe5f8935879f45.tar.bz2 zsh-completions-061f09cd53620f71e5471248e4fe5f8935879f45.tar.lz zsh-completions-061f09cd53620f71e5471248e4fe5f8935879f45.tar.xz zsh-completions-061f09cd53620f71e5471248e4fe5f8935879f45.tar.zst zsh-completions-061f09cd53620f71e5471248e4fe5f8935879f45.zip | |
_cmake: fix cmake presets for real
support presets without descriptions, and modify the commandline
to add --list-presets at the end.
Improve how cmake presets are listed, should be more robust
in regards to quoting.
Diffstat (limited to 'src/_cmake')
| -rw-r--r-- | src/_cmake | 13 |
1 files changed, 6 insertions, 7 deletions
@@ -141,14 +141,13 @@ _cmake_generator_options() { # -------------- (( $+functions[_cmake_presets] )) || _cmake_presets() { - # TODO: Problems with quotes need eval - # would need a way to exec the array - local -a list_presets; + local invoke; invoke=(${(Q)words}) + invoke[$CURRENT]=() + # TODO: remove all arguments -* except -S - if [[ -e CMakePresets.json ]]; then - # some old projects uses BOM in json file. strip UTF-8 BOM and then parse JSON - list_presets=("${(@f)$(sed '1s/^\xEF\xBB\xBF//' < CMakePresets.json | perl -0777 -MJSON::PP -nE 'do{$k=$_;($e=$k)=~s/:/\\:/g; printf "$_->{name}:$_->{description}\n"} for @{decode_json($_)->{configurePresets}}' 2>/dev/null)}") - fi + local list_presets; list_presets=(${(f)"$(${invoke} --list-presets 2>/dev/null | + sed -n -e 's,^[[:space:]]*"\([^"]*\)"[[:space:]]*-[[:space:]]*\(.*\),\1:\2,p' \ + -e 's,^[[:space:]]*"\([^"]*\)"[[:space:]]*$,\1,p')"}) _describe 'presets' list_presets } |
