From 20642313e43bfb0000bcbd570ffa69eb3e50d07d Mon Sep 17 00:00:00 2001 From: Ankur Kotwal Date: Wed, 15 Mar 2023 11:55:49 +1100 Subject: [PATCH 1/6] Add dirty count to git dirty indicator --- conf.d/hydro.fish | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conf.d/hydro.fish b/conf.d/hydro.fish index 322f153..49bab86 100644 --- a/conf.d/hydro.fish +++ b/conf.d/hydro.fish @@ -75,8 +75,8 @@ function _hydro_prompt --on-event fish_prompt test -z \"\$$_hydro_git\" && set --universal $_hydro_git \"\$branch \" - ! command git diff-index --quiet HEAD 2>/dev/null || - count (command git ls-files --others --exclude-standard) >/dev/null && set info \"$hydro_symbol_git_dirty\" + command git status --porcelain | count | read dirty_count + test \"\$dirty_count\" -gt 0 && set info \"$hydro_symbol_git_dirty\$dirty_count\" for fetch in $hydro_fetch false command git rev-list --count --left-right @{upstream}...@ 2>/dev/null | From aa027cece69bbf071ac315bec4b773a3dba99d80 Mon Sep 17 00:00:00 2001 From: Ankur Kotwal Date: Wed, 15 Mar 2023 12:41:23 +1100 Subject: [PATCH 2/6] Only show dirty count if more than 1 file dirty --- conf.d/hydro.fish | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/conf.d/hydro.fish b/conf.d/hydro.fish index 49bab86..232d62d 100644 --- a/conf.d/hydro.fish +++ b/conf.d/hydro.fish @@ -76,7 +76,10 @@ function _hydro_prompt --on-event fish_prompt test -z \"\$$_hydro_git\" && set --universal $_hydro_git \"\$branch \" command git status --porcelain | count | read dirty_count - test \"\$dirty_count\" -gt 0 && set info \"$hydro_symbol_git_dirty\$dirty_count\" + if test -n \"\$dirty_count\" + test \"\$dirty_count\" -gt 0 && set dirty \"$hydro_symbol_git_dirty\" + test \"\$dirty_count\" -gt 1 && set dirty \"$hydro_symbol_git_dirty\$dirty_count\" + end for fetch in $hydro_fetch false command git rev-list --count --left-right @{upstream}...@ 2>/dev/null | @@ -92,7 +95,7 @@ function _hydro_prompt --on-event fish_prompt set upstream \" $hydro_symbol_git_ahead\$ahead $hydro_symbol_git_behind\$behind\" end - set --universal $_hydro_git \"\$branch\$info\$upstream \" + set --universal $_hydro_git \"\$branch\$dirty\$upstream \" test \$fetch = true && command git fetch --no-tags 2>/dev/null end From e90326d48b18ff0b8b25ef1bc5d0913b39d4c6fe Mon Sep 17 00:00:00 2001 From: Ankur Kotwal Date: Wed, 15 Mar 2023 15:47:03 +1100 Subject: [PATCH 3/6] Add feature flag for git dirty count --- README.md | 9 +++++---- conf.d/hydro.fish | 3 ++- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index a73a308..f3810d6 100644 --- a/README.md +++ b/README.md @@ -109,10 +109,11 @@ Modify variables using `set --universal` from the command line or `set --global` ### Flags -| Variable | Type | Description | Default | -| ----------------- | ------- | -------------------------------------------- | ------- | -| `hydro_fetch` | boolean | Fetch git remote in the background. | `false` | -| `hydro_multiline` | boolean | Display prompt character on a separate line. | `false` | +| Variable | Type | Description | Default | +| ------------------- | ------- | -------------------------------------------- | ------- | +| `hydro_dirty_count` | boolean | Display git dirty count. | `false` | +| `hydro_fetch` | boolean | Fetch git remote in the background. | `false` | +| `hydro_multiline` | boolean | Display prompt character on a separate line. | `false` | ### Misc diff --git a/conf.d/hydro.fish b/conf.d/hydro.fish index 232d62d..f6c2586 100644 --- a/conf.d/hydro.fish +++ b/conf.d/hydro.fish @@ -78,7 +78,7 @@ function _hydro_prompt --on-event fish_prompt command git status --porcelain | count | read dirty_count if test -n \"\$dirty_count\" test \"\$dirty_count\" -gt 0 && set dirty \"$hydro_symbol_git_dirty\" - test \"\$dirty_count\" -gt 1 && set dirty \"$hydro_symbol_git_dirty\$dirty_count\" + test \"$hydro_dirty_count\" = true && test \"\$dirty_count\" -gt 1 && set dirty \"$hydro_symbol_git_dirty\$dirty_count\" end for fetch in $hydro_fetch false @@ -136,5 +136,6 @@ set --query hydro_symbol_prompt || set --global hydro_symbol_prompt ❱ set --query hydro_symbol_git_dirty || set --global hydro_symbol_git_dirty • set --query hydro_symbol_git_ahead || set --global hydro_symbol_git_ahead ↑ set --query hydro_symbol_git_behind || set --global hydro_symbol_git_behind ↓ +set --query hydro_dirty_count || set --global hydro_dirty_count false set --query hydro_multiline || set --global hydro_multiline false set --query hydro_cmd_duration_threshold || set --global hydro_cmd_duration_threshold 1000 From d20315d0fbb8c424d1560dfe175dfb7db315fce0 Mon Sep 17 00:00:00 2001 From: Ankur Kotwal Date: Wed, 29 Mar 2023 23:43:27 +1100 Subject: [PATCH 4/6] Improve performance when dirty count isn't used --- conf.d/hydro.fish | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/conf.d/hydro.fish b/conf.d/hydro.fish index f6c2586..50ada57 100644 --- a/conf.d/hydro.fish +++ b/conf.d/hydro.fish @@ -75,10 +75,15 @@ function _hydro_prompt --on-event fish_prompt test -z \"\$$_hydro_git\" && set --universal $_hydro_git \"\$branch \" - command git status --porcelain | count | read dirty_count - if test -n \"\$dirty_count\" - test \"\$dirty_count\" -gt 0 && set dirty \"$hydro_symbol_git_dirty\" - test \"$hydro_dirty_count\" = true && test \"\$dirty_count\" -gt 1 && set dirty \"$hydro_symbol_git_dirty\$dirty_count\" + if test \"$hydro_dirty_count\" = true + command git status --porcelain | count | read dirty_count + if test -n \"\$dirty_count\" + test \"\$dirty_count\" -gt 0 && set dirty \"$hydro_symbol_git_dirty\" + test \"$hydro_dirty_count\" = true && test \"\$dirty_count\" -gt 1 && set dirty \"$hydro_symbol_git_dirty\$dirty_count\" + end + else + ! command git diff-index --quiet HEAD 2>/dev/null || + count (command git ls-files --others --exclude-standard) >/dev/null && set dirty \"$hydro_symbol_git_dirty\" end for fetch in $hydro_fetch false From a05d4e982203d11e26e0a1d3e437dc34891edd7b Mon Sep 17 00:00:00 2001 From: Ankur Kotwal Date: Fri, 31 Mar 2023 22:34:43 +1100 Subject: [PATCH 5/6] Simplify dirty_count code flow --- conf.d/hydro.fish | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/conf.d/hydro.fish b/conf.d/hydro.fish index 50ada57..bab44ee 100644 --- a/conf.d/hydro.fish +++ b/conf.d/hydro.fish @@ -75,15 +75,15 @@ function _hydro_prompt --on-event fish_prompt test -z \"\$$_hydro_git\" && set --universal $_hydro_git \"\$branch \" - if test \"$hydro_dirty_count\" = true - command git status --porcelain | count | read dirty_count - if test -n \"\$dirty_count\" - test \"\$dirty_count\" -gt 0 && set dirty \"$hydro_symbol_git_dirty\" - test \"$hydro_dirty_count\" = true && test \"\$dirty_count\" -gt 1 && set dirty \"$hydro_symbol_git_dirty\$dirty_count\" - end - else + if test \"$hydro_dirty_count\" = false ! command git diff-index --quiet HEAD 2>/dev/null || count (command git ls-files --others --exclude-standard) >/dev/null && set dirty \"$hydro_symbol_git_dirty\" + else + command git status --porcelain | count | read dirty_count + if test \"\$dirty_count\" -gt 0 + set dirty \"$hydro_symbol_git_dirty\" + test \"$hydro_dirty_count\" = true && test \"\$dirty_count\" -gt 1 && set dirty \"\$dirty\$dirty_count\" + end end for fetch in $hydro_fetch false From 795e771c9bf90cf205db6c4d6ecbbaa18c1169a1 Mon Sep 17 00:00:00 2001 From: Ankur Kotwal Date: Fri, 31 Mar 2023 22:40:25 +1100 Subject: [PATCH 6/6] Fix error when dirty_count is 0 and show dirty count is enabled --- conf.d/hydro.fish | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf.d/hydro.fish b/conf.d/hydro.fish index bab44ee..5999fdc 100644 --- a/conf.d/hydro.fish +++ b/conf.d/hydro.fish @@ -80,7 +80,7 @@ function _hydro_prompt --on-event fish_prompt count (command git ls-files --others --exclude-standard) >/dev/null && set dirty \"$hydro_symbol_git_dirty\" else command git status --porcelain | count | read dirty_count - if test \"\$dirty_count\" -gt 0 + if test -n \"\$dirty_count\" && test \"\$dirty_count\" -gt 0 set dirty \"$hydro_symbol_git_dirty\" test \"$hydro_dirty_count\" = true && test \"\$dirty_count\" -gt 1 && set dirty \"\$dirty\$dirty_count\" end