This is the second (and preferred) source for color information. This
will override $LS_COLORS.
Helped-by: Michael Blume blume.m...@gmail.com
Signed-off-by: Nguyễn Thái Ngọc Duy pclo...@gmail.com
---
Documentation/config.txt | 11 +++
ls_colors.c | 30 +-
2 files changed, 40 insertions(+), 1 deletion(-)
diff --git a/Documentation/config.txt b/Documentation/config.txt
index 9220725..2090866 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -940,6 +940,17 @@ color.status.slot::
to red). The values of these variables may be specified as in
color.branch.slot.
+color.ls.slot::
+ Use customized color for file name colorization. If not set
+ and the environment variable LS_COLORS is set, color settings
+ from $LS_COLORS are used. `slot` can be `normal`, `file`,
+ `directory`, `symlink`, `fifo`, `socket`, `block`, `char`,
+ `missing`, `orphan`, `executable`, `door`, `setuid`, `setgid`,
+ `sticky`, `otherwritable`, `stickyotherwritable`, `cap`,
+ `multihardlink`. The values of these variables may be
+ specified as in color.branch.slot.
+
+
color.ui::
This variable determines the default value for variables such
as `color.diff` and `color.grep` that control the use of color
diff --git a/ls_colors.c b/ls_colors.c
index e743315..2dc2d39 100644
--- a/ls_colors.c
+++ b/ls_colors.c
@@ -68,6 +68,14 @@ static const char *const indicator_name[] = {
NULL
};
+static const char * const config_name[] = {
+ , , , , normal, file, directory, symlink,
+ fifo, socket, block, char, missing, orphan, executable,
+ door, setuid, setgid, sticky, otherwritable,
+ stickyotherwritable, cap, multihardlink, ,
+ NULL
+};
+
struct bin_str {
size_t len; /* Number of bytes */
const char *string; /* Pointer to the same */
@@ -285,6 +293,23 @@ static int get_funky_string(char **dest, const char **src,
int equals_end,
return state != ST_ERROR;
}
+static int ls_colors_config(const char *var, const char *value, void *cb)
+{
+ int slot;
+ if (!starts_with(var, color.ls.))
+ return 0;
+ var += 9;
+ for (slot = 0; config_name[slot]; slot++)
+ if (!strcasecmp(var, config_name[slot]))
+ break;
+ if (!config_name[slot])
+ return 0;
+ if (!value)
+ return config_error_nonbool(var);
+ color_parse(value, ls_colors[slot]);
+ return 0;
+}
+
void parse_ls_color(void)
{
const char *p; /* Pointer to character being parsed */
@@ -297,8 +322,10 @@ void parse_ls_color(void)
char *start;
size_t len;
- if ((p = getenv(LS_COLORS)) == NULL || *p == '\0')
+ if ((p = getenv(LS_COLORS)) == NULL || *p == '\0') {
+ git_config(ls_colors_config, NULL);
return;
+ }
ext = NULL;
strcpy(label, ??);
@@ -395,4 +422,5 @@ void parse_ls_color(void)
if (!strcmp(ls_colors[LS_LN], target))
color_symlink_as_referent = 1;
+ git_config(ls_colors_config, NULL);
}
--
2.3.0.rc1.137.g477eb31
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html