mirror of
https://github.com/tmux/tmux.git
synced 2026-06-03 16:46:18 +00:00
Add a Z sort order in tree mode.
This commit is contained in:
16
format.c
16
format.c
@@ -2419,20 +2419,10 @@ format_cb_pane_y(struct format_tree *ft)
|
|||||||
static void *
|
static void *
|
||||||
format_cb_pane_z(struct format_tree *ft)
|
format_cb_pane_z(struct format_tree *ft)
|
||||||
{
|
{
|
||||||
struct window_pane *wp;
|
u_int idx;
|
||||||
u_int n = 0;
|
|
||||||
|
|
||||||
if (ft->wp != NULL) {
|
if (ft->wp != NULL && window_pane_zindex(ft->wp, &idx) == 0)
|
||||||
if (~ft->wp->flags & PANE_FLOATING)
|
return (format_printf("%u", idx));
|
||||||
return (xstrdup("0"));
|
|
||||||
TAILQ_FOREACH(wp, &ft->wp->window->z_index, zentry) {
|
|
||||||
if (wp->flags & PANE_FLOATING)
|
|
||||||
n++;
|
|
||||||
if (wp == ft->wp)
|
|
||||||
return (format_printf("%u", n));
|
|
||||||
}
|
|
||||||
return (xstrdup("0"));
|
|
||||||
}
|
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
14
sort.c
14
sort.c
@@ -74,6 +74,7 @@ sort_buffer_cmp(const void *a0, const void *b0)
|
|||||||
case SORT_INDEX:
|
case SORT_INDEX:
|
||||||
case SORT_MODIFIER:
|
case SORT_MODIFIER:
|
||||||
case SORT_ORDER:
|
case SORT_ORDER:
|
||||||
|
case SORT_Z:
|
||||||
case SORT_END:
|
case SORT_END:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -120,6 +121,7 @@ sort_client_cmp(const void *a0, const void *b0)
|
|||||||
case SORT_INDEX:
|
case SORT_INDEX:
|
||||||
case SORT_MODIFIER:
|
case SORT_MODIFIER:
|
||||||
case SORT_ORDER:
|
case SORT_ORDER:
|
||||||
|
case SORT_Z:
|
||||||
case SORT_END:
|
case SORT_END:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -172,6 +174,7 @@ sort_session_cmp(const void *a0, const void *b0)
|
|||||||
case SORT_MODIFIER:
|
case SORT_MODIFIER:
|
||||||
case SORT_ORDER:
|
case SORT_ORDER:
|
||||||
case SORT_SIZE:
|
case SORT_SIZE:
|
||||||
|
case SORT_Z:
|
||||||
case SORT_END:
|
case SORT_END:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -211,6 +214,11 @@ sort_pane_cmp(const void *a0, const void *b0)
|
|||||||
case SORT_NAME:
|
case SORT_NAME:
|
||||||
result = strcmp(a->screen->title, b->screen->title);
|
result = strcmp(a->screen->title, b->screen->title);
|
||||||
break;
|
break;
|
||||||
|
case SORT_Z:
|
||||||
|
window_pane_zindex(a, &ai);
|
||||||
|
window_pane_zindex(b, &bi);
|
||||||
|
result = ai - bi;
|
||||||
|
break;
|
||||||
case SORT_MODIFIER:
|
case SORT_MODIFIER:
|
||||||
case SORT_ORDER:
|
case SORT_ORDER:
|
||||||
case SORT_END:
|
case SORT_END:
|
||||||
@@ -269,6 +277,7 @@ sort_winlink_cmp(const void *a0, const void *b0)
|
|||||||
break;
|
break;
|
||||||
case SORT_MODIFIER:
|
case SORT_MODIFIER:
|
||||||
case SORT_ORDER:
|
case SORT_ORDER:
|
||||||
|
case SORT_Z:
|
||||||
case SORT_END:
|
case SORT_END:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -304,6 +313,7 @@ sort_key_binding_cmp(const void *a0, const void *b0)
|
|||||||
case SORT_CREATION:
|
case SORT_CREATION:
|
||||||
case SORT_ORDER:
|
case SORT_ORDER:
|
||||||
case SORT_SIZE:
|
case SORT_SIZE:
|
||||||
|
case SORT_Z:
|
||||||
case SORT_END:
|
case SORT_END:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -358,6 +368,8 @@ sort_order_from_string(const char* order)
|
|||||||
return (SORT_ORDER);
|
return (SORT_ORDER);
|
||||||
if (strcasecmp(order, "size") == 0)
|
if (strcasecmp(order, "size") == 0)
|
||||||
return (SORT_SIZE);
|
return (SORT_SIZE);
|
||||||
|
if (strcasecmp(order, "z") == 0)
|
||||||
|
return (SORT_Z);
|
||||||
}
|
}
|
||||||
return (SORT_END);
|
return (SORT_END);
|
||||||
}
|
}
|
||||||
@@ -379,6 +391,8 @@ sort_order_to_string(enum sort_order order)
|
|||||||
return "order";
|
return "order";
|
||||||
if (order == SORT_SIZE)
|
if (order == SORT_SIZE)
|
||||||
return "size";
|
return "size";
|
||||||
|
if (order == SORT_Z)
|
||||||
|
return "z";
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
5
tmux.1
5
tmux.1
@@ -2862,9 +2862,10 @@ is not given, "switch\-client \-t \[aq]%%\[aq]" is used.
|
|||||||
specifies the initial sort order: one of
|
specifies the initial sort order: one of
|
||||||
.Ql index ,
|
.Ql index ,
|
||||||
.Ql name ,
|
.Ql name ,
|
||||||
or
|
|
||||||
.Ql activity
|
.Ql activity
|
||||||
(time).
|
(time)
|
||||||
|
or
|
||||||
|
.Ql z .
|
||||||
.Fl r
|
.Fl r
|
||||||
reverses the sort order.
|
reverses the sort order.
|
||||||
.Fl f
|
.Fl f
|
||||||
|
|||||||
2
tmux.h
2
tmux.h
@@ -2334,6 +2334,7 @@ enum sort_order {
|
|||||||
SORT_NAME,
|
SORT_NAME,
|
||||||
SORT_ORDER,
|
SORT_ORDER,
|
||||||
SORT_SIZE,
|
SORT_SIZE,
|
||||||
|
SORT_Z,
|
||||||
SORT_END,
|
SORT_END,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -3391,6 +3392,7 @@ struct window_pane *window_pane_next_by_number(struct window *,
|
|||||||
struct window_pane *window_pane_previous_by_number(struct window *,
|
struct window_pane *window_pane_previous_by_number(struct window *,
|
||||||
struct window_pane *, u_int);
|
struct window_pane *, u_int);
|
||||||
int window_pane_index(struct window_pane *, u_int *);
|
int window_pane_index(struct window_pane *, u_int *);
|
||||||
|
int window_pane_zindex(struct window_pane *, u_int *);
|
||||||
u_int window_count_panes(struct window *, int);
|
u_int window_count_panes(struct window *, int);
|
||||||
void window_destroy_panes(struct window *);
|
void window_destroy_panes(struct window *);
|
||||||
struct window_pane *window_pane_find_by_id_str(const char *);
|
struct window_pane *window_pane_find_by_id_str(const char *);
|
||||||
|
|||||||
@@ -136,6 +136,7 @@ static enum sort_order window_tree_order_seq[] = {
|
|||||||
SORT_INDEX,
|
SORT_INDEX,
|
||||||
SORT_NAME,
|
SORT_NAME,
|
||||||
SORT_ACTIVITY,
|
SORT_ACTIVITY,
|
||||||
|
SORT_Z,
|
||||||
SORT_END,
|
SORT_END,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
22
window.c
22
window.c
@@ -880,8 +880,8 @@ window_pane_previous_by_number(struct window *w, struct window_pane *wp,
|
|||||||
int
|
int
|
||||||
window_pane_index(struct window_pane *wp, u_int *i)
|
window_pane_index(struct window_pane *wp, u_int *i)
|
||||||
{
|
{
|
||||||
struct window_pane *wq;
|
|
||||||
struct window *w = wp->window;
|
struct window *w = wp->window;
|
||||||
|
struct window_pane *wq;
|
||||||
|
|
||||||
*i = options_get_number(w->options, "pane-base-index");
|
*i = options_get_number(w->options, "pane-base-index");
|
||||||
TAILQ_FOREACH(wq, &w->panes, entry) {
|
TAILQ_FOREACH(wq, &w->panes, entry) {
|
||||||
@@ -894,6 +894,26 @@ window_pane_index(struct window_pane *wp, u_int *i)
|
|||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
window_pane_zindex(struct window_pane *wp, u_int *i)
|
||||||
|
{
|
||||||
|
struct window *w = wp->window;
|
||||||
|
struct window_pane *wq;
|
||||||
|
|
||||||
|
*i = 0;
|
||||||
|
TAILQ_FOREACH(wq, &w->z_index, zentry) {
|
||||||
|
if (wq == wp) {
|
||||||
|
if (~wp->flags & PANE_FLOATING)
|
||||||
|
(*i)++;
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
if (wq->flags & PANE_FLOATING)
|
||||||
|
(*i)++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (-1);
|
||||||
|
}
|
||||||
|
|
||||||
u_int
|
u_int
|
||||||
window_count_panes(struct window *w, int with_floating)
|
window_count_panes(struct window *w, int with_floating)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user