diff --git a/src/env_dispatch.rs b/src/env_dispatch.rs index f8915433d..080e254de 100644 --- a/src/env_dispatch.rs +++ b/src/env_dispatch.rs @@ -16,6 +16,7 @@ use crate::terminal::use_terminfo; use crate::tty_handoff::xtversion; use crate::wchar::prelude::*; +use crate::wcstringutil::string_prefixes_string; use crate::wutil::fish_wcstoi; use crate::{function, terminal}; use std::collections::HashMap; @@ -214,6 +215,13 @@ pub fn env_dispatch_var_change(key: &wstr, vars: &EnvStack) { if let Some(dispatch_table) = Lazy::get(&VAR_DISPATCH_TABLE) { dispatch_table.dispatch(key, vars); } + + if string_prefixes_string(L!("fish_color_"), key) + // TODO Don't re-exec prompt when only pager color changed. + || string_prefixes_string(L!("fish_pager_color_"), key) + { + reader_schedule_prompt_repaint(); + } } fn handle_fish_term_change(vars: &EnvStack) { diff --git a/tests/checks/tmux-autosuggestion-multiline-resizing-prompt.fish b/tests/checks/tmux-autosuggestion-multiline-resizing-prompt.fish index 3872c2275..abdc650b3 100644 --- a/tests/checks/tmux-autosuggestion-multiline-resizing-prompt.fish +++ b/tests/checks/tmux-autosuggestion-multiline-resizing-prompt.fish @@ -25,13 +25,13 @@ tmux-sleep isolated-tmux send-keys i tmux-sleep isolated-tmux capture-pane -p | string replace -r ^ ^ -# CHECK: ^1.1 # CHECK: ^2.1 -# CHECK: ^2.2 if true +# CHECK: ^2.2 +# CHECK: ^3.1 +# CHECK: ^3.2 +# CHECK: ^3.3 if true # CHECK: ^ echo hello1 # CHECK: ^ echo hello2 # CHECK: ^ echo hello3 # CHECK: ^ echo hello4 -# CHECK: ^ echo hello5 -# CHECK: ^ echo hello6 -# CHECK: ^ echo hello7… +# CHECK: ^ echo hello5…