From 6273b9420bdc21455119873bd93b4e9191be3ddb Mon Sep 17 00:00:00 2001 From: Johannes Altmanninger Date: Sat, 27 Dec 2025 12:42:25 +0100 Subject: [PATCH] fish_config theme choose: capture theme by copy We don't listen for changes to the theme file, so this seems more appropriate and more robust. --- share/functions/fish_config.fish | 12 +++++------- tests/checks/fish_config.fish | 1 - 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/share/functions/fish_config.fish b/share/functions/fish_config.fish index 71e3b4e33..ba0d1e482 100644 --- a/share/functions/fish_config.fish +++ b/share/functions/fish_config.fish @@ -285,19 +285,19 @@ function __fish_config_theme_choose return 0 end + set -l color_theme + __fish_config_theme_canonicalize + set -l theme_data (type -q cat && __fish_theme_cat $theme_name) + or return function __fish_apply_theme (test $cmd != save && printf %s\n --on-variable fish_terminal_color_theme) \ - -V theme_name -V desired_color_theme -V scope + -V theme_name -V color_theme -V theme_data -V desired_color_theme -V scope if set -q __fish_color_theme[1] set desired_color_theme $__fish_color_theme end - set -l color_theme - __fish_config_theme_canonicalize if set -q color_theme[1] && not set -q desired_color_theme[1] set desired_color_theme $color_theme end - set -l theme_data (__fish_theme_cat $theme_name) - or return set -l override (test -n "$__fish_override" && builtin echo true || builtin echo false) set -l theme_is_color_theme_aware false set -l color_themes dark light unknown @@ -371,8 +371,6 @@ function __fish_config_theme_choose end end end - set -l color_theme - __fish_config_theme_canonicalize if set -q desired_color_theme[1] || set -q color_theme[1] || test -n "$fish_terminal_color_theme" || test $cmd = save if not set -q _flag_no_override[1] __fish_override=true __fish_apply_theme diff --git a/tests/checks/fish_config.fish b/tests/checks/fish_config.fish index 4b2b67c75..df925d4f0 100644 --- a/tests/checks/fish_config.fish +++ b/tests/checks/fish_config.fish @@ -105,7 +105,6 @@ type fish_mode_prompt # CHECK: end fish_config theme choose non-existent-theme1 -__fish_apply_theme # CHECKERR: No such theme: non-existent-theme1 # CHECKERR: Searched {{/\S* (/\S*|and `status list-files themes`)}}