=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/window-tree.c,v retrieving revision 1.2 retrieving revision 1.3 diff -c -r1.2 -r1.3 *** src/usr.bin/tmux/window-tree.c 2017/06/06 15:07:35 1.2 --- src/usr.bin/tmux/window-tree.c 2017/06/07 14:37:30 1.3 *************** *** 1,4 **** ! /* $OpenBSD: window-tree.c,v 1.2 2017/06/06 15:07:35 nicm Exp $ */ /* * Copyright (c) 2017 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: window-tree.c,v 1.3 2017/06/07 14:37:30 nicm Exp $ */ /* * Copyright (c) 2017 Nicholas Marriott *************** *** 440,445 **** --- 440,478 ---- return (&s); } + static int + window_tree_search(__unused void *modedata, void *itemdata, const char *ss) + { + struct window_tree_itemdata *item = itemdata; + struct session *s; + struct winlink *wl; + struct window_pane *wp; + const char *cmd; + + window_tree_pull_item(item, &s, &wl, &wp); + + switch (item->type) { + case WINDOW_TREE_NONE: + return (0); + case WINDOW_TREE_SESSION: + if (s == NULL) + return (0); + return (strstr(s->name, ss) != NULL); + case WINDOW_TREE_WINDOW: + if (s == NULL || wl == NULL) + return (0); + return (strstr(wl->window->name, ss) != NULL); + case WINDOW_TREE_PANE: + if (s == NULL || wl == NULL || wp == NULL) + break; + cmd = get_proc_name(wp->fd, wp->tty); + if (cmd == NULL || *cmd == '\0') + return (0); + return (strstr(cmd, ss) != NULL); + } + return (0); + } + static struct screen * window_tree_init(struct window_pane *wp, struct cmd_find_state *fs, struct args *args) *************** *** 470,477 **** else data->command = xstrdup(args->argv[0]); ! data->data = mode_tree_start(wp, window_tree_build, ! window_tree_draw, data, window_tree_sort_list, nitems(window_tree_sort_list), &s); mode_tree_build(data->data); --- 503,510 ---- else data->command = xstrdup(args->argv[0]); ! data->data = mode_tree_start(wp, window_tree_build, window_tree_draw, ! window_tree_search, data, window_tree_sort_list, nitems(window_tree_sort_list), &s); mode_tree_build(data->data); *************** *** 674,680 **** * f = enter filter */ ! finished = mode_tree_key(data->data, &key, m); switch (key) { case 'f': data->references++; --- 707,713 ---- * f = enter filter */ ! finished = mode_tree_key(data->data, c, &key, m); switch (key) { case 'f': data->references++;