Applied this to OpenBSD which is your change with a few minor changes.
Index: cmd-choose-window.c
===================================================================
RCS file: /cvs/src/usr.bin/tmux/cmd-choose-window.c,v
retrieving revision 1.16
diff -u -p -r1.16 cmd-choose-window.c
--- cmd-choose-window.c 20 Dec 2010 00:03:55 -0000 1.16
+++ cmd-choose-window.c 30 Dec 2010 21:34:44 -0000
@@ -57,7 +57,7 @@ cmd_choose_window_exec(struct cmd *self,
struct winlink *wl, *wm;
struct window *w;
u_int idx, cur;
- char flag, *title;
+ char *flags, *title;
const char *left, *right;
if (ctx->curclient == NULL) {
@@ -80,20 +80,7 @@ cmd_choose_window_exec(struct cmd *self,
cur = idx;
idx++;
- flag = ' ';
- 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 = '-';
-
+ flags = window_printable_flags(s, wm);
title = w->active->screen->title;
if (wm == wl)
title = w->active->base.title;
@@ -103,10 +90,12 @@ cmd_choose_window_exec(struct cmd *self,
left = right = "";
window_choose_add(wl->window->active,
- wm->idx, "%3d: %s%c [%ux%u] (%u panes%s)%s%s%s",
- wm->idx, w->name, flag, w->sx, w->sy, window_count_panes(w),
+ wm->idx, "%3d: %s%s [%ux%u] (%u panes%s)%s%s%s",
+ wm->idx, w->name, flags, w->sx, w->sy,
window_count_panes(w),
w->active->fd == -1 ? ", dead" : "",
left, title, right);
+
+ xfree(flags);
}
cdata = xmalloc(sizeof *cdata);
Index: status.c
===================================================================
RCS file: /cvs/src/usr.bin/tmux/status.c,v
retrieving revision 1.66
diff -u -p -r1.66 status.c
--- status.c 11 Dec 2010 16:13:15 -0000 1.66
+++ status.c 30 Dec 2010 21:34:45 -0000
@@ -393,21 +393,8 @@ status_replace1(struct client *c,struct
ptr = wl->window->name;
goto do_replace;
case 'F':
- tmp[0] = ' ';
- if (wl->flags & WINLINK_CONTENT)
- 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;
+ ptr = window_printable_flags(s, wl);
+ freeptr = ptr;
goto do_replace;
case '[':
/*
Index: tmux.h
===================================================================
RCS file: /cvs/src/usr.bin/tmux/tmux.h,v
retrieving revision 1.255
diff -u -p -r1.255 tmux.h
--- tmux.h 29 Dec 2010 21:49:06 -0000 1.255
+++ tmux.h 30 Dec 2010 21:34:46 -0000
@@ -1898,6 +1898,8 @@ void window_pane_mouse(struct window_p
int window_pane_visible(struct window_pane *);
char *window_pane_search(
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_down(struct window_pane *);
struct window_pane *window_pane_find_left(struct window_pane *);
Index: window.c
===================================================================
RCS file: /cvs/src/usr.bin/tmux/window.c,v
retrieving revision 1.60
diff -u -p -r1.60 window.c
--- window.c 6 Dec 2010 22:51:02 -0000 1.60
+++ window.c 30 Dec 2010 21:34:46 -0000
@@ -463,6 +463,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 *
window_pane_create(struct window *w, u_int sx, u_int sy, u_int hlimit)
{
On Tue, Dec 28, 2010 at 11:11:54PM +0000, Thomas Adam wrote:
> On Tue, Dec 28, 2010 at 07:41:28PM +0000, Nicholas Marriott wrote:
> > I'm not convinced about showing multiple flags in the status line but I
> > need to give it a go and see. It'll probably be fine, I hardly ever have
> > more than one flag on any window.
>
> Try it and see if anyone screams? ;) I won't be changing anything about
> that patch to do with window flags, so feel free to take those. Unless I
> hear otherwise, I'll still be assuming I can use printable_window_flags()
> even if the functionality of it changes to return just one flag.
>
> -- Thomas Adam
>
> --
> "It was the cruelest game I've ever played and it's played inside my head."
> -- "Hush The Warmth", Gorky's Zygotic Mynci.
------------------------------------------------------------------------------
Learn how Oracle Real Application Clusters (RAC) One Node allows customers
to consolidate database storage, standardize their database environment, and,
should the need arise, upgrade to a full multi-node Oracle RAC database
without downtime or disruption
http://p.sf.net/sfu/oracle-sfdevnl
_______________________________________________
tmux-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tmux-users