summaryrefslogtreecommitdiffstats
path: root/conf.d
diff options
context:
space:
mode:
authorChristoph Schlosser <christoph@linux.com>2025-06-18 21:49:55 +0200
committerChristoph Schlosser <christoph@linux.com>2025-06-18 22:09:39 +0200
commitbd9768de0d5fe7ebcb7c78352735a9eefa300d52 (patch)
tree5661d165a65eb7b853fe64bfaef4163f8287b9bd /conf.d
parent887655467ff1aea63dbbd612d475677d15e63940 (diff)
downloadc-star-bd9768de0d5fe7ebcb7c78352735a9eefa300d52.tar.gz
Add async git
Diffstat (limited to 'conf.d')
-rw-r--r--conf.d/c_star.fish49
1 files 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