mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 00:56:10 +00:00 
			
		
		
		
	Move common code from show-options and show-window-options into a function.
This commit is contained in:
		@@ -46,9 +46,9 @@ cmd_show_options_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
				
			|||||||
	struct cmd_target_data		*data = self->data;
 | 
						struct cmd_target_data		*data = self->data;
 | 
				
			||||||
	struct session			*s;
 | 
						struct session			*s;
 | 
				
			||||||
	struct options			*oo;
 | 
						struct options			*oo;
 | 
				
			||||||
 | 
						struct options_entry		*o;
 | 
				
			||||||
	const struct set_option_entry   *entry;
 | 
						const struct set_option_entry   *entry;
 | 
				
			||||||
	char				*vs;
 | 
						const char			*optval;
 | 
				
			||||||
	long long			 vn;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (data->chflags & CMD_CHFLAG('g'))
 | 
						if (data->chflags & CMD_CHFLAG('g'))
 | 
				
			||||||
		oo = &global_s_options;
 | 
							oo = &global_s_options;
 | 
				
			||||||
@@ -59,46 +59,10 @@ cmd_show_options_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for (entry = set_option_table; entry->name != NULL; entry++) {
 | 
						for (entry = set_option_table; entry->name != NULL; entry++) {
 | 
				
			||||||
		if (options_find1(oo, entry->name) == NULL)
 | 
							if ((o = options_find1(oo, entry->name)) == NULL)
 | 
				
			||||||
			continue;
 | 
								continue;
 | 
				
			||||||
 | 
							optval = set_option_print(entry, o);
 | 
				
			||||||
		switch (entry->type) {
 | 
							ctx->print(ctx, "%s %s", entry->name, optval);
 | 
				
			||||||
		case SET_OPTION_STRING:
 | 
					 | 
				
			||||||
			vs = options_get_string(oo, entry->name);
 | 
					 | 
				
			||||||
			ctx->print(ctx, "%s \"%s\"", entry->name, vs);
 | 
					 | 
				
			||||||
			break;
 | 
					 | 
				
			||||||
		case SET_OPTION_NUMBER:
 | 
					 | 
				
			||||||
			vn = options_get_number(oo, entry->name);
 | 
					 | 
				
			||||||
			ctx->print(ctx, "%s %lld", entry->name, vn);
 | 
					 | 
				
			||||||
			break;
 | 
					 | 
				
			||||||
		case SET_OPTION_KEY:
 | 
					 | 
				
			||||||
			vn = options_get_number(oo, entry->name);
 | 
					 | 
				
			||||||
 			ctx->print(ctx, "%s %s",
 | 
					 | 
				
			||||||
			    entry->name, key_string_lookup_key(vn));
 | 
					 | 
				
			||||||
			break;
 | 
					 | 
				
			||||||
		case SET_OPTION_COLOUR:
 | 
					 | 
				
			||||||
			vn = options_get_number(oo, entry->name);
 | 
					 | 
				
			||||||
 			ctx->print(ctx, "%s %s",
 | 
					 | 
				
			||||||
			    entry->name, colour_tostring(vn));
 | 
					 | 
				
			||||||
			break;
 | 
					 | 
				
			||||||
		case SET_OPTION_ATTRIBUTES:
 | 
					 | 
				
			||||||
			vn = options_get_number(oo, entry->name);
 | 
					 | 
				
			||||||
 			ctx->print(ctx, "%s %s",
 | 
					 | 
				
			||||||
			    entry->name, attributes_tostring(vn));
 | 
					 | 
				
			||||||
			break;
 | 
					 | 
				
			||||||
		case SET_OPTION_FLAG:
 | 
					 | 
				
			||||||
			vn = options_get_number(oo, entry->name);
 | 
					 | 
				
			||||||
			if (vn)
 | 
					 | 
				
			||||||
				ctx->print(ctx, "%s on", entry->name);
 | 
					 | 
				
			||||||
			else
 | 
					 | 
				
			||||||
				ctx->print(ctx, "%s off", entry->name);
 | 
					 | 
				
			||||||
			break;
 | 
					 | 
				
			||||||
		case SET_OPTION_CHOICE:
 | 
					 | 
				
			||||||
			vn = options_get_number(oo, entry->name);
 | 
					 | 
				
			||||||
			ctx->print(ctx, "%s %s",
 | 
					 | 
				
			||||||
			    entry->name, entry->choices[vn]);
 | 
					 | 
				
			||||||
			break;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return (0);
 | 
						return (0);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -46,9 +46,9 @@ cmd_show_window_options_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
				
			|||||||
	struct cmd_target_data		*data = self->data;
 | 
						struct cmd_target_data		*data = self->data;
 | 
				
			||||||
	struct winlink			*wl;
 | 
						struct winlink			*wl;
 | 
				
			||||||
	struct options			*oo;
 | 
						struct options			*oo;
 | 
				
			||||||
 | 
						struct options_entry		*o;
 | 
				
			||||||
	const struct set_option_entry	*entry;
 | 
						const struct set_option_entry	*entry;
 | 
				
			||||||
	char				*vs;
 | 
						const char			*optval;
 | 
				
			||||||
	long long			 vn;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (data->chflags & CMD_CHFLAG('g'))
 | 
						if (data->chflags & CMD_CHFLAG('g'))
 | 
				
			||||||
		oo = &global_w_options;
 | 
							oo = &global_w_options;
 | 
				
			||||||
@@ -59,46 +59,10 @@ cmd_show_window_options_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for (entry = set_window_option_table; entry->name != NULL; entry++) {
 | 
						for (entry = set_window_option_table; entry->name != NULL; entry++) {
 | 
				
			||||||
		if (options_find1(oo, entry->name) == NULL)
 | 
							if ((o = options_find1(oo, entry->name)) == NULL)
 | 
				
			||||||
			continue;
 | 
								continue;
 | 
				
			||||||
 | 
							optval = set_option_print(entry, o);
 | 
				
			||||||
		switch (entry->type) {
 | 
							ctx->print(ctx, "%s %s", entry->name, optval);
 | 
				
			||||||
		case SET_OPTION_STRING:
 | 
					 | 
				
			||||||
			vs = options_get_string(oo, entry->name);
 | 
					 | 
				
			||||||
			ctx->print(ctx, "%s \"%s\"", entry->name, vs);
 | 
					 | 
				
			||||||
			break;
 | 
					 | 
				
			||||||
		case SET_OPTION_NUMBER:
 | 
					 | 
				
			||||||
			vn = options_get_number(oo, entry->name);
 | 
					 | 
				
			||||||
			ctx->print(ctx, "%s %lld", entry->name, vn);
 | 
					 | 
				
			||||||
			break;
 | 
					 | 
				
			||||||
		case SET_OPTION_KEY:
 | 
					 | 
				
			||||||
			vn = options_get_number(oo, entry->name);
 | 
					 | 
				
			||||||
 			ctx->print(ctx, "%s %s",
 | 
					 | 
				
			||||||
			    entry->name, key_string_lookup_key(vn));
 | 
					 | 
				
			||||||
			break;
 | 
					 | 
				
			||||||
		case SET_OPTION_COLOUR:
 | 
					 | 
				
			||||||
			vn = options_get_number(oo, entry->name);
 | 
					 | 
				
			||||||
 			ctx->print(ctx, "%s %s",
 | 
					 | 
				
			||||||
			    entry->name, colour_tostring(vn));
 | 
					 | 
				
			||||||
			break;
 | 
					 | 
				
			||||||
		case SET_OPTION_ATTRIBUTES:
 | 
					 | 
				
			||||||
			vn = options_get_number(oo, entry->name);
 | 
					 | 
				
			||||||
 			ctx->print(ctx, "%s %s",
 | 
					 | 
				
			||||||
			    entry->name, attributes_tostring(vn));
 | 
					 | 
				
			||||||
			break;
 | 
					 | 
				
			||||||
		case SET_OPTION_FLAG:
 | 
					 | 
				
			||||||
			vn = options_get_number(oo, entry->name);
 | 
					 | 
				
			||||||
			if (vn)
 | 
					 | 
				
			||||||
				ctx->print(ctx, "%s on", entry->name);
 | 
					 | 
				
			||||||
			else
 | 
					 | 
				
			||||||
				ctx->print(ctx, "%s off", entry->name);
 | 
					 | 
				
			||||||
			break;
 | 
					 | 
				
			||||||
		case SET_OPTION_CHOICE:
 | 
					 | 
				
			||||||
			vn = options_get_number(oo, entry->name);
 | 
					 | 
				
			||||||
			ctx->print(ctx, "%s %s",
 | 
					 | 
				
			||||||
			    entry->name, entry->choices[vn]);
 | 
					 | 
				
			||||||
			break;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return (0);
 | 
						return (0);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,6 +23,46 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "tmux.h"
 | 
					#include "tmux.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const char *
 | 
				
			||||||
 | 
					set_option_print(const struct set_option_entry *entry, struct options_entry *o)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						static char	out[BUFSIZ];
 | 
				
			||||||
 | 
						const char     *s;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						*out = '\0';
 | 
				
			||||||
 | 
						switch (entry->type) {
 | 
				
			||||||
 | 
							case SET_OPTION_STRING:
 | 
				
			||||||
 | 
								xsnprintf(out, sizeof out, "\"%s\"", o->str);
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
							case SET_OPTION_NUMBER:
 | 
				
			||||||
 | 
								xsnprintf(out, sizeof out, "%lld", o->num);
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
							case SET_OPTION_KEY:
 | 
				
			||||||
 | 
								s = key_string_lookup_key(o->num);
 | 
				
			||||||
 | 
								xsnprintf(out, sizeof out, "%s", s);
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
							case SET_OPTION_COLOUR:
 | 
				
			||||||
 | 
								s = colour_tostring(o->num);
 | 
				
			||||||
 | 
								xsnprintf(out, sizeof out, "%s", s);
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
							case SET_OPTION_ATTRIBUTES:
 | 
				
			||||||
 | 
								s = attributes_tostring(o->num);
 | 
				
			||||||
 | 
								xsnprintf(out, sizeof out, "%s", s);
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
							case SET_OPTION_FLAG:
 | 
				
			||||||
 | 
								if (o->num)
 | 
				
			||||||
 | 
									strlcpy(out, "on", sizeof out);
 | 
				
			||||||
 | 
								else
 | 
				
			||||||
 | 
									strlcpy(out, "off", sizeof out);
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
							case SET_OPTION_CHOICE:
 | 
				
			||||||
 | 
								s = entry->choices[o->num];
 | 
				
			||||||
 | 
								xsnprintf(out, sizeof out, "%s", s);
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return (out);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void
 | 
					void
 | 
				
			||||||
set_option_string(struct cmd_ctx *ctx, struct options *oo,
 | 
					set_option_string(struct cmd_ctx *ctx, struct options *oo,
 | 
				
			||||||
    const struct set_option_entry *entry, char *value, int append)
 | 
					    const struct set_option_entry *entry, char *value, int append)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								tmux.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								tmux.h
									
									
									
									
									
								
							@@ -1238,6 +1238,8 @@ void	tty_keys_free(struct tty *);
 | 
				
			|||||||
int	tty_keys_next(struct tty *, int *, u_char *);
 | 
					int	tty_keys_next(struct tty *, int *, u_char *);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* options-cmd.c */
 | 
					/* options-cmd.c */
 | 
				
			||||||
 | 
					const char *set_option_print(
 | 
				
			||||||
 | 
					    	    const struct set_option_entry *, struct options_entry *);
 | 
				
			||||||
void	set_option_string(struct cmd_ctx *,
 | 
					void	set_option_string(struct cmd_ctx *,
 | 
				
			||||||
	    struct options *, const struct set_option_entry *, char *, int);
 | 
						    struct options *, const struct set_option_entry *, char *, int);
 | 
				
			||||||
void	set_option_number(struct cmd_ctx *,
 | 
					void	set_option_number(struct cmd_ctx *,
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user