From b2f6082dffb6a5fce557882e18183c2438ea4a3d Mon Sep 17 00:00:00 2001 From: Curtis McEnroe Date: Mon, 25 Feb 2019 21:48:05 -0500 Subject: [PATCH] Add M-l to list the log --- catgirl.1 | 4 +++- chat.h | 1 + log.c | 20 ++++++++++++++++---- ui.c | 1 + 4 files changed, 21 insertions(+), 5 deletions(-) diff --git a/catgirl.1 b/catgirl.1 index b8c912a..722cfd8 100644 --- a/catgirl.1 +++ b/catgirl.1 @@ -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 diff --git a/chat.h b/chat.h index f3a102c..d6c234c 100644 --- a/chat.h +++ b/chat.h @@ -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); diff --git a/log.c b/log.c index 579e99b..6cde704 100644 --- a/log.c +++ b/log.c @@ -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); +} diff --git a/ui.c b/ui.c index 7654e36..67f35c0 100644 --- a/ui.c +++ b/ui.c @@ -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""); } }