mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 00:56:10 +00:00 
			
		
		
		
	Fix command prompt not to always append argument but only if there has
actually been expansion. GitHub issue 3493.
This commit is contained in:
		
							
								
								
									
										22
									
								
								arguments.c
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								arguments.c
									
									
									
									
									
								
							@@ -98,6 +98,22 @@ args_copy_value(struct args_value *to, struct args_value *from)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Type to string. */
 | 
			
		||||
static const char *
 | 
			
		||||
args_type_to_string (enum args_type type)
 | 
			
		||||
{
 | 
			
		||||
	switch (type)
 | 
			
		||||
	{
 | 
			
		||||
	case ARGS_NONE:
 | 
			
		||||
		return "NONE";
 | 
			
		||||
	case ARGS_STRING:
 | 
			
		||||
		return "STRING";
 | 
			
		||||
	case ARGS_COMMANDS:
 | 
			
		||||
		return "COMMANDS";
 | 
			
		||||
	}
 | 
			
		||||
	return "INVALID";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Get value as string. */
 | 
			
		||||
static const char *
 | 
			
		||||
args_value_as_string(struct args_value *value)
 | 
			
		||||
@@ -250,8 +266,8 @@ args_parse(const struct args_parse *parse, struct args_value *values,
 | 
			
		||||
			value = &values[i];
 | 
			
		||||
 | 
			
		||||
			s = args_value_as_string(value);
 | 
			
		||||
			log_debug("%s: %u = %s (type %d)", __func__, i, s,
 | 
			
		||||
			    value->type);
 | 
			
		||||
			log_debug("%s: %u = %s (type %s)", __func__, i, s,
 | 
			
		||||
			    args_type_to_string (value->type));
 | 
			
		||||
 | 
			
		||||
			if (parse->cb != NULL) {
 | 
			
		||||
				type = parse->cb(args, args->count, cause);
 | 
			
		||||
@@ -796,6 +812,8 @@ args_make_commands(struct args_command_state *state, int argc, char **argv,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	cmd = xstrdup(state->cmd);
 | 
			
		||||
	log_debug("%s: %s", __func__, cmd);
 | 
			
		||||
	cmd_log_argv(argc, argv, __func__);
 | 
			
		||||
	for (i = 0; i < argc; i++) {
 | 
			
		||||
		new_cmd = cmd_template_replace(cmd, argv[i], i + 1);
 | 
			
		||||
		log_debug("%s: %%%u %s: %s", __func__, i + 1, argv[i], new_cmd);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user