summary refs log tree commit diff
diff options
context:
space:
mode:
authorKlemens Nanni <klemens@posteo.de>2021-07-17 20:04:15 +0000
committerJune McEnroe <june@causal.agency>2021-07-20 12:03:46 -0400
commitf8e3414af06df95b18b8e29caa74a7eea3022c92 (patch)
tree3924d2b8519cabb3d43c2114e243ba5b889ffa2b
parentchat.tmux.conf: Fix base-index setting (diff)
downloadcatgirl-f8e3414af06df95b18b8e29caa74a7eea3022c92.tar.gz
catgirl-f8e3414af06df95b18b8e29caa74a7eea3022c92.zip
Add -q/quiet option to raise default message visibility threshold
Silencing all windows with `M-+' (across multiple catgirl instances)
can be cumbersome, so provide an option to hide events, JOIN/PART noise,
etc. by default (each window's threshold will persist across load/save
cycles, i.e. when using the `-s/save' option).

Started out as `-v | visibility = threshold' to set a specific level,
the idea of a simpler toggle comes from june, who also squashed other
bugs (as usual).
-rw-r--r--catgirl.19
-rw-r--r--chat.c2
-rw-r--r--chat.h1
-rw-r--r--ui.c4
4 files changed, 13 insertions, 3 deletions
diff --git a/catgirl.1 b/catgirl.1
index 1b74b6c..bb425cc 100644
--- a/catgirl.1
+++ b/catgirl.1
@@ -1,4 +1,4 @@
-.Dd July  2, 2021
+.Dd July 20, 2021
 .Dt CATGIRL 1
 .Os
 .
@@ -8,7 +8,7 @@
 .
 .Sh SYNOPSIS
 .Nm
-.Op Fl KRelv
+.Op Fl KRelqv
 .Op Fl C Ar copy
 .Op Fl H Ar hash
 .Op Fl I Ar highlight
@@ -323,6 +323,11 @@ Connect to
 .Ar port .
 The default port is 6697.
 .
+.It Fl q | Cm quiet
+Raise the default message visibility threshold
+for new windows,
+hiding general events.
+.
 .It Fl r Ar real | Cm real No = Ar real
 Set realname to
 .Ar real .
diff --git a/chat.c b/chat.c
index 106e05f..3141052 100644
--- a/chat.c
+++ b/chat.c
@@ -257,6 +257,7 @@ int main(int argc, char *argv[]) {
 		{ .val = 'n', .name = "nick", required_argument },
 		{ .val = 'o', .name = "print-chain", no_argument },
 		{ .val = 'p', .name = "port", required_argument },
+		{ .val = 'q', .name = "quiet", no_argument },
 		{ .val = 'r', .name = "real", required_argument },
 		{ .val = 's', .name = "save", required_argument },
 		{ .val = 't', .name = "trust", required_argument },
@@ -300,6 +301,7 @@ int main(int argc, char *argv[]) {
 			break; case 'n': nick = optarg;
 			break; case 'o': printCert = true;
 			break; case 'p': port = optarg;
+			break; case 'q': uiThreshold = Warm;
 			break; case 'r': real = optarg;
 			break; case 's': save = optarg;
 			break; case 't': trust = optarg;
diff --git a/chat.h b/chat.h
index c247dd7..dd9c823 100644
--- a/chat.h
+++ b/chat.h
@@ -292,6 +292,7 @@ void commandCompleteAdd(void);
 
 enum Heat { Ice, Cold, Warm, Hot };
 enum { TimeCap = 64 };
+extern enum Heat uiThreshold;
 extern struct Time {
 	bool enable;
 	const char *format;
diff --git a/ui.c b/ui.c
index da06342..3604057 100644
--- a/ui.c
+++ b/ui.c
@@ -127,6 +127,8 @@ static struct Window *windowRemove(uint num) {
 	return window;
 }
 
+enum Heat uiThreshold = Cold;
+
 static uint windowFor(uint id) {
 	for (uint num = 0; num < windows.len; ++num) {
 		if (windows.ptrs[num]->id == id) return num;
@@ -136,7 +138,7 @@ static uint windowFor(uint id) {
 	window->id = id;
 	window->mark = true;
 	window->time = uiTime.enable;
-	window->thresh = Cold;
+	window->thresh = uiThreshold;
 	window->buffer = bufferAlloc();
 	completeAdd(None, idNames[id], idColors[id]);
 	return windowPush(window);