mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 09:26:05 +00:00 
			
		
		
		
	Add a function to create window flags rather than doing the same thing
in two places. From Thomas Adam.
This commit is contained in:
		@@ -57,7 +57,7 @@ cmd_choose_window_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
			
		||||
	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, struct cmd_ctx *ctx)
 | 
			
		||||
			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, struct cmd_ctx *ctx)
 | 
			
		||||
			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);
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										17
									
								
								status.c
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								status.c
									
									
									
									
									
								
							@@ -393,21 +393,8 @@ status_replace1(struct client *c,struct winlink *wl,
 | 
			
		||||
		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 '[':
 | 
			
		||||
		/*
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								tmux.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								tmux.h
									
									
									
									
									
								
							@@ -1898,6 +1898,8 @@ void		 window_pane_mouse(struct window_pane *,
 | 
			
		||||
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 *);
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										26
									
								
								window.c
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								window.c
									
									
									
									
									
								
							@@ -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)
 | 
			
		||||
{
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user