From 3214ee4ff4f214ab6619d3fa06ff19dc5ad6da30 Mon Sep 17 00:00:00 2001 From: Malte Zilinski Date: Mon, 13 Apr 2026 19:23:57 +0200 Subject: [PATCH] fix: pass fish_key_bindings to prompt subshell MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The async prompt subshell receives fish_bind_mode but not fish_key_bindings. When fish_key_bindings is set globally (not universally) in the parent shell, it is unset inside the subshell, causing _tide_item_character to fall through to the vi-mode branch and render tide_character_vi_icon_default instead of tide_character_icon — even though the user is on default key bindings. Pass fish_key_bindings alongside fish_bind_mode so the subshell matches the parent's key-binding state. --- functions/fish_prompt.fish | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/functions/fish_prompt.fish b/functions/fish_prompt.fish index 994513d3..ae627b3c 100644 --- a/functions/fish_prompt.fish +++ b/functions/fish_prompt.fish @@ -41,7 +41,7 @@ function fish_prompt jobs -q && jobs -p | count | read -lx _tide_jobs $fish_path -c \"set _tide_pipestatus \$_tide_pipestatus set _tide_parent_dirs \$_tide_parent_dirs -PATH=\$(string escape \"\$PATH\") CMD_DURATION=\$CMD_DURATION fish_bind_mode=\$fish_bind_mode set $prompt_var (_tide_2_line_prompt)\" & +PATH=\$(string escape \"\$PATH\") CMD_DURATION=\$CMD_DURATION fish_bind_mode=\$fish_bind_mode fish_key_bindings=\$fish_key_bindings set $prompt_var (_tide_2_line_prompt)\" & builtin disown command kill \$_tide_last_pid 2>/dev/null @@ -69,7 +69,7 @@ function fish_prompt jobs -q && jobs -p | count | read -lx _tide_jobs $fish_path -c \"set _tide_pipestatus \$_tide_pipestatus set _tide_parent_dirs \$_tide_parent_dirs -PATH=\$(string escape \"\$PATH\") CMD_DURATION=\$CMD_DURATION fish_bind_mode=\$fish_bind_mode set $prompt_var (_tide_2_line_prompt)\" & +PATH=\$(string escape \"\$PATH\") CMD_DURATION=\$CMD_DURATION fish_bind_mode=\$fish_bind_mode fish_key_bindings=\$fish_key_bindings set $prompt_var (_tide_2_line_prompt)\" & builtin disown command kill \$_tide_last_pid 2>/dev/null @@ -101,7 +101,7 @@ function fish_prompt jobs -q && jobs -p | count | read -lx _tide_jobs $fish_path -c \"set _tide_pipestatus \$_tide_pipestatus set _tide_parent_dirs \$_tide_parent_dirs -PATH=\$(string escape \"\$PATH\") CMD_DURATION=\$CMD_DURATION fish_bind_mode=\$fish_bind_mode set $prompt_var (_tide_1_line_prompt)\" & +PATH=\$(string escape \"\$PATH\") CMD_DURATION=\$CMD_DURATION fish_bind_mode=\$fish_bind_mode fish_key_bindings=\$fish_key_bindings set $prompt_var (_tide_1_line_prompt)\" & builtin disown command kill \$_tide_last_pid 2>/dev/null @@ -128,7 +128,7 @@ function fish_prompt jobs -q && jobs -p | count | read -lx _tide_jobs $fish_path -c \"set _tide_pipestatus \$_tide_pipestatus set _tide_parent_dirs \$_tide_parent_dirs -PATH=\$(string escape \"\$PATH\") CMD_DURATION=\$CMD_DURATION fish_bind_mode=\$fish_bind_mode set $prompt_var (_tide_1_line_prompt)\" & +PATH=\$(string escape \"\$PATH\") CMD_DURATION=\$CMD_DURATION fish_bind_mode=\$fish_bind_mode fish_key_bindings=\$fish_key_bindings set $prompt_var (_tide_1_line_prompt)\" & builtin disown command kill \$_tide_last_pid 2>/dev/null