summaryrefslogtreecommitdiff
path: root/lib-src
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2021-06-10 16:55:04 +0300
committerEli Zaretskii <eliz@gnu.org>2021-06-10 16:57:03 +0300
commitaf4cccb8d98516ae96a3ebdc9a9eb7d7d8d5c1c5 (patch)
treecfc7462c073e3726b7dfdd112fa7a768fb92ec82 /lib-src
parente27b531d5a61e37d5e7d453663f3ec1a08a76fb9 (diff)
downloademacs-af4cccb8d98516ae96a3ebdc9a9eb7d7d8d5c1c5.tar.gz
Support mercury in 'ctags' as well
The previous lack of support was due to incorrect calls to 'make_tag' in 'mercury_pr', which caused 'pfnote' to refrain from adding Mercury tags to the list of recorded tags. * lib-src/etags.c (mercury_pr): Pass the correct NAME and NAMELEN arguments to 'make_tag'. * test/manual/etags/CTAGS.good: Adjust to the above change.
Diffstat (limited to 'lib-src')
-rw-r--r--lib-src/etags.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/lib-src/etags.c b/lib-src/etags.c
index e5bd36c782f..9f20e44caf4 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -6399,7 +6399,7 @@ mercury_decl (char *s, size_t pos)
{
if (strcmp (buf, "pred") != 0 && strcmp (buf, "func") != 0) /* Bad syntax. */
return 0;
- is_mercury_quantifier = false; /* Beset to base value. */
+ is_mercury_quantifier = false; /* Reset to base value. */
found_decl_tag = true;
}
else
@@ -6530,7 +6530,7 @@ mercury_pr (char *s, char *last, ptrdiff_t lastlen)
len0 = skip_spaces (s + 2) - s;
}
- size_t len = mercury_decl (s , len0);
+ size_t len = mercury_decl (s, len0);
if (len == 0) return 0;
len += len0;
@@ -6545,7 +6545,22 @@ mercury_pr (char *s, char *last, ptrdiff_t lastlen)
the first line. */
|| is_mercury_type)
{
- make_tag (s, 0, true, s, len, lineno, linecharno);
+ char *name = skip_non_spaces (s + len0);
+ size_t namelen;
+ if (name >= s + len)
+ {
+ name = s;
+ namelen = len;
+ }
+ else
+ {
+ name = skip_spaces (name);
+ namelen = len - (name - s);
+ }
+ /* Remove trailing non-name characters. */
+ while (namelen > 0 && notinname (name[namelen - 1]))
+ namelen--;
+ make_tag (name, namelen, true, s, len, lineno, linecharno);
return len;
}