summaryrefslogtreecommitdiffstats
path: root/window-client.c
diff options
context:
space:
mode:
authornicm <nicm>2017-06-09 16:01:39 +0000
committernicm <nicm>2017-06-09 16:01:39 +0000
commitadcd5aff6fb86036ef736c10b04005da77a465f6 (patch)
tree63044c2a228982fc14a8bc105b28a7ba420f8a64 /window-client.c
parentbab4da51334499d1e3e43ad155f2f8da6ad0eb76 (diff)
Extend filters (f key) to buffer and client mode and add -f flag to
specify to command.
Diffstat (limited to 'window-client.c')
-rw-r--r--window-client.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/window-client.c b/window-client.c
index cbceead9..9da8431e 100644
--- a/window-client.c
+++ b/window-client.c
@@ -141,14 +141,14 @@ window_client_cmp_activity_time(const void *a0, const void *b0)
}
static void
-window_client_build(void *modedata, u_int sort_type, __unused uint64_t *tag)
+window_client_build(void *modedata, u_int sort_type, __unused uint64_t *tag,
+ const char *filter)
{
struct window_client_modedata *data = modedata;
struct window_client_itemdata *item;
u_int i;
struct client *c;
- char *tim;
- char *text;
+ char *tim, *text, *cp;
for (i = 0; i < data->item_size; i++)
window_client_free_item(data->item_list[i]);
@@ -189,6 +189,15 @@ window_client_build(void *modedata, u_int sort_type, __unused uint64_t *tag)
item = data->item_list[i];
c = item->c;
+ if (filter != NULL) {
+ cp = format_single(NULL, filter, c, NULL, NULL, NULL);
+ if (!format_true(cp)) {
+ free(cp);
+ continue;
+ }
+ free(cp);
+ }
+
tim = ctime(&c->activity_time.tv_sec);
*strchr(tim, '\n') = '\0';