Make git-prompt also work in a bash promtp

This commit is contained in:
Kenneth Benzie 2022-11-03 21:36:12 +00:00
parent 5a33d2b5ac
commit 9618713542

View File

@ -21,6 +21,11 @@
} }
#endif #endif
#define color8(CODE) "\e[3" #CODE "m"
#define color256(CODE) "\e[38;5;" #CODE "m"
#define bold "\e[1m"
#define reset "\e[0m"
typedef struct process { typedef struct process {
pid_t pid; pid_t pid;
FILE* out; FILE* out;
@ -104,7 +109,7 @@ int main() {
} }
char* branch = trim(branch_buf); char* branch = trim(branch_buf);
char prompt[1024] = {}; char prompt[1024] = {};
append(prompt, 3, " %{%F{66}%}", branch, "%{%f%}"); append(prompt, 3, " " color256(66), branch, reset);
// get the upstream remote if one exists // get the upstream remote if one exists
char command[1024] = {}; char command[1024] = {};
@ -178,22 +183,22 @@ int main() {
if (indexed || modified || deleted || unmerged || untracked) { // modified if (indexed || modified || deleted || unmerged || untracked) { // modified
char int_buf[32]; char int_buf[32];
if (indexed) { if (indexed) {
append(prompt, 3, "%{%F{2}%}*", inttostr(int_buf, indexed), "%{%f%}"); append(prompt, 3, color8(2) "*", inttostr(int_buf, indexed), reset);
} }
if (modified) { if (modified) {
append(prompt, 3, "%{%F{1}%}+", inttostr(int_buf, modified), "%{%f%}"); append(prompt, 3, color8(1) "+", inttostr(int_buf, modified), reset);
} }
if (deleted) { if (deleted) {
append(prompt, 3, "%{%F{1}%}-", inttostr(int_buf, deleted), "%{%f%}"); append(prompt, 3, color8(1) "-", inttostr(int_buf, deleted), reset);
} }
if (unmerged) { if (unmerged) {
append(prompt, 3, "%{%B%F{1}%}×", inttostr(int_buf, unmerged), "%{%f%b%}"); append(prompt, 3, bold color8(1) "×", inttostr(int_buf, unmerged), reset);
} }
if (untracked) { if (untracked) {
append(prompt, 1, "%{%F{1}%}%{%f%}"); append(prompt, 1, color8(1) "" reset);
} }
} else { // clean } else { // clean
append(prompt, 1, "%{%B%F{2}%}%{%f%b%}"); append(prompt, 1, bold color8(2) "" reset);
} }
// print the prompt // print the prompt