From dcacb1de428b6f1a21fc97dd84becc3e2701f652 Mon Sep 17 00:00:00 2001 From: "Kenneth Benzie (Benie)" Date: Fri, 3 May 2024 22:39:11 +0100 Subject: [PATCH] Add .build-var zle widget Press Ctrl-B to fuzzy find all configuration CMake variables for the current build directory. Once a variable is selected, rewrite the command-line to set the selected CMake variable. --- build/build.plugin.zsh | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) 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