Merge branch 'obsd-master'

This commit is contained in:
Thomas Adam
2026-06-01 19:30:06 +01:00
6 changed files with 44 additions and 16 deletions

View File

@@ -2433,20 +2433,10 @@ format_cb_pane_y(struct format_tree *ft)
static void *
format_cb_pane_z(struct format_tree *ft)
{
struct window_pane *wp;
u_int n = 0;
u_int idx;
if (ft->wp != NULL) {
if (~ft->wp->flags & PANE_FLOATING)
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"));
}
if (ft->wp != NULL && window_pane_zindex(ft->wp, &idx) == 0)
return (format_printf("%u", idx));
return (NULL);
}

14
sort.c
View File

@@ -74,6 +74,7 @@ sort_buffer_cmp(const void *a0, const void *b0)
case SORT_INDEX:
case SORT_MODIFIER:
case SORT_ORDER:
case SORT_Z:
case SORT_END:
break;
}
@@ -120,6 +121,7 @@ sort_client_cmp(const void *a0, const void *b0)
case SORT_INDEX:
case SORT_MODIFIER:
case SORT_ORDER:
case SORT_Z:
case SORT_END:
break;
}
@@ -172,6 +174,7 @@ sort_session_cmp(const void *a0, const void *b0)
case SORT_MODIFIER:
case SORT_ORDER:
case SORT_SIZE:
case SORT_Z:
case SORT_END:
break;
}
@@ -211,6 +214,11 @@ sort_pane_cmp(const void *a0, const void *b0)
case SORT_NAME:
result = strcmp(a->screen->title, b->screen->title);
break;
case SORT_Z:
window_pane_zindex(a, &ai);
window_pane_zindex(b, &bi);
result = ai - bi;
break;
case SORT_MODIFIER:
case SORT_ORDER:
case SORT_END:
@@ -269,6 +277,7 @@ sort_winlink_cmp(const void *a0, const void *b0)
break;
case SORT_MODIFIER:
case SORT_ORDER:
case SORT_Z:
case SORT_END:
break;
}
@@ -304,6 +313,7 @@ sort_key_binding_cmp(const void *a0, const void *b0)
case SORT_CREATION:
case SORT_ORDER:
case SORT_SIZE:
case SORT_Z:
case SORT_END:
break;
}
@@ -358,6 +368,8 @@ sort_order_from_string(const char* order)
return (SORT_ORDER);
if (strcasecmp(order, "size") == 0)
return (SORT_SIZE);
if (strcasecmp(order, "z") == 0)
return (SORT_Z);
}
return (SORT_END);
}
@@ -379,6 +391,8 @@ sort_order_to_string(enum sort_order order)
return "order";
if (order == SORT_SIZE)
return "size";
if (order == SORT_Z)
return "z";
return (NULL);
}

5
tmux.1
View File

@@ -2864,9 +2864,10 @@ is not given, "switch\-client \-t \[aq]%%\[aq]" is used.
specifies the initial sort order: one of
.Ql index ,
.Ql name ,
or
.Ql activity
(time).
(time)
or
.Ql z .
.Fl r
reverses the sort order.
.Fl f

2
tmux.h
View File

@@ -2375,6 +2375,7 @@ enum sort_order {
SORT_NAME,
SORT_ORDER,
SORT_SIZE,
SORT_Z,
SORT_END,
};
@@ -3444,6 +3445,7 @@ struct window_pane *window_pane_next_by_number(struct window *,
struct window_pane *window_pane_previous_by_number(struct window *,
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);
void window_destroy_panes(struct window *);
struct window_pane *window_pane_find_by_id_str(const char *);

View File

@@ -136,6 +136,7 @@ static enum sort_order window_tree_order_seq[] = {
SORT_INDEX,
SORT_NAME,
SORT_ACTIVITY,
SORT_Z,
SORT_END,
};

View File

@@ -887,8 +887,8 @@ window_pane_previous_by_number(struct window *w, struct window_pane *wp,
int
window_pane_index(struct window_pane *wp, u_int *i)
{
struct window_pane *wq;
struct window *w = wp->window;
struct window_pane *wq;
*i = options_get_number(w->options, "pane-base-index");
TAILQ_FOREACH(wq, &w->panes, entry) {
@@ -901,6 +901,26 @@ window_pane_index(struct window_pane *wp, u_int *i)
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
window_count_panes(struct window *w, int with_floating)
{