summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShav Kinderlehrer <[email protected]>2023-08-10 11:50:57 -0400
committerShav Kinderlehrer <[email protected]>2023-08-10 11:50:57 -0400
commit49768a38a7662dab13f2e6efa9561fbdcb06d83c (patch)
tree31f3149d749a731a45afd11894bf0b65bdbb7573
parent3ba25af848e9789a9a631590d9a251902ee18440 (diff)
downloadprim-49768a38a7662dab13f2e6efa9561fbdcb06d83c.tar.gz
prim-49768a38a7662dab13f2e6efa9561fbdcb06d83c.zip
Add NO_COLOR supportv0.1.0
-rw-r--r--hook.zsh2
-rw-r--r--source/app.d8
-rw-r--r--source/opt.d1
-rw-r--r--source/prompt/ps1.d2
-rw-r--r--source/style/package.d7
5 files changed, 16 insertions, 4 deletions
diff --git a/hook.zsh b/hook.zsh
index 9715796..b608185 100644
--- a/hook.zsh
+++ b/hook.zsh
@@ -1,5 +1,5 @@
prompt_precmd() {
- export PS1=$'`prim --ps1 --col $COLUMNS --row $LINES --status $?`'
+ export PS1=$'`prim --ps1 --col $COLUMNS --row $LINES --status $? --pchar ❯`'
export RPS1=$'`prim --rps1 --col $COLUMNS --row $LINES --status $?`'
}
diff --git a/source/app.d b/source/app.d
index 68bf114..4669b5d 100644
--- a/source/app.d
+++ b/source/app.d
@@ -14,6 +14,7 @@ Opts defaultOpts() {
Opts opts;
opts.pathlen = 3;
+ opts.pchar = "|>";
return opts;
}
@@ -38,10 +39,13 @@ void main(string[] argv) {
"status", "previous command exit code", &opts.status,
"pathlen", "set length of displayed path", &opts.pathlen,
+ "pchar", "override default prompt character", &opts.pchar,
);
if (args.helpWanted) {
- defaultGetoptPrinter("prim", args.options);
+ defaultGetoptPrinter("prim prompt:\n", args.options);
+ writeln("\nEnvironment:\n",
+ "\tNO_COLOR\tsee https://no-color.org");
}
dorun(opts);
@@ -53,7 +57,7 @@ void dorun(Opts opts) {
}
if (opts.preexec) {
- // preexec(opts).write();
+ preexec(opts).write();
}
if (opts.rps1) {
diff --git a/source/opt.d b/source/opt.d
index 3c8c706..2685968 100644
--- a/source/opt.d
+++ b/source/opt.d
@@ -6,6 +6,7 @@ struct Opts {
bool preexec;
int pathlen;
+ string pchar;
int col;
int row;
diff --git a/source/prompt/ps1.d b/source/prompt/ps1.d
index ded5c2d..ded6d94 100644
--- a/source/prompt/ps1.d
+++ b/source/prompt/ps1.d
@@ -21,6 +21,6 @@ string ps1(Opts opt) {
ps ~= "\n";
ps ~= ("'-(" ~ to!string(opt.status) ~ ") ").set(Color.black); // prompt char
- ps ~= "|> ".set(Font.bold).set(opt.status == 0 ? Color.green : Color.red);
+ ps ~= (opt.pchar ~ " ").set(Font.bold).set(opt.status == 0 ? Color.green : Color.red);
return ps;
}
diff --git a/source/style/package.d b/source/style/package.d
index 2e5ff7f..1c55a99 100644
--- a/source/style/package.d
+++ b/source/style/package.d
@@ -1,15 +1,22 @@
module style;
import std.conv;
+import core.stdc.stdlib : getenv;
import style.color;
string set(string s, int code) {
+ if (getenv("NO_COLOR"))
+ return s;
+
return ("%{\x1b[" ~ to!string(code) ~ "m%}") ~ s ~ (
"%{\x1b[" ~ to!string((Color.reset + 0)) ~ "m%}");
}
string set(string s, int code, bool close) {
+ if (getenv("NO_COLOR"))
+ return s;
+
return ("%{\x1b[" ~ to!string(code) ~ "m%}") ~ s ~ (close ? (
"%{\x1b[" ~ to!string((Color.reset + 0)) ~ "m%}") : "");
}