Esempio n. 1
0
static void
parse_git_color_option(enum line_type type, char *value)
{
	struct line_info *info = get_line_info(type);
	const char *argv[SIZEOF_ARG];
	int argc = 0;
	bool first_color = TRUE;
	int i;

	if (!argv_from_string(argv, &argc, value))
		return;

	info->fg = COLOR_DEFAULT;
	info->bg = COLOR_DEFAULT;
	info->attr = 0;

	for (i = 0; i < argc; i++) {
		int attr = 0;

		if (set_attribute(&attr, argv[i])) {
			info->attr |= attr;

		} else if (set_color(&attr, argv[i])) {
			if (first_color)
				info->fg = attr;
			else
				info->bg = attr;
			first_color = FALSE;
		}
	}
}
Esempio n. 2
0
File: options.c Progetto: zhez/tig
/* Wants: object fgcolor bgcolor [attribute] */
static enum status_code
option_color_command(int argc, const char *argv[])
{
	struct line_rule rule = {};
	const char *prefix = NULL;
	struct line_info *info;
	enum status_code code;

	if (argc < 3)
		return ERROR_WRONG_NUMBER_OF_ARGUMENTS;

	code = parse_color_name(argv[0], &rule, &prefix);
	if (code != SUCCESS)
		return code;

	info = add_line_rule(prefix, &rule);
	if (!info) {
		static const struct enum_map_entry obsolete[] = {
			ENUM_MAP_ENTRY("main-delim",	LINE_DELIMITER),
			ENUM_MAP_ENTRY("main-date",	LINE_DATE),
			ENUM_MAP_ENTRY("main-author",	LINE_AUTHOR),
			ENUM_MAP_ENTRY("blame-id",	LINE_ID),
		};
		int index;

		if (!map_enum(&index, obsolete, argv[0]))
			return ERROR_UNKNOWN_COLOR_NAME;
		info = get_line_info(NULL, index);
	}

	if (!set_color(&info->fg, argv[1]) ||
	    !set_color(&info->bg, argv[2]))
		return ERROR_UNKNOWN_COLOR;

	info->attr = 0;
	while (argc-- > 3) {
		int attr;

		if (!set_attribute(&attr, argv[argc]))
			return ERROR_UNKNOWN_ATTRIBUTE;
		info->attr |= attr;
	}

	return SUCCESS;
}
Esempio n. 3
0
/* Wants: object fgcolor bgcolor [attribute] */
static enum status_code
option_color_command(int argc, const char *argv[])
{
	struct line_info *info;

	if (argc < 3)
		return ERROR_WRONG_NUMBER_OF_ARGUMENTS;

	if (*argv[0] == '"' || *argv[0] == '\'') {
		info = add_custom_color(argv[0]);
	} else {
		info = find_line_info(argv[0], strlen(argv[0]), FALSE);
	}
	if (!info) {
		static const struct enum_map_entry obsolete[] = {
			ENUM_MAP_ENTRY("main-delim",	LINE_DELIMITER),
			ENUM_MAP_ENTRY("main-date",	LINE_DATE),
			ENUM_MAP_ENTRY("main-author",	LINE_AUTHOR),
			ENUM_MAP_ENTRY("blame-id",	LINE_ID),
		};
		int index;

		if (!map_enum(&index, obsolete, argv[0]))
			return ERROR_UNKNOWN_COLOR_NAME;
		info = get_line_info(index);
	}

	if (!set_color(&info->fg, argv[1]) ||
	    !set_color(&info->bg, argv[2]))
		return ERROR_UNKNOWN_COLOR;

	info->attr = 0;
	while (argc-- > 3) {
		int attr;

		if (!set_attribute(&attr, argv[argc]))
			return ERROR_UNKNOWN_ATTRIBUTE;
		info->attr |= attr;
	}

	return SUCCESS;
}