mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 09:26:05 +00:00 
			
		
		
		
	Sync OpenBSD patchset 1031:
Use format for display-message, based on a diff from George Nachman.
This commit is contained in:
		@@ -30,8 +30,8 @@ int	cmd_display_message_exec(struct cmd *, struct cmd_ctx *);
 | 
			
		||||
 | 
			
		||||
const struct cmd_entry cmd_display_message_entry = {
 | 
			
		||||
	"display-message", "display",
 | 
			
		||||
	"c:pt:", 0, 1,
 | 
			
		||||
	"[-p] [-c target-client] [-t target-pane] [message]",
 | 
			
		||||
	"c:pt:F:", 0, 1,
 | 
			
		||||
	"[-p] [-c target-client] [-t target-pane] [-F format] [message]",
 | 
			
		||||
	0,
 | 
			
		||||
	NULL,
 | 
			
		||||
	NULL,
 | 
			
		||||
@@ -48,26 +48,44 @@ cmd_display_message_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
			
		||||
	struct window_pane	*wp;
 | 
			
		||||
	const char		*template;
 | 
			
		||||
	char			*msg;
 | 
			
		||||
	struct format_tree	*ft;
 | 
			
		||||
	char			 out[BUFSIZ];
 | 
			
		||||
	time_t			 t;
 | 
			
		||||
 | 
			
		||||
	if ((c = cmd_find_client(ctx, args_get(args, 'c'))) == NULL)
 | 
			
		||||
		return (-1);
 | 
			
		||||
 | 
			
		||||
	if (args_has(args, 't') != 0) {
 | 
			
		||||
	if (args_has(args, 't')) {
 | 
			
		||||
		wl = cmd_find_pane(ctx, args_get(args, 't'), &s, &wp);
 | 
			
		||||
		if (wl == NULL)
 | 
			
		||||
			return (-1);
 | 
			
		||||
	} else {
 | 
			
		||||
		s = NULL;
 | 
			
		||||
		wl = NULL;
 | 
			
		||||
		wp = NULL;
 | 
			
		||||
		wl = cmd_find_pane(ctx, NULL, &s, &wp);
 | 
			
		||||
		if (wl == NULL)
 | 
			
		||||
			return (-1);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (args->argc == 0)
 | 
			
		||||
		template = "[#S] #I:#W, current pane #P - (%H:%M %d-%b-%y)";
 | 
			
		||||
	else
 | 
			
		||||
		template = args->argv[0];
 | 
			
		||||
	if (args_has(args, 'F') && args->argc != 0) {
 | 
			
		||||
		ctx->error(ctx, "only one of -F or argument must be given");
 | 
			
		||||
		return (-1);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	msg = status_replace(c, s, wl, wp, template, time(NULL), 0);
 | 
			
		||||
	template = args_get(args, 'F');
 | 
			
		||||
	if (args->argc != 0)
 | 
			
		||||
		template = args->argv[0];
 | 
			
		||||
	if (template == NULL)
 | 
			
		||||
		template = "[#S] #I:#W, current pane #P - (%H:%M %d-%b-%y)";
 | 
			
		||||
 | 
			
		||||
	ft = format_create();
 | 
			
		||||
	format_client(ft, c);
 | 
			
		||||
	format_session(ft, s);
 | 
			
		||||
	format_winlink(ft, s, wl);
 | 
			
		||||
	format_window_pane(ft, wp);
 | 
			
		||||
 | 
			
		||||
	t = time(NULL);
 | 
			
		||||
	strftime(out, sizeof out, template, localtime(&t));
 | 
			
		||||
 | 
			
		||||
	msg = format_expand(ft, out);
 | 
			
		||||
	if (args_has(self->args, 'p'))
 | 
			
		||||
		ctx->print(ctx, "%s", msg);
 | 
			
		||||
	else
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								tmux.1
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								tmux.1
									
									
									
									
									
								
							@@ -2994,9 +2994,9 @@ is given, the output is printed to stdout, otherwise it is displayed in the
 | 
			
		||||
status line.
 | 
			
		||||
The format of
 | 
			
		||||
.Ar message
 | 
			
		||||
is as for
 | 
			
		||||
.Ic status-left ,
 | 
			
		||||
with the exception that #() are not handled; information is taken from
 | 
			
		||||
is described in the
 | 
			
		||||
.Sx FORMATS
 | 
			
		||||
section; information is taken from
 | 
			
		||||
.Ar target-pane
 | 
			
		||||
if
 | 
			
		||||
.Fl t
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user