Find attached a patch that adds --colour and GREP_COLORS support
(but -C is not supported anymore). It also replaces all instances
of "illegal" with "invalid" and fixes some typos with the new
--path_convert stuff. And I finally got rid of the blank line
between --match-part and -n in the global help (was it supposed to
separate the halves of the alphabet? even so, it looked really out
of place).
--
Jason.
diff -pur global-6.2.12/global/convert.c global-6.2-12/global/convert.c
--- global-6.2.12/global/convert.c 2014-03-31 14:45:05 +1000
+++ global-6.2-12/global/convert.c 2014-04-01 22:46:36 +1000
@@ -82,15 +82,33 @@ static void
set_color_method(void)
{
STATIC_STRBUF(sb);
- const char *sgr = getenv("GREP_COLOR");
+ const char *sgr = DEFAULT_COLOR;
+ const char *col = getenv("GREP_COLOR");
+ int len;
- if (sgr == NULL)
- sgr = DEFAULT_COLOR;
+ if (col != NULL)
+ sgr = col;
+ len = strlen(sgr);
+ col = getenv("GREP_COLORS");
+ if (col != NULL) {
+ const char *part = strstr(col, "mt=");
+ if (part == NULL)
+ part = strstr(col, "ms=");
+ if (part != NULL) {
+ const char *sep = strchr(part, ':');
+ if (sep == NULL)
+ sep = strchr(part, '\0');
+ if (sep[-1] != '=') {
+ sgr = part + 3;
+ len = sep - sgr;
+ }
+ }
+ }
strbuf_clear(sb);
/* begin coloring */
strbuf_putc(sb, ESC);
strbuf_putc(sb, '[');
- strbuf_puts(sb, sgr);
+ strbuf_nputs(sb, sgr, len);
strbuf_putc(sb, EOE);
/* tag name */
strbuf_putc(sb, '&');
@@ -207,7 +225,7 @@ set_color_tag(const char *pattern)
flags |= REG_ICASE;
/* compile the regular expression */
if (rewrite_pattern(rewrite, strbuf_value(sb), flags) < 0)
- die("illegal regular expression. '%s'", strbuf_value(sb));
+ die("invalid regular expression. '%s'", strbuf_value(sb));
}
/**
* set_print0: change newline to @CODE{'\0'}.
@@ -393,7 +411,7 @@ convert_put(CONVERT *cv, const char *cta
for (; *p && !isspace(*p); p++)
;
if (*p == '\0')
- die("illegal ctags-x format (line number not found).");
+ die("invalid ctags-x format (line number not found).");
tagnextp = p;
tagnextc = *p;
*p++ = '\0';
@@ -401,7 +419,7 @@ convert_put(CONVERT *cv, const char *cta
for (; *p && isspace(*p); p++)
;
if (*p == '\0')
- die("illegal ctags-x format (line number not found).");
+ die("invalid ctags-x format (line number not found).");
/*
* line number
*/
@@ -409,13 +427,13 @@ convert_put(CONVERT *cv, const char *cta
for (; *p && !isspace(*p); p++)
;
if (*p == '\0')
- die("illegal ctags-x format (path name not found).");
+ die("invalid ctags-x format (path name not found).");
*p++ = '\0';
/* skip blanks */
for (; *p && isspace(*p); p++)
;
if (*p == '\0')
- die("illegal ctags-x format (path name not found).");
+ die("invalid ctags-x format (path name not found).");
/*
* path name
*/
@@ -423,7 +441,7 @@ convert_put(CONVERT *cv, const char *cta
for (; *p && !isspace(*p); p++)
;
if (*p == '\0')
- die("illegal ctags-x format (line image not found).");
+ die("invalid ctags-x format (line image not found).");
*p++ = '\0';
rest = p;
}
diff -pur global-6.2.12/global/global.c global-6.2-12/global/global.c
--- global-6.2.12/global/global.c 2014-03-31 14:45:05 +1000
+++ global-6.2-12/global/global.c 2014-04-01 23:27:50 +1000
@@ -191,6 +191,7 @@ static struct option const long_options[
/* long name only */
{"color", optional_argument, NULL, USE_COLOR},
+ {"colour", optional_argument, NULL, USE_COLOR},
{"encode-path", required_argument, NULL, ENCODE_PATH},
{"from-here", required_argument, NULL, FROM_HERE},
{"debug", no_argument, &debug, 1},
@@ -358,7 +359,7 @@ main(int argc, char **argv)
int option_index = 0;
logging_arguments(argc, argv);
- while ((optchar = getopt_long(argc, argv,
"acCde:ifgGIlL:noOpPqrsS:tTuvVx", long_options, &option_index)) != EOF) {
+ while ((optchar = getopt_long(argc, argv,
"acde:ifgGIlL:noOpPqrsS:tTuvVx", long_options, &option_index)) != EOF) {
switch (optchar) {
case 0:
break;
@@ -602,7 +603,7 @@ main(int argc, char **argv)
* replace it with the relative or the absolute path name.
*
* By default, if we are in src/ directory, the output
- * should be converted like follws:
+ * should be converted like follows:
*
* main 10 ./src/main.c main(argc, argv)\n
* main 22 ./libc/func.c main(argc, argv)\n
@@ -610,7 +611,7 @@ main(int argc, char **argv)
* main 10 main.c main(argc, argv)\n
* main 22 ../libc/func.c main(argc, argv)\n
*
- * Similarly, the --path-covert=absolute option specified, then
+ * Similarly, the --path-convert=absolute option specified, then
* v
* main 10 /prj/xxx/src/main.c main(argc, argv)\n
* main 22 /prj/xxx/libc/func.c main(argc, argv)\n
@@ -620,7 +621,7 @@ main(int argc, char **argv)
char *ctags_x;
if (argc < 3)
- die("global --path-covert: 3 arguments needed.");
+ die("global --path-convert: 3 arguments needed.");
cv = convert_open(convert_type, FORMAT_CTAGS_X, argv[0],
argv[1], argv[2], stdout, NOTAGS);
while ((ctags_x = strbuf_fgets(ib, stdin, STRBUF_NOCRLF)) !=
NULL)
convert_put(cv, ctags_x);
@@ -864,7 +865,7 @@ main(int argc, char **argv)
type = PATH_RELATIVE;
abslib++;
} else
- die("illegal path style.");
+ die("invalid path style.");
}
/*
* exec lid(idutils).
@@ -1025,7 +1026,7 @@ completion_idutils(const char *dbpath, c
for (p = line; *p && *p != ' '; p++)
;
if (*p == '\0') {
- warning("Illegal line: %s", line);
+ warning("Invalid line: %s", line);
continue;
}
*p = '\0';
diff -pur global-6.2.12/global/manual.in global-6.2-12/global/manual.in
--- global-6.2.12/global/manual.in 2014-03-31 14:45:05 +1000
+++ global-6.2-12/global/manual.in 2014-04-01 23:21:02 +1000
@@ -95,12 +95,13 @@
@begin_itemize
@item{@option{-a}, @option{--absolute}}
Print absolute path names. By default, print relative path
names.
- @item{@option{--color} @arg{when}}
+ @item{@option{--color}, @option{--colour} @arg{when}}
Use color to highlight the pattern within the line; @arg{when}
may be one of:
@arg{never}, @arg{always} or @arg{auto} (default).
The default color is bold red text on current background; the
environment
- variable @var{GREP_COLOR} defines it.
- This option is effective to the following commands: <no
command>, -f, -g, -I, -P.
+ variable @var{GREP_COLORS} or @var{GREP_COLOR} defines it.
+ This option is effective to the following commands:
+ <no command>, -f, -g, -I, -P.
@item{@option{-d}, @option{--definition}}
Print locations of definitions.
@item{@option{-e}, @option{--regexp} @arg{pattern}}
@@ -133,7 +134,6 @@
Specify how path name completion should match, where @arg{part}
is one of:
@val{first}, @val{last} or @val{all} (default).
This option is valid only with the @option{-c} command in
conjunction with @option{-P}.
-
@item{@option{-n}, @option{--nofilter}}
Suppress sort filter and path conversion filter.
@item{@option{-O}, @option{--only-other}}
@@ -242,7 +242,9 @@
@begin_itemize
@item{@var{GREP_COLOR}}
- The color to use for @option{--color}.
+ The color to use for @option{--color}; @var{GREP_COLORS} has
precedence.
+ @item{@var{GREP_COLORS}}
+ The color (@arg{mt} or @arg{ms}) to use for @option{--color};
see @xref{grep,1}.
@item{@var{GTAGSBLANKENCODE}}
If this variable is set, the @option{--encode-path=" <TAB>"}
option is specified.
diff -pur global-6.2.12/global/output.c global-6.2-12/global/output.c
--- global-6.2.12/global/output.c 2014-03-31 14:45:05 +1000
+++ global-6.2-12/global/output.c 2014-04-01 21:34:35 +1000
@@ -142,7 +142,7 @@ put_compact_format(CONVERT *cv, GTP *gtp
* Unfold compact format.
*/
if (!isdigit(*p))
- die("illegal compact format.");
+ die("invalid compact format.");
if (flags & GTAGS_COMPLINE) {
/*
* If GTAGS_COMPLINE flag is set, each line number is expressed
as
diff -pur global-6.2.12/gozilla/gozilla.c global-6.2-12/gozilla/gozilla.c
--- global-6.2.12/gozilla/gozilla.c 2014-03-31 14:45:05 +1000
+++ global-6.2-12/gozilla/gozilla.c 2014-04-01 21:34:35 +1000
@@ -370,7 +370,7 @@ getdefinitionURL(const char *arg, const
die("cannot open '%s'.", path);
while ((p = strbuf_fgets(sb, fp, STRBUF_NOCRLF)) != NULL) {
if (split(p, 2, &ptable) != 2)
- die("illegal format.");
+ die("invalid format.");
if (!strcmp(arg, ptable.part[0].start)) {
status = 0;
break;
diff -pur global-6.2.12/gtags.pl global-6.2-12/gtags.pl
--- global-6.2.12/gtags.pl 2014-03-31 14:45:05 +1000
+++ global-6.2-12/gtags.pl 2014-04-01 21:34:35 +1000
@@ -252,7 +252,7 @@ sub parse_version {
#
# i) $v version
# i) $sv supported version
-# r) -1: illegal
+# r) -1: invalid
# 1: supported
# 0: not supported
#
diff -pur global-6.2.12/htags/anchor.c global-6.2-12/htags/anchor.c
--- global-6.2.12/htags/anchor.c 2014-03-31 14:45:05 +1000
+++ global-6.2-12/htags/anchor.c 2014-04-01 21:34:35 +1000
@@ -159,7 +159,7 @@ anchor_load(const char *path)
;
if (!*p) {
recover(&ptable);
- die("The output of parser is
illegal.\n%s", ctags_x);
+ die("The output of parser is
invalid.\n%s", ctags_x);
}
/*
* Function header is applied only to the
anchor whoes type is 'D'.
diff -pur global-6.2.12/htags/cflowindex.c global-6.2-12/htags/cflowindex.c
--- global-6.2.12/htags/cflowindex.c 2014-03-31 14:45:05 +1000
+++ global-6.2-12/htags/cflowindex.c 2014-04-01 21:34:35 +1000
@@ -42,7 +42,7 @@ makecflowindex(const char *output, const
STRBUF *input = strbuf_open(0);
FILE *ip, *op;
char *cflow_posix, *p;
- const char *m0 = "Gave up making call-tree because of illegal POSIX
cflow format.";
+ const char *m0 = "Gave up making call-tree because of invalid POSIX
cflow format.";
const char *m1 = "";
const char *title = locatestring(output, "callee", MATCH_AT_FIRST) ?
title_callee_tree : title_call_tree;
int line = 0;
diff -pur global-6.2.12/htags-refkit/htags_path2url.c
global-6.2-12/htags-refkit/htags_path2url.c
--- global-6.2.12/htags-refkit/htags_path2url.c 2014-03-31 14:45:05 +1000
+++ global-6.2-12/htags-refkit/htags_path2url.c 2014-04-01 21:34:35 +1000
@@ -135,7 +135,7 @@ cmp(const void *s1, const void *s2)
* @param[out] lines @a map lines
* @return 0: succesful <br>
* -1: out of memory. <br>
- * -5: illegal format.
+ * -5: invalid format.
*/
static int
create_filemap_index(char *area, int size, struct map **map, int *lines)
diff -pur global-6.2.12/libutil/abs2rel.c global-6.2-12/libutil/abs2rel.c
--- global-6.2.12/libutil/abs2rel.c 2014-03-31 14:45:06 +1000
+++ global-6.2-12/libutil/abs2rel.c 2014-04-01 21:34:35 +1000
@@ -381,7 +381,7 @@ abs2rel(const char *path, const char *ba
if (*pp == EOE)
pp++;
else
- die("illegal escape sequence in the path.
'%s'", path);
+ die("invalid escape sequence in the path.
'%s'", path);
}
#endif
if (*pp != *bp)
@@ -411,7 +411,7 @@ abs2rel(const char *path, const char *ba
if (*pp == EOE)
pp++;
else
- die("illegal escape sequence in the path. '%s'", path);
+ die("invalid escape sequence in the path. '%s'", path);
}
#endif
if ((*pp == 0 && *bp == '/') || (*pp == '/' && *bp == 0))
diff -pur global-6.2.12/libutil/args.c global-6.2-12/libutil/args.c
--- global-6.2.12/libutil/args.c 2014-03-31 14:45:06 +1000
+++ global-6.2-12/libutil/args.c 2014-04-01 21:34:35 +1000
@@ -133,7 +133,7 @@ args_read(void)
p = strbuf_fgets(sb, ip, STRBUF_NOCRLF);
break;
default:
- die("args_read: illegal type.");
+ die("args_read: invalid type.");
}
return p;
}
diff -pur global-6.2.12/libutil/dbop.c global-6.2-12/libutil/dbop.c
--- global-6.2.12/libutil/dbop.c 2014-03-31 14:45:06 +1000
+++ global-6.2-12/libutil/dbop.c 2014-04-01 21:34:35 +1000
@@ -656,7 +656,7 @@ dbop_getoption(DBOP *dbop, const char *k
if ((p = dbop_get(dbop, key)) == NULL)
return NULL;
if (dbop->lastsize <= strlen(key))
- die("illegal format (dbop_getoption).");
+ die("invalid format (dbop_getoption).");
for (p += strlen(key); *p && isspace((unsigned char)*p); p++)
;
strlimcpy(buf, p, sizeof(buf));
diff -pur global-6.2.12/libutil/gtagsop.c global-6.2-12/libutil/gtagsop.c
--- global-6.2.12/libutil/gtagsop.c 2014-03-31 14:45:06 +1000
+++ global-6.2-12/libutil/gtagsop.c 2014-04-01 21:41:02 +1000
@@ -741,7 +741,7 @@ gtags_first(GTOP *gtop, const char *patt
if (gtop->preg == NULL)
die("gtags_first: impossible (3).");
if (regcomp(gtop->preg, strbuf_value(regex), regflags) != 0)
- die("illegal regular expression.");
+ die("invalid regular expression.");
}
/*
* If GTOP_PATH is set, at first, we collect all path names in a pool
and
@@ -772,7 +772,7 @@ again0:
/* extract file id */
p = locatestring(tagline, " ", MATCH_FIRST);
if (p == NULL)
- die("Illegal tag record. '%s'\n", tagline);
+ die("Invalid tag record. '%s'\n", tagline);
*p = '\0';
entry = strhash_assign(gtop->path_hash, tagline, 1);
/* new entry: get path name and set. */
@@ -1132,7 +1132,7 @@ segment_read(GTOP *gtop)
gtp->path = sh->name;
lineno = seekto(gtp->tagline, SEEKTO_LINENO);
if (lineno == NULL)
- die("illegal tag record.\n%s", tagline);
+ die("invalid tag record.\n%s", tagline);
gtp->lineno = atoi(lineno);
}
/*
diff -pur global-6.2.12/libutil/rewrite.c global-6.2-12/libutil/rewrite.c
--- global-6.2.12/libutil/rewrite.c 2014-03-31 14:45:06 +1000
+++ global-6.2-12/libutil/rewrite.c 2014-04-01 21:34:35 +1000
@@ -58,7 +58,7 @@ rewrite_close(rewrite);
* @param[in] replace (allows '&')
* @param[in] flags for regcomp(3)
* @return rewrite #REWRITE structure
- * NULL: illegal regular expression
+ * NULL: invalid regular expression
*/
REWRITE *
rewrite_open(const char *pattern, const char *replace, int flags)
@@ -97,7 +97,7 @@ rewrite_open(const char *pattern, const
* @param[in] pattern
* @param[in] flags for regcomp(3)
* @return 0: normal
- * -1: illegal regular expression
+ * -1: invalid regular expression
*/
int
rewrite_pattern(REWRITE *rewrite, const char *pattern, int flags)
diff -pur global-6.2.12/libutil/split.c global-6.2-12/libutil/split.c
--- global-6.2.12/libutil/split.c 2014-03-31 14:45:06 +1000
+++ global-6.2-12/libutil/split.c 2014-04-01 21:34:35 +1000
@@ -185,7 +185,7 @@ parse_xid(const char *ctags_xid, char *s
s_fid[i++] = *p;
}
if (*p++ != ' ')
- die("illegal ctags-xid format record. '%s'", ctags_xid);
+ die("invalid ctags-xid format record. '%s'", ctags_xid);
if (s_fid)
s_fid[i] = '\0';
if (n_fid != NULL)
diff -pur global-6.2.12/libutil/varray.c global-6.2-12/libutil/varray.c
--- global-6.2.12/libutil/varray.c 2014-03-31 14:45:06 +1000
+++ global-6.2-12/libutil/varray.c 2014-04-01 21:34:35 +1000
@@ -118,7 +118,7 @@ void *
varray_assign(VARRAY *vb, int index, int force)
{
if (index < 0)
- die("varray_assign: illegal index value.");
+ die("varray_assign: invalid index value.");
if (index >= vb->length) {
if (force)
vb->length = index + 1;
_______________________________________________
Bug-global mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-global