diff options
author | Eli Zaretskii <eliz@gnu.org> | 2015-11-28 12:29:18 +0200 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2015-11-28 12:29:18 +0200 |
commit | 690ccf0f0d9c609b809ff3d10475f259748e4773 (patch) | |
tree | 1711189bcb2dff376cb234e1ed852cda40349ade | |
parent | 24703a0a89746feb3597d0ac2de65f0fabb7a2bc (diff) | |
download | emacs-690ccf0f0d9c609b809ff3d10475f259748e4773.tar.gz |
Fix Lua tags when a function name includes '.' or ':'
* lib-src/etags.c (Lua_functions): Add a tag for the last element
of a function name after a dot or a colon. (Bug#21934)
-rw-r--r-- | lib-src/etags.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/lib-src/etags.c b/lib-src/etags.c index 8b980d365ef..5f985b027b2 100644 --- a/lib-src/etags.c +++ b/lib-src/etags.c @@ -4954,7 +4954,22 @@ Lua_functions (FILE *inf) (void)LOOKING_AT (bp, "local"); /* skip possible "local" */ if (LOOKING_AT (bp, "function")) - get_tag (bp, NULL); + { + char *tag_name, *tp_dot, *tp_colon; + + get_tag (bp, &tag_name); + /* If the tag ends with ".foo" or ":foo", make an additional tag for + "foo". */ + tp_dot = strrchr (tag_name, '.'); + tp_colon = strrchr (tag_name, ':'); + if (tp_dot || tp_colon) + { + char *p = tp_dot > tp_colon ? tp_dot : tp_colon; + int len_add = p - tag_name + 1; + + get_tag (bp + len_add, NULL); + } + } } } |