mirror of
https://github.com/tmux/tmux.git
synced 2024-12-13 01:48:47 +00:00
Sync OpenBSD patchset 979:
Make window_pane_index work the same as window_index, from Ben Boeckel.
This commit is contained in:
parent
398af28d2a
commit
9ec457575d
@ -49,15 +49,18 @@ cmd_respawn_pane_exec(struct cmd *self, struct cmd_ctx *ctx)
|
|||||||
struct session *s;
|
struct session *s;
|
||||||
struct environ env;
|
struct environ env;
|
||||||
const char *cmd;
|
const char *cmd;
|
||||||
char *cause;
|
char *cause;
|
||||||
|
u_int idx;
|
||||||
|
|
||||||
if ((wl = cmd_find_pane(ctx, args_get(args, 't'), &s, &wp)) == NULL)
|
if ((wl = cmd_find_pane(ctx, args_get(args, 't'), &s, &wp)) == NULL)
|
||||||
return (-1);
|
return (-1);
|
||||||
w = wl->window;
|
w = wl->window;
|
||||||
|
|
||||||
if (!args_has(self->args, 'k') && wp->fd != -1) {
|
if (!args_has(self->args, 'k') && wp->fd != -1) {
|
||||||
|
if (window_pane_index(wp, &idx) != 0)
|
||||||
|
fatalx("index not found");
|
||||||
ctx->error(ctx, "pane still active: %s:%u.%u",
|
ctx->error(ctx, "pane still active: %s:%u.%u",
|
||||||
s->name, wl->idx, window_pane_index(w, wp));
|
s->name, wl->idx, idx);
|
||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -139,7 +139,8 @@ cmd_split_window_exec(struct cmd *self, struct cmd_ctx *ctx)
|
|||||||
environ_free(&env);
|
environ_free(&env);
|
||||||
|
|
||||||
if (args_has(args, 'P')) {
|
if (args_has(args, 'P')) {
|
||||||
paneidx = window_pane_index(wl->window, new_wp);
|
if (window_pane_index(new_wp, &paneidx) != 0)
|
||||||
|
fatalx("index not found");
|
||||||
ctx->print(ctx, "%s:%u.%u", s->name, wl->idx, paneidx);
|
ctx->print(ctx, "%s:%u.%u", s->name, wl->idx, paneidx);
|
||||||
}
|
}
|
||||||
return (0);
|
return (0);
|
||||||
|
@ -264,7 +264,7 @@ screen_redraw_draw_number(struct client *c, struct window_pane *wp)
|
|||||||
{
|
{
|
||||||
struct tty *tty = &c->tty;
|
struct tty *tty = &c->tty;
|
||||||
struct session *s = c->session;
|
struct session *s = c->session;
|
||||||
struct options *oo = &s->options;
|
struct options *oo = &s->options;
|
||||||
struct window *w = wp->window;
|
struct window *w = wp->window;
|
||||||
struct grid_cell gc;
|
struct grid_cell gc;
|
||||||
u_int idx, px, py, i, j, xoff, yoff;
|
u_int idx, px, py, i, j, xoff, yoff;
|
||||||
@ -272,7 +272,8 @@ screen_redraw_draw_number(struct client *c, struct window_pane *wp)
|
|||||||
char buf[16], *ptr;
|
char buf[16], *ptr;
|
||||||
size_t len;
|
size_t len;
|
||||||
|
|
||||||
idx = window_pane_index(w, wp);
|
if (window_pane_index(wp, &idx) != 0)
|
||||||
|
fatalx("index not found");
|
||||||
len = xsnprintf(buf, sizeof buf, "%u", idx);
|
len = xsnprintf(buf, sizeof buf, "%u", idx);
|
||||||
|
|
||||||
if (wp->sx < len)
|
if (wp->sx < len)
|
||||||
|
5
status.c
5
status.c
@ -372,6 +372,7 @@ status_replace1(struct client *c, struct session *s, struct winlink *wl,
|
|||||||
char ch, tmp[256], *ptr, *endptr, *freeptr;
|
char ch, tmp[256], *ptr, *endptr, *freeptr;
|
||||||
size_t ptrlen;
|
size_t ptrlen;
|
||||||
long limit;
|
long limit;
|
||||||
|
u_int idx;
|
||||||
|
|
||||||
if (s == NULL)
|
if (s == NULL)
|
||||||
s = c->session;
|
s = c->session;
|
||||||
@ -422,8 +423,10 @@ status_replace1(struct client *c, struct session *s, struct winlink *wl,
|
|||||||
ptr = tmp;
|
ptr = tmp;
|
||||||
goto do_replace;
|
goto do_replace;
|
||||||
case 'P':
|
case 'P':
|
||||||
|
if (window_pane_index(wp, &idx) != 0)
|
||||||
|
fatalx("index not found");
|
||||||
xsnprintf(
|
xsnprintf(
|
||||||
tmp, sizeof tmp, "%u", window_pane_index(wl->window, wp));
|
tmp, sizeof tmp, "%u", idx);
|
||||||
ptr = tmp;
|
ptr = tmp;
|
||||||
goto do_replace;
|
goto do_replace;
|
||||||
case 'S':
|
case 'S':
|
||||||
|
2
tmux.h
2
tmux.h
@ -1927,7 +1927,7 @@ struct window_pane *window_pane_next_by_number(struct window *,
|
|||||||
struct window_pane *, u_int);
|
struct window_pane *, u_int);
|
||||||
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);
|
||||||
u_int window_pane_index(struct window *, struct window_pane *);
|
int window_pane_index(struct window_pane *, u_int *);
|
||||||
u_int window_count_panes(struct window *);
|
u_int window_count_panes(struct window *);
|
||||||
void window_destroy_panes(struct window *);
|
void window_destroy_panes(struct window *);
|
||||||
struct window_pane *window_pane_find_by_id(u_int);
|
struct window_pane *window_pane_find_by_id(u_int);
|
||||||
|
18
window.c
18
window.c
@ -483,19 +483,21 @@ window_pane_previous_by_number(struct window *w, struct window_pane *wp,
|
|||||||
return (wp);
|
return (wp);
|
||||||
}
|
}
|
||||||
|
|
||||||
u_int
|
int
|
||||||
window_pane_index(struct window *w, struct window_pane *wp)
|
window_pane_index(struct window_pane *wp, u_int *i)
|
||||||
{
|
{
|
||||||
struct window_pane *wq;
|
struct window_pane *wq;
|
||||||
u_int n;
|
struct window *w = wp->window;
|
||||||
|
|
||||||
n = 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) {
|
||||||
if (wp == wq)
|
if (wp == wq) {
|
||||||
break;
|
return (0);
|
||||||
n++;
|
}
|
||||||
|
(*i)++;
|
||||||
}
|
}
|
||||||
return (n);
|
|
||||||
|
return (-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
u_int
|
u_int
|
||||||
|
Loading…
Reference in New Issue
Block a user