Add M-l to list the log
parent
2a6e3f2d02
commit
b2f6082dff
|
@ -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
1
chat.h
|
@ -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
20
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);
|
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
1
ui.c
|
@ -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"");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue