mirror of
				https://github.com/tmux/tmux.git
				synced 2025-10-26 12:27:15 +00:00 
			
		
		
		
	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
									
									
									
									
									
								
							| @@ -2990,9 +2990,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
	 Nicholas Marriott
					Nicholas Marriott