mirror of
https://github.com/tmux/tmux.git
synced 2024-11-08 04:08:49 +00:00
Sync OpenBSD patchset 813:
Add a function to create window flags rather than doing the same thing in two places. From Thomas Adam.
This commit is contained in:
parent
1cb579d0fd
commit
30f6d9b167
@ -1,4 +1,4 @@
|
|||||||
/* $Id: cmd-choose-window.c,v 1.25 2011-01-07 14:45:33 tcunha Exp $ */
|
/* $Id: cmd-choose-window.c,v 1.26 2011-01-07 16:55:40 tcunha Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
|
* Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||||
@ -56,7 +56,7 @@ cmd_choose_window_exec(struct cmd *self, struct cmd_ctx *ctx)
|
|||||||
struct winlink *wl, *wm;
|
struct winlink *wl, *wm;
|
||||||
struct window *w;
|
struct window *w;
|
||||||
u_int idx, cur;
|
u_int idx, cur;
|
||||||
char flag, *title;
|
char *flags, *title;
|
||||||
const char *left, *right;
|
const char *left, *right;
|
||||||
|
|
||||||
if (ctx->curclient == NULL) {
|
if (ctx->curclient == NULL) {
|
||||||
@ -79,20 +79,7 @@ cmd_choose_window_exec(struct cmd *self, struct cmd_ctx *ctx)
|
|||||||
cur = idx;
|
cur = idx;
|
||||||
idx++;
|
idx++;
|
||||||
|
|
||||||
flag = ' ';
|
flags = window_printable_flags(s, wm);
|
||||||
if (wm->flags & WINLINK_ACTIVITY)
|
|
||||||
flag = '#';
|
|
||||||
else if (wm->flags & WINLINK_BELL)
|
|
||||||
flag = '!';
|
|
||||||
else if (wm->flags & WINLINK_CONTENT)
|
|
||||||
flag = '+';
|
|
||||||
else if (wm->flags & WINLINK_SILENCE)
|
|
||||||
flag = '~';
|
|
||||||
else if (wm == s->curw)
|
|
||||||
flag = '*';
|
|
||||||
else if (wm == TAILQ_FIRST(&s->lastw))
|
|
||||||
flag = '-';
|
|
||||||
|
|
||||||
title = w->active->screen->title;
|
title = w->active->screen->title;
|
||||||
if (wm == wl)
|
if (wm == wl)
|
||||||
title = w->active->base.title;
|
title = w->active->base.title;
|
||||||
@ -102,10 +89,12 @@ cmd_choose_window_exec(struct cmd *self, struct cmd_ctx *ctx)
|
|||||||
left = right = "";
|
left = right = "";
|
||||||
|
|
||||||
window_choose_add(wl->window->active,
|
window_choose_add(wl->window->active,
|
||||||
wm->idx, "%3d: %s%c [%ux%u] (%u panes%s)%s%s%s",
|
wm->idx, "%3d: %s%s [%ux%u] (%u panes%s)%s%s%s",
|
||||||
wm->idx, w->name, flag, w->sx, w->sy, window_count_panes(w),
|
wm->idx, w->name, flags, w->sx, w->sy, window_count_panes(w),
|
||||||
w->active->fd == -1 ? ", dead" : "",
|
w->active->fd == -1 ? ", dead" : "",
|
||||||
left, title, right);
|
left, title, right);
|
||||||
|
|
||||||
|
xfree(flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
cdata = xmalloc(sizeof *cdata);
|
cdata = xmalloc(sizeof *cdata);
|
||||||
|
19
status.c
19
status.c
@ -1,4 +1,4 @@
|
|||||||
/* $Id: status.c,v 1.154 2011-01-07 14:32:26 tcunha Exp $ */
|
/* $Id: status.c,v 1.155 2011-01-07 16:55:40 tcunha Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||||
@ -393,21 +393,8 @@ status_replace1(struct client *c,struct winlink *wl,
|
|||||||
ptr = wl->window->name;
|
ptr = wl->window->name;
|
||||||
goto do_replace;
|
goto do_replace;
|
||||||
case 'F':
|
case 'F':
|
||||||
tmp[0] = ' ';
|
ptr = window_printable_flags(s, wl);
|
||||||
if (wl->flags & WINLINK_CONTENT)
|
freeptr = ptr;
|
||||||
tmp[0] = '+';
|
|
||||||
else if (wl->flags & WINLINK_BELL)
|
|
||||||
tmp[0] = '!';
|
|
||||||
else if (wl->flags & WINLINK_ACTIVITY)
|
|
||||||
tmp[0] = '#';
|
|
||||||
else if (wl->flags & WINLINK_SILENCE)
|
|
||||||
tmp[0] = '~';
|
|
||||||
else if (wl == s->curw)
|
|
||||||
tmp[0] = '*';
|
|
||||||
else if (wl == TAILQ_FIRST(&s->lastw))
|
|
||||||
tmp[0] = '-';
|
|
||||||
tmp[1] = '\0';
|
|
||||||
ptr = tmp;
|
|
||||||
goto do_replace;
|
goto do_replace;
|
||||||
case '[':
|
case '[':
|
||||||
/*
|
/*
|
||||||
|
4
tmux.h
4
tmux.h
@ -1,4 +1,4 @@
|
|||||||
/* $Id: tmux.h,v 1.602 2011-01-07 14:45:34 tcunha Exp $ */
|
/* $Id: tmux.h,v 1.603 2011-01-07 16:55:40 tcunha Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||||
@ -1873,6 +1873,8 @@ void window_pane_mouse(struct window_pane *,
|
|||||||
int window_pane_visible(struct window_pane *);
|
int window_pane_visible(struct window_pane *);
|
||||||
char *window_pane_search(
|
char *window_pane_search(
|
||||||
struct window_pane *, const char *, u_int *);
|
struct window_pane *, const char *, u_int *);
|
||||||
|
char *window_printable_flags(struct session *, struct winlink *);
|
||||||
|
|
||||||
struct window_pane *window_pane_find_up(struct window_pane *);
|
struct window_pane *window_pane_find_up(struct window_pane *);
|
||||||
struct window_pane *window_pane_find_down(struct window_pane *);
|
struct window_pane *window_pane_find_down(struct window_pane *);
|
||||||
struct window_pane *window_pane_find_left(struct window_pane *);
|
struct window_pane *window_pane_find_left(struct window_pane *);
|
||||||
|
28
window.c
28
window.c
@ -1,4 +1,4 @@
|
|||||||
/* $Id: window.c,v 1.142 2010-12-06 22:52:21 nicm Exp $ */
|
/* $Id: window.c,v 1.143 2011-01-07 16:55:40 tcunha Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||||
@ -460,6 +460,32 @@ window_destroy_panes(struct window *w)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Return list of printable window flag symbols. No flags is just a space. */
|
||||||
|
char *
|
||||||
|
window_printable_flags(struct session *s, struct winlink *wl)
|
||||||
|
{
|
||||||
|
char flags[BUFSIZ];
|
||||||
|
int pos;
|
||||||
|
|
||||||
|
pos = 0;
|
||||||
|
if (wl->flags & WINLINK_ACTIVITY)
|
||||||
|
flags[pos++] = '#';
|
||||||
|
if (wl->flags & WINLINK_BELL)
|
||||||
|
flags[pos++] = '!';
|
||||||
|
if (wl->flags & WINLINK_CONTENT)
|
||||||
|
flags[pos++] = '+';
|
||||||
|
if (wl->flags & WINLINK_SILENCE)
|
||||||
|
flags[pos++] = '~';
|
||||||
|
if (wl == s->curw)
|
||||||
|
flags[pos++] = '*';
|
||||||
|
if (wl == TAILQ_FIRST(&s->lastw))
|
||||||
|
flags[pos++] = '-';
|
||||||
|
if (pos == 0)
|
||||||
|
flags[pos++] = ' ';
|
||||||
|
flags[pos] = '\0';
|
||||||
|
return (xstrdup(flags));
|
||||||
|
}
|
||||||
|
|
||||||
struct window_pane *
|
struct window_pane *
|
||||||
window_pane_create(struct window *w, u_int sx, u_int sy, u_int hlimit)
|
window_pane_create(struct window *w, u_int sx, u_int sy, u_int hlimit)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user