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 session			*s;
 | 
			
		||||
	struct options			*oo;
 | 
			
		||||
	struct options_entry		*o;
 | 
			
		||||
	const struct set_option_entry   *entry;
 | 
			
		||||
	char				*vs;
 | 
			
		||||
	long long			 vn;
 | 
			
		||||
	const char			*optval;
 | 
			
		||||
 | 
			
		||||
	if (data->chflags & CMD_CHFLAG('g'))
 | 
			
		||||
		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++) {
 | 
			
		||||
		if (options_find1(oo, entry->name) == NULL)
 | 
			
		||||
		if ((o = options_find1(oo, entry->name)) == NULL)
 | 
			
		||||
			continue;
 | 
			
		||||
 | 
			
		||||
		switch (entry->type) {
 | 
			
		||||
		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;
 | 
			
		||||
		}
 | 
			
		||||
		optval = set_option_print(entry, o);
 | 
			
		||||
		ctx->print(ctx, "%s %s", entry->name, optval);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	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 winlink			*wl;
 | 
			
		||||
	struct options			*oo;
 | 
			
		||||
	struct options_entry		*o;
 | 
			
		||||
	const struct set_option_entry	*entry;
 | 
			
		||||
	char				*vs;
 | 
			
		||||
	long long			 vn;
 | 
			
		||||
	const char			*optval;
 | 
			
		||||
 | 
			
		||||
	if (data->chflags & CMD_CHFLAG('g'))
 | 
			
		||||
		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++) {
 | 
			
		||||
		if (options_find1(oo, entry->name) == NULL)
 | 
			
		||||
		if ((o = options_find1(oo, entry->name)) == NULL)
 | 
			
		||||
			continue;
 | 
			
		||||
 | 
			
		||||
		switch (entry->type) {
 | 
			
		||||
		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;
 | 
			
		||||
		}
 | 
			
		||||
		optval = set_option_print(entry, o);
 | 
			
		||||
		ctx->print(ctx, "%s %s", entry->name, optval);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return (0);
 | 
			
		||||
 
 | 
			
		||||
@@ -23,6 +23,46 @@
 | 
			
		||||
 | 
			
		||||
#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
 | 
			
		||||
set_option_string(struct cmd_ctx *ctx, struct options *oo,
 | 
			
		||||
    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 *);
 | 
			
		||||
 | 
			
		||||
/* options-cmd.c */
 | 
			
		||||
const char *set_option_print(
 | 
			
		||||
    	    const struct set_option_entry *, struct options_entry *);
 | 
			
		||||
void	set_option_string(struct cmd_ctx *,
 | 
			
		||||
	    struct options *, const struct set_option_entry *, char *, int);
 | 
			
		||||
void	set_option_number(struct cmd_ctx *,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user