Browse Source

Add M-l to list the log

master
Causal Agent 6 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
and list the most recent URLs
in the current window.
Press
.Aq Enter
.Ic Enter
to resume the UI.
.
.It Ic /window Ar name
@@ -306,6 +306,8 @@ Switch to the next window.
Switch to the previous window.
.It Ic M-a
Switch to next hot or unread window.
.It Ic M-l
Hide the UI and list the log for the current window.
.It Ic M-m
Insert a blank line in the window.
.It Ic M- Ns Ar n

+ 1
- 0
chat.h View File

@@ -190,6 +190,7 @@ void logOpen(const char *path);
void logFmt(
struct Tag tag, const time_t *ts, const char *format, ...
) __attribute__((format(printf, 3, 4)));
void logList(struct Tag tag);
void logReplay(struct Tag tag);

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, ...) {
if (ferror(file)) err(EX_IOERR, "%s", tag.name);
}

void logReplay(struct Tag tag) {
static void logRead(struct Tag tag, bool replay) {
if (logRoot < 0) return;

time_t t = time(NULL);
@@ -136,10 +136,22 @@ void logReplay(struct Tag tag) {
size_t cap = 0;
ssize_t len;
while (0 < (len = getline(&line, &cap, file))) {
if (len < 1 + StampLen + 2 + 1) continue;
line[len - 1] = '\0';
uiFmt(tag, UICold, "\3%d%s", IRCGray, &line[1 + StampLen + 2]);
if (replay) {
if (len < 1 + StampLen + 2 + 1) continue;
line[len - 1] = '\0';
uiFmt(tag, UICold, "\3%d%s", IRCGray, &line[1 + StampLen + 2]);
} else {
printf("%s", line);
}
}
if (ferror(file)) err(EX_IOERR, "%s", tag.name);
free(line);
}

void logList(struct Tag tag) {
logRead(tag, false);
}

void logReplay(struct Tag tag) {
logRead(tag, true);
}

+ 1
- 0
ui.c View File

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

Loading…
Cancel
Save