diff --git a/build/build.plugin.zsh b/build/build.plugin.zsh index 4a7b673..df7ec2f 100644 --- a/build/build.plugin.zsh +++ b/build/build.plugin.zsh @@ -207,3 +207,23 @@ build-debug() { local target=$1; shift 1 eval build $target && debug ~build/bin/$target "$@" } + +# Fuzzy find CMake variables, select one to set the variable via a command. +.build-var() { + if [[ ! -n $build_dir ]]; then + build-dir + fi + local var=$( + cat $build_dir/CMakeCache.txt | + grep --color=never -Ex '^\w+:\w+=.*$' | + fzf --layout=reverse --info=hidden --border=rounded \ + --cycle --height=50% + ) + if [[ -n "$var" ]]; then + BUFFER="cmake -B\$build_dir -D$var" + zle end-of-line + fi + zle reset-prompt +} +zle -N .build-var +bindkey '^B' .build-var