mirror of
https://github.com/tmux/tmux.git
synced 2025-01-14 20:58:53 +00:00
Merge branch 'obsd-master'
This commit is contained in:
commit
86d6666fe7
157
mode-tree.c
157
mode-tree.c
@ -29,6 +29,9 @@ struct mode_tree_item;
|
|||||||
TAILQ_HEAD(mode_tree_list, mode_tree_item);
|
TAILQ_HEAD(mode_tree_list, mode_tree_item);
|
||||||
|
|
||||||
struct mode_tree_data {
|
struct mode_tree_data {
|
||||||
|
int dead;
|
||||||
|
u_int references;
|
||||||
|
|
||||||
struct window_pane *wp;
|
struct window_pane *wp;
|
||||||
void *modedata;
|
void *modedata;
|
||||||
|
|
||||||
@ -38,6 +41,7 @@ struct mode_tree_data {
|
|||||||
|
|
||||||
void (*buildcb)(void *, u_int, uint64_t *);
|
void (*buildcb)(void *, u_int, uint64_t *);
|
||||||
struct screen *(*drawcb)(void *, void *, u_int, u_int);
|
struct screen *(*drawcb)(void *, void *, u_int, u_int);
|
||||||
|
int (*searchcb)(void*, void *, const char *);
|
||||||
|
|
||||||
struct mode_tree_list children;
|
struct mode_tree_list children;
|
||||||
struct mode_tree_list saved;
|
struct mode_tree_list saved;
|
||||||
@ -54,6 +58,8 @@ struct mode_tree_data {
|
|||||||
u_int current;
|
u_int current;
|
||||||
|
|
||||||
struct screen screen;
|
struct screen screen;
|
||||||
|
|
||||||
|
char *ss;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct mode_tree_item {
|
struct mode_tree_item {
|
||||||
@ -171,6 +177,27 @@ mode_tree_clear_tagged(struct mode_tree_list *mtl)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
mode_tree_set_current(struct mode_tree_data *mtd, uint64_t tag)
|
||||||
|
{
|
||||||
|
u_int i;
|
||||||
|
|
||||||
|
for (i = 0; i < mtd->line_size; i++) {
|
||||||
|
if (mtd->line_list[i].item->tag == tag)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (i != mtd->line_size) {
|
||||||
|
mtd->current = i;
|
||||||
|
if (mtd->current > mtd->height - 1)
|
||||||
|
mtd->offset = 1 + mtd->current - mtd->height;
|
||||||
|
else
|
||||||
|
mtd->offset = 0;
|
||||||
|
} else {
|
||||||
|
mtd->current = 0;
|
||||||
|
mtd->offset = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
mode_tree_up(struct mode_tree_data *mtd, int wrap)
|
mode_tree_up(struct mode_tree_data *mtd, int wrap)
|
||||||
{
|
{
|
||||||
@ -248,11 +275,14 @@ mode_tree_each_tagged(struct mode_tree_data *mtd, void (*cb)(void *, void *,
|
|||||||
struct mode_tree_data *
|
struct mode_tree_data *
|
||||||
mode_tree_start(struct window_pane *wp, void (*buildcb)(void *, u_int,
|
mode_tree_start(struct window_pane *wp, void (*buildcb)(void *, u_int,
|
||||||
uint64_t *), struct screen *(*drawcb)(void *, void *, u_int, u_int),
|
uint64_t *), struct screen *(*drawcb)(void *, void *, u_int, u_int),
|
||||||
void *modedata, const char **sort_list, u_int sort_size, struct screen **s)
|
int (*searchcb)(void *, void *, const char *), void *modedata,
|
||||||
|
const char **sort_list, u_int sort_size, struct screen **s)
|
||||||
{
|
{
|
||||||
struct mode_tree_data *mtd;
|
struct mode_tree_data *mtd;
|
||||||
|
|
||||||
mtd = xcalloc(1, sizeof *mtd);
|
mtd = xcalloc(1, sizeof *mtd);
|
||||||
|
mtd->references = 1;
|
||||||
|
|
||||||
mtd->wp = wp;
|
mtd->wp = wp;
|
||||||
mtd->modedata = modedata;
|
mtd->modedata = modedata;
|
||||||
|
|
||||||
@ -262,6 +292,7 @@ mode_tree_start(struct window_pane *wp, void (*buildcb)(void *, u_int,
|
|||||||
|
|
||||||
mtd->buildcb = buildcb;
|
mtd->buildcb = buildcb;
|
||||||
mtd->drawcb = drawcb;
|
mtd->drawcb = drawcb;
|
||||||
|
mtd->searchcb = searchcb;
|
||||||
|
|
||||||
TAILQ_INIT(&mtd->children);
|
TAILQ_INIT(&mtd->children);
|
||||||
|
|
||||||
@ -277,7 +308,6 @@ mode_tree_build(struct mode_tree_data *mtd)
|
|||||||
{
|
{
|
||||||
struct screen *s = &mtd->screen;
|
struct screen *s = &mtd->screen;
|
||||||
uint64_t tag;
|
uint64_t tag;
|
||||||
u_int i;
|
|
||||||
|
|
||||||
if (mtd->line_list != NULL)
|
if (mtd->line_list != NULL)
|
||||||
tag = mtd->line_list[mtd->current].item->tag;
|
tag = mtd->line_list[mtd->current].item->tag;
|
||||||
@ -295,16 +325,7 @@ mode_tree_build(struct mode_tree_data *mtd)
|
|||||||
mode_tree_clear_lines(mtd);
|
mode_tree_clear_lines(mtd);
|
||||||
mode_tree_build_lines(mtd, &mtd->children, 0);
|
mode_tree_build_lines(mtd, &mtd->children, 0);
|
||||||
|
|
||||||
for (i = 0; i < mtd->line_size; i++) {
|
mode_tree_set_current(mtd, tag);
|
||||||
if (mtd->line_list[i].item->tag == tag)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (i != mtd->line_size)
|
|
||||||
mtd->current = i;
|
|
||||||
else {
|
|
||||||
mtd->current = 0;
|
|
||||||
mtd->offset = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
mtd->width = screen_size_x(s);
|
mtd->width = screen_size_x(s);
|
||||||
mtd->height = (screen_size_y(s) / 3) * 2;
|
mtd->height = (screen_size_y(s) / 3) * 2;
|
||||||
@ -316,13 +337,22 @@ mode_tree_build(struct mode_tree_data *mtd)
|
|||||||
mtd->height = screen_size_y(s);
|
mtd->height = screen_size_y(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
mode_tree_remove_ref(struct mode_tree_data *mtd)
|
||||||
|
{
|
||||||
|
if (--mtd->references == 0)
|
||||||
|
free(mtd);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
mode_tree_free(struct mode_tree_data *mtd)
|
mode_tree_free(struct mode_tree_data *mtd)
|
||||||
{
|
{
|
||||||
mode_tree_free_items(&mtd->children);
|
mode_tree_free_items(&mtd->children);
|
||||||
mode_tree_clear_lines(mtd);
|
mode_tree_clear_lines(mtd);
|
||||||
screen_free(&mtd->screen);
|
screen_free(&mtd->screen);
|
||||||
free(mtd);
|
|
||||||
|
mtd->dead = 1;
|
||||||
|
mode_tree_remove_ref(mtd);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -529,8 +559,98 @@ mode_tree_draw(struct mode_tree_data *mtd)
|
|||||||
screen_write_stop(&ctx);
|
screen_write_stop(&ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct mode_tree_item *
|
||||||
|
mode_tree_search_for(struct mode_tree_data *mtd)
|
||||||
|
{
|
||||||
|
struct mode_tree_item *mti, *last, *next;
|
||||||
|
|
||||||
|
if (mtd->ss == NULL)
|
||||||
|
return (NULL);
|
||||||
|
|
||||||
|
mti = last = mtd->line_list[mtd->current].item;
|
||||||
|
for (;;) {
|
||||||
|
if (!TAILQ_EMPTY(&mti->children))
|
||||||
|
mti = TAILQ_FIRST(&mti->children);
|
||||||
|
else if ((next = TAILQ_NEXT(mti, entry)) != NULL)
|
||||||
|
mti = next;
|
||||||
|
else {
|
||||||
|
for (;;) {
|
||||||
|
mti = mti->parent;
|
||||||
|
if (mti == NULL)
|
||||||
|
break;
|
||||||
|
if ((next = TAILQ_NEXT(mti, entry)) != NULL) {
|
||||||
|
mti = next;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (mti == NULL)
|
||||||
|
mti = TAILQ_FIRST(&mtd->children);
|
||||||
|
if (mti == last)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (mtd->searchcb == NULL) {
|
||||||
|
if (strstr(mti->name, mtd->ss) != NULL)
|
||||||
|
return (mti);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (mtd->searchcb(mtd->modedata, mti->itemdata, mtd->ss))
|
||||||
|
return (mti);
|
||||||
|
}
|
||||||
|
return (NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
mode_tree_search_set(struct mode_tree_data *mtd)
|
||||||
|
{
|
||||||
|
struct mode_tree_item *mti, *loop;
|
||||||
|
uint64_t tag;
|
||||||
|
|
||||||
|
mti = mode_tree_search_for(mtd);
|
||||||
|
if (mti == NULL)
|
||||||
|
return;
|
||||||
|
tag = mti->tag;
|
||||||
|
|
||||||
|
loop = mti->parent;
|
||||||
|
while (loop != NULL) {
|
||||||
|
loop->expanded = 1;
|
||||||
|
loop = loop->parent;
|
||||||
|
}
|
||||||
|
mode_tree_build(mtd);
|
||||||
|
|
||||||
|
mode_tree_set_current(mtd, tag);
|
||||||
|
mode_tree_draw(mtd);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
mode_tree_search_callback(__unused struct client *c, void *data, const char *s,
|
||||||
|
__unused int done)
|
||||||
|
{
|
||||||
|
struct mode_tree_data *mtd = data;
|
||||||
|
|
||||||
|
if (mtd->dead)
|
||||||
|
return (0);
|
||||||
|
|
||||||
|
free(mtd->ss);
|
||||||
|
if (*s == '\0') {
|
||||||
|
mtd->ss = NULL;
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
mtd->ss = xstrdup(s);
|
||||||
|
mode_tree_search_set(mtd);
|
||||||
|
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
mode_tree_search_free(void *data)
|
||||||
|
{
|
||||||
|
mode_tree_remove_ref(data);
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
mode_tree_key(struct mode_tree_data *mtd, key_code *key, struct mouse_event *m)
|
mode_tree_key(struct mode_tree_data *mtd, struct client *c, key_code *key,
|
||||||
|
struct mouse_event *m)
|
||||||
{
|
{
|
||||||
struct mode_tree_line *line;
|
struct mode_tree_line *line;
|
||||||
struct mode_tree_item *current, *parent;
|
struct mode_tree_item *current, *parent;
|
||||||
@ -672,6 +792,15 @@ mode_tree_key(struct mode_tree_data *mtd, key_code *key, struct mouse_event *m)
|
|||||||
mode_tree_build(mtd);
|
mode_tree_build(mtd);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case '\023': /* C-s */
|
||||||
|
mtd->references++;
|
||||||
|
status_prompt_set(c, "(search) ", "",
|
||||||
|
mode_tree_search_callback, mode_tree_search_free, mtd,
|
||||||
|
PROMPT_NOFORMAT);
|
||||||
|
break;
|
||||||
|
case 'n':
|
||||||
|
mode_tree_search_set(mtd);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
6
tmux.1
6
tmux.1
@ -1369,6 +1369,8 @@ The following keys may be used in client mode:
|
|||||||
.It Li "Enter" Ta "Choose selected client"
|
.It Li "Enter" Ta "Choose selected client"
|
||||||
.It Li "Up" Ta "Select previous client"
|
.It Li "Up" Ta "Select previous client"
|
||||||
.It Li "Down" Ta "Select next client"
|
.It Li "Down" Ta "Select next client"
|
||||||
|
.It Li "C-s" Ta "Search by name"
|
||||||
|
.It Li "n" Ta "Repeat last search"
|
||||||
.It Li "t" Ta "Toggle if client is tagged"
|
.It Li "t" Ta "Toggle if client is tagged"
|
||||||
.It Li "T" Ta "Tag no clients"
|
.It Li "T" Ta "Tag no clients"
|
||||||
.It Li "C-t" Ta "Tag all clients"
|
.It Li "C-t" Ta "Tag all clients"
|
||||||
@ -1410,6 +1412,8 @@ The following keys may be used in tree mode:
|
|||||||
.It Li "Enter" Ta "Choose selected item"
|
.It Li "Enter" Ta "Choose selected item"
|
||||||
.It Li "Up" Ta "Select previous item"
|
.It Li "Up" Ta "Select previous item"
|
||||||
.It Li "Down" Ta "Select next item"
|
.It Li "Down" Ta "Select next item"
|
||||||
|
.It Li "C-s" Ta "Search by name"
|
||||||
|
.It Li "n" Ta "Repeat last search"
|
||||||
.It Li "t" Ta "Toggle if item is tagged"
|
.It Li "t" Ta "Toggle if item is tagged"
|
||||||
.It Li "T" Ta "Tag no items"
|
.It Li "T" Ta "Tag no items"
|
||||||
.It Li "C-t" Ta "Tag all items"
|
.It Li "C-t" Ta "Tag all items"
|
||||||
@ -3964,6 +3968,8 @@ The following keys may be used in buffer mode:
|
|||||||
.It Li "Enter" Ta "Choose selected buffer"
|
.It Li "Enter" Ta "Choose selected buffer"
|
||||||
.It Li "Up" Ta "Select previous buffer"
|
.It Li "Up" Ta "Select previous buffer"
|
||||||
.It Li "Down" Ta "Select next buffer"
|
.It Li "Down" Ta "Select next buffer"
|
||||||
|
.It Li "C-s" Ta "Search by name or content"
|
||||||
|
.It Li "n" Ta "Repeat last search"
|
||||||
.It Li "t" Ta "Toggle if buffer is tagged"
|
.It Li "t" Ta "Toggle if buffer is tagged"
|
||||||
.It Li "T" Ta "Tag no buffers"
|
.It Li "T" Ta "Tag no buffers"
|
||||||
.It Li "C-t" Ta "Tag all buffers"
|
.It Li "C-t" Ta "Tag all buffers"
|
||||||
|
6
tmux.h
6
tmux.h
@ -2207,8 +2207,8 @@ void mode_tree_up(struct mode_tree_data *, int);
|
|||||||
void mode_tree_down(struct mode_tree_data *, int);
|
void mode_tree_down(struct mode_tree_data *, int);
|
||||||
struct mode_tree_data *mode_tree_start(struct window_pane *,
|
struct mode_tree_data *mode_tree_start(struct window_pane *,
|
||||||
void (*)(void *, u_int, uint64_t *), struct screen *(*)(void *,
|
void (*)(void *, u_int, uint64_t *), struct screen *(*)(void *,
|
||||||
void *, u_int, u_int), void *, const char **, u_int,
|
void *, u_int, u_int), int (*)(void *, void *, const char *),
|
||||||
struct screen **);
|
void *, const char **, u_int, struct screen **);
|
||||||
void mode_tree_build(struct mode_tree_data *);
|
void mode_tree_build(struct mode_tree_data *);
|
||||||
void mode_tree_free(struct mode_tree_data *);
|
void mode_tree_free(struct mode_tree_data *);
|
||||||
void mode_tree_resize(struct mode_tree_data *, u_int, u_int);
|
void mode_tree_resize(struct mode_tree_data *, u_int, u_int);
|
||||||
@ -2217,7 +2217,7 @@ struct mode_tree_item *mode_tree_add(struct mode_tree_data *,
|
|||||||
const char *, int);
|
const char *, int);
|
||||||
void mode_tree_remove(struct mode_tree_data *, struct mode_tree_item *);
|
void mode_tree_remove(struct mode_tree_data *, struct mode_tree_item *);
|
||||||
void mode_tree_draw(struct mode_tree_data *);
|
void mode_tree_draw(struct mode_tree_data *);
|
||||||
int mode_tree_key(struct mode_tree_data *, key_code *,
|
int mode_tree_key(struct mode_tree_data *, struct client *, key_code *,
|
||||||
struct mouse_event *);
|
struct mouse_event *);
|
||||||
void mode_tree_run_command(struct client *, struct cmd_find_state *,
|
void mode_tree_run_command(struct client *, struct cmd_find_state *,
|
||||||
const char *, const char *);
|
const char *, const char *);
|
||||||
|
@ -226,6 +226,22 @@ window_buffer_draw(__unused void *modedata, void *itemdata, u_int sx, u_int sy)
|
|||||||
return (&s);
|
return (&s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
window_buffer_search(__unused void *modedata, void *itemdata, const char *ss)
|
||||||
|
{
|
||||||
|
struct window_buffer_itemdata *item = itemdata;
|
||||||
|
struct paste_buffer *pb;
|
||||||
|
const char *bufdata;
|
||||||
|
size_t bufsize;
|
||||||
|
|
||||||
|
if ((pb = paste_get_name(item->name)) == NULL)
|
||||||
|
return (0);
|
||||||
|
if (strstr(item->name, ss) != NULL)
|
||||||
|
return (0);
|
||||||
|
bufdata = paste_buffer_data(pb, &bufsize);
|
||||||
|
return (memmem(bufdata, bufsize, ss, strlen(ss)) != NULL);
|
||||||
|
}
|
||||||
|
|
||||||
static struct screen *
|
static struct screen *
|
||||||
window_buffer_init(struct window_pane *wp, __unused struct cmd_find_state *fs,
|
window_buffer_init(struct window_pane *wp, __unused struct cmd_find_state *fs,
|
||||||
struct args *args)
|
struct args *args)
|
||||||
@ -241,8 +257,8 @@ window_buffer_init(struct window_pane *wp, __unused struct cmd_find_state *fs,
|
|||||||
data->command = xstrdup(args->argv[0]);
|
data->command = xstrdup(args->argv[0]);
|
||||||
|
|
||||||
data->data = mode_tree_start(wp, window_buffer_build,
|
data->data = mode_tree_start(wp, window_buffer_build,
|
||||||
window_buffer_draw, data, window_buffer_sort_list,
|
window_buffer_draw, window_buffer_search, data,
|
||||||
nitems(window_buffer_sort_list), &s);
|
window_buffer_sort_list, nitems(window_buffer_sort_list), &s);
|
||||||
|
|
||||||
mode_tree_build(data->data);
|
mode_tree_build(data->data);
|
||||||
mode_tree_draw(data->data);
|
mode_tree_draw(data->data);
|
||||||
@ -311,7 +327,7 @@ window_buffer_key(struct window_pane *wp, struct client *c,
|
|||||||
* Enter = paste buffer
|
* Enter = paste buffer
|
||||||
*/
|
*/
|
||||||
|
|
||||||
finished = mode_tree_key(data->data, &key, m);
|
finished = mode_tree_key(data->data, c, &key, m);
|
||||||
switch (key) {
|
switch (key) {
|
||||||
case 'd':
|
case 'd':
|
||||||
item = mode_tree_get_current(data->data);
|
item = mode_tree_get_current(data->data);
|
||||||
|
@ -224,7 +224,7 @@ window_client_init(struct window_pane *wp, __unused struct cmd_find_state *fs,
|
|||||||
data->command = xstrdup(args->argv[0]);
|
data->command = xstrdup(args->argv[0]);
|
||||||
|
|
||||||
data->data = mode_tree_start(wp, window_client_build,
|
data->data = mode_tree_start(wp, window_client_build,
|
||||||
window_client_draw, data, window_client_sort_list,
|
window_client_draw, NULL, data, window_client_sort_list,
|
||||||
nitems(window_client_sort_list), &s);
|
nitems(window_client_sort_list), &s);
|
||||||
|
|
||||||
mode_tree_build(data->data);
|
mode_tree_build(data->data);
|
||||||
@ -301,7 +301,7 @@ window_client_key(struct window_pane *wp, struct client *c,
|
|||||||
* Enter = detach client
|
* Enter = detach client
|
||||||
*/
|
*/
|
||||||
|
|
||||||
finished = mode_tree_key(data->data, &key, m);
|
finished = mode_tree_key(data->data, c, &key, m);
|
||||||
switch (key) {
|
switch (key) {
|
||||||
case 'd':
|
case 'd':
|
||||||
case 'x':
|
case 'x':
|
||||||
|
@ -440,6 +440,39 @@ window_tree_draw(__unused void *modedata, void *itemdata, u_int sx, u_int sy)
|
|||||||
return (&s);
|
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 *
|
static struct screen *
|
||||||
window_tree_init(struct window_pane *wp, struct cmd_find_state *fs,
|
window_tree_init(struct window_pane *wp, struct cmd_find_state *fs,
|
||||||
struct args *args)
|
struct args *args)
|
||||||
@ -470,8 +503,8 @@ window_tree_init(struct window_pane *wp, struct cmd_find_state *fs,
|
|||||||
else
|
else
|
||||||
data->command = xstrdup(args->argv[0]);
|
data->command = xstrdup(args->argv[0]);
|
||||||
|
|
||||||
data->data = mode_tree_start(wp, window_tree_build,
|
data->data = mode_tree_start(wp, window_tree_build, window_tree_draw,
|
||||||
window_tree_draw, data, window_tree_sort_list,
|
window_tree_search, data, window_tree_sort_list,
|
||||||
nitems(window_tree_sort_list), &s);
|
nitems(window_tree_sort_list), &s);
|
||||||
|
|
||||||
mode_tree_build(data->data);
|
mode_tree_build(data->data);
|
||||||
@ -674,7 +707,7 @@ window_tree_key(struct window_pane *wp, struct client *c,
|
|||||||
* f = enter filter
|
* f = enter filter
|
||||||
*/
|
*/
|
||||||
|
|
||||||
finished = mode_tree_key(data->data, &key, m);
|
finished = mode_tree_key(data->data, c, &key, m);
|
||||||
switch (key) {
|
switch (key) {
|
||||||
case 'f':
|
case 'f':
|
||||||
data->references++;
|
data->references++;
|
||||||
|
Loading…
Reference in New Issue
Block a user