From bd9768de0d5fe7ebcb7c78352735a9eefa300d52 Mon Sep 17 00:00:00 2001 From: Christoph Schlosser Date: Wed, 18 Jun 2025 21:49:55 +0200 Subject: Add async git --- conf.d/c_star.fish | 49 +++++++++++++++++++++++++++++++++---------------- 1 file changed, 33 insertions(+), 16 deletions(-) diff --git a/conf.d/c_star.fish b/conf.d/c_star.fish index 7d42ce6..1978aa9 100644 --- a/conf.d/c_star.fish +++ b/conf.d/c_star.fish @@ -1,16 +1,20 @@ set -q c_star_date_format || set -g c_star_date_format "%Y-%m-%dT%H:%M:%S%z" -set -q c_star_user_bg || set -g c_star_user_bg a9b7c6 -set -q c_star_user_fg || set -g c_star_user_fg 333333 -set -q c_star_pwd_bg || set -g c_star_pwd_bg $c_star_user_fg -set -q c_star_pwd_fg || set -g c_star_pwd_fg $c_star_user_bg -set -q c_star_git_bg || set -g c_star_git_bg $c_star_user_bg -set -q c_star_git_fg || set -g c_star_git_fg $c_star_user_fg -set -q c_star_user_marker_default_bg || set -g c_star_user_marker_default_bg $c_star_user_fg -set -q c_star_user_marker_fg || set -g c_star_user_marker_fg $c_star_user_bg -set -q c_star_datetime_bg || set -g c_star_datetime_bg $c_star_user_fg -set -q c_star_datetime_fg || set -g c_star_datetime_fg $c_star_user_bg -set -q c_star_command_time_bg || set -g c_star_command_time_bg $c_star_user_bg -set -q c_star_command_time_fg || set -g c_star_command_time_fg $c_star_user_fg +set -g c_star_default_bg 333333 +set -g c_star_default_fg a9b7c6 +set -q c_star_user_bg || set -g c_star_user_bg $c_star_default_fg +set -q c_star_user_fg || set -g c_star_user_fg $c_star_default_bg +set -q c_star_pwd_bg || set -g c_star_pwd_bg $c_star_default_bg +set -q c_star_pwd_fg || set -g c_star_pwd_fg $c_star_default_fg +set -q c_star_git_bg || set -g c_star_git_bg $c_star_default_fg +set -q c_star_git_fg || set -g c_star_git_fg $c_star_default_bg +set -q c_star_user_marker_default_bg || set -g c_star_user_marker_default_bg $c_star_default_bg +set -q c_star_user_marker_fg || set -g c_star_user_marker_fg $c_star_default_fg +set -q c_star_datetime_bg || set -g c_star_datetime_bg $c_star_default_bg +set -q c_star_datetime_fg || set -g c_star_datetime_fg $c_star_default_fg +set -q c_star_command_time_bg || set -g c_star_command_time_bg $c_star_default_fg +set -q c_star_command_time_fg || set -g c_star_command_time_fg $c_star_default_bg + +set -g _c_star_git_async _c_star_git_async_$fish_pid function c_star_colorize set -l bg $argv[3] @@ -18,7 +22,7 @@ function c_star_colorize set -g "$argv[1]" "$(set_color -b $bg $fg) $argv[2] $(set_color normal)" end -# TODO: Clear this after enter? +# TODO: Clear this after pressing enter? function c_star_command_time --on-event fish_postexec --on-variable c_star_command_time_bg --on-variable c_star_command_time_fg c_star_colorize c_star_command_time $CMD_DURATION'ms' $c_star_command_time_bg $c_star_command_time_fg end @@ -27,14 +31,23 @@ function c_star_datetime --on-event fish_prompt --on-event fish_postexec --on-va c_star_colorize c_star_datetime (date "+$c_star_date_format") $c_star_datetime_bg $c_star_datetime_fg end -function c_star_git --on-event fish_prompt --on-variable PWD --on-variable c_star_git_bg --on-variable c_star_git_fg - set -lx __fish_git_prompt_show_informative_status 1 - set -l git_status (fish_git_prompt) +function c_star_git_query_async --on-event fish_prompt --on-variable PWD --on-variable c_star_git_bg --on-variable c_star_git_fg + # TODO cache the current git repo to minimize calls + set -Ue $_c_star_git_async + fish --private --command "set -x __fish_git_prompt_show_informative_status 1 && \ + set -U $_c_star_git_async (fish_git_prompt '%s') && \ + set -q $_c_star_git_async || set -Ue $_c_star_git_async $git_status + "& +end + +function c_star_git --on-variable $_c_star_git_async + set git_status $$_c_star_git_async if test -n "$git_status" c_star_colorize c_star_git $git_status $c_star_git_bg $c_star_git_fg else set -ge c_star_git end + commandline --function repaint end function c_star_user --on-event fish_prompt --on-variable c_star_user_bg --on-variable c_star_user_fg --on-variable SSH_CONNECTION @@ -59,4 +72,8 @@ end function c_star_pwd --on-variable PWD --on-event fish_prompt --on-variable c_star_pwd_bg --on-variable c_star_pwd_fg c_star_colorize c_star_pwd (prompt_pwd) $c_star_pwd_bg $c_star_pwd_fg +end + +function c_star_cleanup --on-event fish_exit + set -Ue $_c_star_git_async end \ No newline at end of file -- cgit v1.2.3