Add M-l to list the log

weechat-hashes
Curtis McEnroe 2019-02-25 21:48:05 -05:00
parent 2a6e3f2d02
commit b2f6082dff
No known key found for this signature in database
GPG Key ID: CEA2F97ADCFCD77C
4 changed files with 21 additions and 5 deletions

View File

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

1
chat.h
View File

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

20
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); 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; if (logRoot < 0) return;
time_t t = time(NULL); time_t t = time(NULL);
@ -136,10 +136,22 @@ void logReplay(struct Tag tag) {
size_t cap = 0; size_t cap = 0;
ssize_t len; ssize_t len;
while (0 < (len = getline(&line, &cap, file))) { while (0 < (len = getline(&line, &cap, file))) {
if (len < 1 + StampLen + 2 + 1) continue; if (replay) {
line[len - 1] = '\0'; if (len < 1 + StampLen + 2 + 1) continue;
uiFmt(tag, UICold, "\3%d%s", IRCGray, &line[1 + StampLen + 2]); 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); if (ferror(file)) err(EX_IOERR, "%s", tag.name);
free(line); free(line);
} }
void logList(struct Tag tag) {
logRead(tag, false);
}
void logReplay(struct Tag tag) {
logRead(tag, true);
}

1
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'f': edit(win->tag, EditForeWord, 0);
break; case L'\b': edit(win->tag, EditKillBackWord, 0); break; case L'\b': edit(win->tag, EditKillBackWord, 0);
break; case L'd': edit(win->tag, EditKillForeWord, 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""); break; case L'm': uiLog(win->tag, UICold, L"");
} }
} }