mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 09:26:05 +00:00 
			
		
		
		
	Expand name before looking for window with -S, GitHub issue 3670.
This commit is contained in:
		@@ -60,7 +60,7 @@ cmd_new_window_exec(struct cmd *self, struct cmdq_item *item)
 | 
				
			|||||||
	struct session		*s = target->s;
 | 
						struct session		*s = target->s;
 | 
				
			||||||
	struct winlink		*wl = target->wl, *new_wl = NULL;
 | 
						struct winlink		*wl = target->wl, *new_wl = NULL;
 | 
				
			||||||
	int			 idx = target->idx, before;
 | 
						int			 idx = target->idx, before;
 | 
				
			||||||
	char			*cause = NULL, *cp;
 | 
						char			*cause = NULL, *cp, *expanded;
 | 
				
			||||||
	const char		*template, *name;
 | 
						const char		*template, *name;
 | 
				
			||||||
	struct cmd_find_state	 fs;
 | 
						struct cmd_find_state	 fs;
 | 
				
			||||||
	struct args_value	*av;
 | 
						struct args_value	*av;
 | 
				
			||||||
@@ -71,16 +71,19 @@ cmd_new_window_exec(struct cmd *self, struct cmdq_item *item)
 | 
				
			|||||||
	 */
 | 
						 */
 | 
				
			||||||
	name = args_get(args, 'n');
 | 
						name = args_get(args, 'n');
 | 
				
			||||||
	if (args_has(args, 'S') && name != NULL && target->idx == -1) {
 | 
						if (args_has(args, 'S') && name != NULL && target->idx == -1) {
 | 
				
			||||||
 | 
							expanded = format_single(item, name, c, s, NULL, NULL);
 | 
				
			||||||
		RB_FOREACH(wl, winlinks, &s->windows) {
 | 
							RB_FOREACH(wl, winlinks, &s->windows) {
 | 
				
			||||||
			if (strcmp(wl->window->name, name) != 0)
 | 
								if (strcmp(wl->window->name, expanded) != 0)
 | 
				
			||||||
				continue;
 | 
									continue;
 | 
				
			||||||
			if (new_wl == NULL) {
 | 
								if (new_wl == NULL) {
 | 
				
			||||||
				new_wl = wl;
 | 
									new_wl = wl;
 | 
				
			||||||
				continue;
 | 
									continue;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			cmdq_error(item, "multiple windows named %s", name);
 | 
								cmdq_error(item, "multiple windows named %s", name);
 | 
				
			||||||
 | 
								free(expanded);
 | 
				
			||||||
			return (CMD_RETURN_ERROR);
 | 
								return (CMD_RETURN_ERROR);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
							free(expanded);
 | 
				
			||||||
		if (new_wl != NULL) {
 | 
							if (new_wl != NULL) {
 | 
				
			||||||
			if (args_has(args, 'd'))
 | 
								if (args_has(args, 'd'))
 | 
				
			||||||
				return (CMD_RETURN_NORMAL);
 | 
									return (CMD_RETURN_NORMAL);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user