From ed804a5c3ca9fbda28b36c030acebd1bbea41265 Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Wed, 5 Mar 2025 15:09:42 +1100 Subject: scheme: refactor schemes Schemes can have multiple flavours, and each flavour can have a light/dark mode --- completions/caelestia.fish | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'completions') diff --git a/completions/caelestia.fish b/completions/caelestia.fish index 2eac75c..b2a2916 100644 --- a/completions/caelestia.fish +++ b/completions/caelestia.fish @@ -51,8 +51,23 @@ set -l commands workspace workspacegroup movetoworkspace movetoworkspacegroup complete -c caelestia -n "$seen workspace-action && not $seen $commands" -a "$commands" # Scheme -set -l commands dynamic mocha macchiato frappe latte +set -q XDG_DATA_HOME && set -l data_dir $XDG_DATA_HOME || set -l data_dir $HOME/.local/share +set -l scheme_dir $data_dir/caelestia/scripts/data/schemes +set -l commands (basename -a (find $scheme_dir/ -mindepth 1 -maxdepth 1 -type d)) complete -c caelestia -n "$seen scheme && not $seen $commands" -a "$commands" +for scheme in $commands + set -l flavours (basename -a (find $scheme_dir/$scheme/ -mindepth 1 -maxdepth 1 -type d) 2> /dev/null) + set -l modes (basename -s .txt (find $scheme_dir/$scheme/ -mindepth 1 -maxdepth 1 -type f) 2> /dev/null) + if test -n "$modes" + complete -c caelestia -n "$seen scheme && $seen $scheme && not $seen $modes" -a "$modes" + else + complete -c caelestia -n "$seen scheme && $seen $scheme && not $seen $flavours" -a "$flavours" + for flavour in $flavours + set -l modes (basename -s .txt (find $scheme_dir/$scheme/$flavour/ -mindepth 1 -maxdepth 1 -type f)) + complete -c caelestia -n "$seen scheme && $seen $scheme && $seen $flavour && not $seen $modes" -a "$modes" + end + end +end # Record set -l not_seen "$seen record && not $has_opt -s h help" -- cgit v1.2.3-freya