Browse Source

Add M-l to list the log

Causal Agent 2 months ago
parent
commit
b2f6082dff
Signed by: Curtis McEnroe <june@causal.agency> GPG Key ID: CEA2F97ADCFCD77C
4 changed files with 21 additions and 5 deletions
  1. 3
    1
      catgirl.1
  2. 1
    0
      chat.h
  3. 16
    4
      log.c
  4. 1
    0
      ui.c

+ 3
- 1
catgirl.1 View File

@@ -192,7 +192,7 @@ Hide the UI
192 192
 and list the most recent URLs
193 193
 in the current window.
194 194
 Press
195
-.Aq Enter
195
+.Ic Enter
196 196
 to resume the UI.
197 197
 .
198 198
 .It Ic /window Ar name
@@ -306,6 +306,8 @@ Switch to the next window.
306 306
 Switch to the previous window.
307 307
 .It Ic M-a
308 308
 Switch to next hot or unread window.
309
+.It Ic M-l
310
+Hide the UI and list the log for the current window.
309 311
 .It Ic M-m
310 312
 Insert a blank line in the window.
311 313
 .It Ic M- Ns Ar n

+ 1
- 0
chat.h View File

@@ -190,6 +190,7 @@ void logOpen(const char *path);
190 190
 void logFmt(
191 191
 	struct Tag tag, const time_t *ts, const char *format, ...
192 192
 ) __attribute__((format(printf, 3, 4)));
193
+void logList(struct Tag tag);
193 194
 void logReplay(struct Tag tag);
194 195
 
195 196
 wchar_t *wcsnchr(const wchar_t *wcs, size_t len, wchar_t chr);

+ 16
- 4
log.c View File

@@ -122,7 +122,7 @@ void logFmt(struct Tag tag, const time_t *ts, const char *format, ...) {
122 122
 	if (ferror(file)) err(EX_IOERR, "%s", tag.name);
123 123
 }
124 124
 
125
-void logReplay(struct Tag tag) {
125
+static void logRead(struct Tag tag, bool replay) {
126 126
 	if (logRoot < 0) return;
127 127
 
128 128
 	time_t t = time(NULL);
@@ -136,10 +136,22 @@ void logReplay(struct Tag tag) {
136 136
 	size_t cap = 0;
137 137
 	ssize_t len;
138 138
 	while (0 < (len = getline(&line, &cap, file))) {
139
-		if (len < 1 + StampLen + 2 + 1) continue;
140
-		line[len - 1] = '\0';
141
-		uiFmt(tag, UICold, "\3%d%s", IRCGray, &line[1 + StampLen + 2]);
139
+		if (replay) {
140
+			if (len < 1 + StampLen + 2 + 1) continue;
141
+			line[len - 1] = '\0';
142
+			uiFmt(tag, UICold, "\3%d%s", IRCGray, &line[1 + StampLen + 2]);
143
+		} else {
144
+			printf("%s", line);
145
+		}
142 146
 	}
143 147
 	if (ferror(file)) err(EX_IOERR, "%s", tag.name);
144 148
 	free(line);
145 149
 }
150
+
151
+void logList(struct Tag tag) {
152
+	logRead(tag, false);
153
+}
154
+
155
+void logReplay(struct Tag tag) {
156
+	logRead(tag, true);
157
+}

+ 1
- 0
ui.c View File

@@ -471,6 +471,7 @@ static void keyMeta(wchar_t ch) {
471 471
 		break; case L'f':  edit(win->tag, EditForeWord, 0);
472 472
 		break; case L'\b': edit(win->tag, EditKillBackWord, 0);
473 473
 		break; case L'd':  edit(win->tag, EditKillForeWord, 0);
474
+		break; case L'l':  uiHide(); logList(win->tag);
474 475
 		break; case L'm':  uiLog(win->tag, UICold, L"");
475 476
 	}
476 477
 }

Loading…
Cancel
Save