Hide filtered messages
parent
25f419465f
commit
ca751a1cdc
|
@ -445,6 +445,8 @@ Switch to previously selected window.
|
||||||
Switch to previous window.
|
Switch to previous window.
|
||||||
.It Ic C-v
|
.It Ic C-v
|
||||||
Scroll down a page.
|
Scroll down a page.
|
||||||
|
.It Ic M--
|
||||||
|
Toggle visibility of filtered messages.
|
||||||
.It Ic M-/
|
.It Ic M-/
|
||||||
Switch to previously selected window.
|
Switch to previously selected window.
|
||||||
.It Ic M-a
|
.It Ic M-a
|
||||||
|
|
6
ui.c
6
ui.c
|
@ -87,6 +87,7 @@ struct Window {
|
||||||
WINDOW *pad;
|
WINDOW *pad;
|
||||||
int scroll;
|
int scroll;
|
||||||
bool mark;
|
bool mark;
|
||||||
|
bool ignore;
|
||||||
enum Heat heat;
|
enum Heat heat;
|
||||||
uint unread;
|
uint unread;
|
||||||
uint unreadWarm;
|
uint unreadWarm;
|
||||||
|
@ -146,6 +147,7 @@ static uint windowFor(uint id) {
|
||||||
scrollok(window->pad, true);
|
scrollok(window->pad, true);
|
||||||
wmove(window->pad, WindowLines - 1, 0);
|
wmove(window->pad, WindowLines - 1, 0);
|
||||||
window->mark = true;
|
window->mark = true;
|
||||||
|
window->ignore = true;
|
||||||
|
|
||||||
return windowPush(window);
|
return windowPush(window);
|
||||||
}
|
}
|
||||||
|
@ -211,6 +213,7 @@ static short colorPair(short fg, short bg) {
|
||||||
X(KeyMetaU, "\33u", NULL) \
|
X(KeyMetaU, "\33u", NULL) \
|
||||||
X(KeyMetaV, "\33v", NULL) \
|
X(KeyMetaV, "\33v", NULL) \
|
||||||
X(KeyMetaEnter, "\33\r", "\33\n") \
|
X(KeyMetaEnter, "\33\r", "\33\n") \
|
||||||
|
X(KeyMetaMinus, "\33-", "\33_") \
|
||||||
X(KeyMetaSlash, "\33/", NULL) \
|
X(KeyMetaSlash, "\33/", NULL) \
|
||||||
X(KeyFocusIn, "\33[I", NULL) \
|
X(KeyFocusIn, "\33[I", NULL) \
|
||||||
X(KeyFocusOut, "\33[O", NULL) \
|
X(KeyFocusOut, "\33[O", NULL) \
|
||||||
|
@ -587,6 +590,7 @@ void uiWrite(uint id, enum Heat heat, const time_t *src, const char *str) {
|
||||||
struct Window *window = windows.ptrs[windowFor(id)];
|
struct Window *window = windows.ptrs[windowFor(id)];
|
||||||
time_t ts = (src ? *src : time(NULL));
|
time_t ts = (src ? *src : time(NULL));
|
||||||
bufferPush(&window->buffer, heat, ts, str);
|
bufferPush(&window->buffer, heat, ts, str);
|
||||||
|
if (heat < Cold && window->ignore) return;
|
||||||
|
|
||||||
int lines = 0;
|
int lines = 0;
|
||||||
window->unread++;
|
window->unread++;
|
||||||
|
@ -630,6 +634,7 @@ static void reflow(struct Window *window) {
|
||||||
for (size_t i = 0; i < BufferCap; ++i) {
|
for (size_t i = 0; i < BufferCap; ++i) {
|
||||||
struct Line line = bufferLine(&window->buffer, i);
|
struct Line line = bufferLine(&window->buffer, i);
|
||||||
if (!line.str) continue;
|
if (!line.str) continue;
|
||||||
|
if (line.heat < Cold && window->ignore) continue;
|
||||||
int lines = wordWrap(window->pad, line.str);
|
int lines = wordWrap(window->pad, line.str);
|
||||||
if (i >= (size_t)(BufferCap - window->unread)) {
|
if (i >= (size_t)(BufferCap - window->unread)) {
|
||||||
window->unreadLines += lines;
|
window->unreadLines += lines;
|
||||||
|
@ -867,6 +872,7 @@ static void keyCode(int code) {
|
||||||
break; case KeyFocusOut: mark(window);
|
break; case KeyFocusOut: mark(window);
|
||||||
|
|
||||||
break; case KeyMetaEnter: edit(id, EditInsert, L'\n');
|
break; case KeyMetaEnter: edit(id, EditInsert, L'\n');
|
||||||
|
break; case KeyMetaMinus: window->ignore ^= true; reflow(window);
|
||||||
break; case KeyMetaSlash: windowShow(windows.swap);
|
break; case KeyMetaSlash: windowShow(windows.swap);
|
||||||
|
|
||||||
break; case KeyMetaA: showAuto();
|
break; case KeyMetaA: showAuto();
|
||||||
|
|
Loading…
Reference in New Issue