summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--chat.c7
-rw-r--r--ui.c34
2 files changed, 26 insertions, 15 deletions
diff --git a/chat.c b/chat.c
index dc45312..ab0d4d7 100644
--- a/chat.c
+++ b/chat.c
@@ -80,8 +80,11 @@ int main(int argc, char *argv[]) {
 	};
 	for (;;) {
 		int nfds = poll(fds, 2, -1);
-		if (nfds < 0 && errno == EINTR) continue;
-		if (nfds < 0) err(EX_IOERR, "poll");
+		if (nfds < 0) {
+			if (errno != EINTR) err(EX_IOERR, "poll");
+			fds[0].revents = POLLIN;
+			fds[1].revents = 0;
+		}
 
 		if (fds[0].revents) uiRead();
 		if (fds[1].revents) clientRead();
diff --git a/ui.c b/ui.c
index a8e40d9..c8f53ff 100644
--- a/ui.c
+++ b/ui.c
@@ -71,6 +71,12 @@ void uiInit(void) {
 	ui.input = newpad(2, INPUT_COLS);
 	mvwhline(ui.input, 0, 0, ACS_HLINE, INPUT_COLS);
 	wmove(ui.input, 1, 0);
+	nodelay(ui.input, true);
+}
+
+static void uiResize(void) {
+	wresize(ui.chat, CHAT_LINES, COLS);
+	wmove(ui.chat, CHAT_LINES - 1, COLS - 1);
 }
 
 void uiHide(void) {
@@ -194,19 +200,21 @@ void uiRead(void) {
 	static size_t len;
 
 	wint_t ch;
-	wget_wch(ui.input, &ch);
-	switch (ch) {
-		break; case '\b': case '\177': {
-			if (len) len--;
-		}
-		break; case '\n': {
-			if (!len) break;
-			buf[len] = '\0';
-			input(buf);
-			len = 0;
-		}
-		break; default: {
-			if (iswprint(ch)) buf[len++] = ch;
+	while (wget_wch(ui.input, &ch) != ERR) {
+		switch (ch) {
+			break; case KEY_RESIZE: uiResize();
+			break; case '\b': case '\177': {
+				if (len) len--;
+			}
+			break; case '\n': {
+				if (!len) break;
+				buf[len] = '\0';
+				input(buf);
+				len = 0;
+			}
+			break; default: {
+				if (iswprint(ch)) buf[len++] = ch;
+			}
 		}
 	}
 	wmove(ui.input, 1, 0);
nd also this one sucks. 2021-09-21Use Z_FILTERED strategyJune McEnroe 2021-09-21Recalculate various lengths only as neededJune McEnroe This actually speeds things up quite a bit, saving roughly a second on a big PNG screenshot. Almost all the remaining time is spent in deflate. 2021-09-21Rewrite pngo, add explicit optionsJune McEnroe Interesting to see how my code habits have changed. 2021-09-16Fix /* **/ comment matchingJune McEnroe 2021-09-15Remove typer, add downgrade to READMEJune McEnroe 2021-09-15Set bot mode on downgradeJune McEnroe 2021-09-15Enter capsicum in downgradeJune McEnroe 2021-09-15Factor out common parts of downgrade messagesJune McEnroe Also bump the message cap to 1024 because that is ostensibly useful for replying to older messages. 2021-09-14Add downgrade IRC botJune McEnroe 2021-09-14Sort by title if authors matchJune McEnroe There are probably better things to sort by but title definitely always exists. 2021-09-13Swap-remove tags as they're foundJune McEnroe This makes it even faster. From ~1s on a sqlite3.c amalgamation to ~0.85s. 2021-09-12Replace htagml regex with strncmpJune McEnroe Since ctags only ever produces regular expressions of the form /^re$/ or /^re/ with no other special characters, instead unescape the pattern and simply use strncmp. Running on a sqlite3.c amalgamation, the regex version takes ~37s while the strncmp version takes ~1s, producing identical output. Big win! 2021-09-11Also defer printing comment for lone close-parensJune McEnroe 2021-09-10Publish "git-comment"June McEnroe 2021-09-10Add git comment --pretty optionJune McEnroe 2021-09-08Defer printing comment if line is blank or closing braceJune McEnroe This fixes badly indented comments. 2021-09-08Up default min-repeat to 30 linesJune McEnroe 2021-09-08Handle dirty lines in git-commentJune McEnroe 2021-09-08Document and install git-commentJune McEnroe 2021-09-08Add repeat and all options to git-commentJune McEnroe 2021-09-08Add group threshold to git-commentJune McEnroe