aboutsummaryrefslogtreecommitdiffstats
path: root/lib-src
diff options
context:
space:
mode:
Diffstat (limited to 'lib-src')
-rw-r--r--lib-src/etags.c27
1 files changed, 21 insertions, 6 deletions
diff --git a/lib-src/etags.c b/lib-src/etags.c
index 182cb4cc876..e8e15769606 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -971,11 +971,12 @@ Relative ones are stored relative to the output file's directory.\n");
971 in some languages."); 971 in some languages.");
972 972
973 puts ("-Q, --class-qualify\n\ 973 puts ("-Q, --class-qualify\n\
974 Qualify tag names with their class name in C++, ObjC, and Java.\n\ 974 Qualify tag names with their class name in C++, ObjC, Java, and Perl.\n\
975 This produces tag names of the form \"class::member\" for C++,\n\ 975 This produces tag names of the form \"class::member\" for C++,\n\
976 \"class(category)\" for Objective C, and \"class.member\" for Java.\n\ 976 \"class(category)\" for Objective C, and \"class.member\" for Java.\n\
977 For Objective C, this also produces class methods qualified with\n\ 977 For Objective C, this also produces class methods qualified with\n\
978 their arguments, as in \"foo:bar:baz:more\"."); 978 their arguments, as in \"foo:bar:baz:more\".\n\
979 For Perl, this produces \"package::member\".");
979 puts ("-r REGEXP, --regex=REGEXP or --regex=@regexfile\n\ 980 puts ("-r REGEXP, --regex=REGEXP or --regex=@regexfile\n\
980 Make a tag for each line matching a regular expression pattern\n\ 981 Make a tag for each line matching a regular expression pattern\n\
981 in the following files. {LANGUAGE}REGEXP uses REGEXP for LANGUAGE\n\ 982 in the following files. {LANGUAGE}REGEXP uses REGEXP for LANGUAGE\n\
@@ -4534,10 +4535,21 @@ Perl_functions (FILE *inf)
4534 continue; /* nothing found */ 4535 continue; /* nothing found */
4535 pos = strchr (sp, ':'); 4536 pos = strchr (sp, ':');
4536 if (pos && pos < cp && pos[1] == ':') 4537 if (pos && pos < cp && pos[1] == ':')
4537 /* The name is already qualified. */ 4538 {
4538 make_tag (sp, cp - sp, true, 4539 /* The name is already qualified. */
4539 lb.buffer, cp - lb.buffer + 1, lineno, linecharno); 4540 if (!class_qualify)
4540 else 4541 {
4542 char *q = pos + 2, *qpos;
4543 while ((qpos = strchr (q, ':')) != NULL
4544 && qpos < cp
4545 && qpos[1] == ':')
4546 q = qpos + 2;
4547 sp = q;
4548 }
4549 make_tag (sp, cp - sp, true,
4550 lb.buffer, cp - lb.buffer + 1, lineno, linecharno);
4551 }
4552 else if (class_qualify)
4541 /* Qualify it. */ 4553 /* Qualify it. */
4542 { 4554 {
4543 char savechar, *name; 4555 char savechar, *name;
@@ -4550,6 +4562,9 @@ Perl_functions (FILE *inf)
4550 lb.buffer, cp - lb.buffer + 1, lineno, linecharno); 4562 lb.buffer, cp - lb.buffer + 1, lineno, linecharno);
4551 free (name); 4563 free (name);
4552 } 4564 }
4565 else
4566 make_tag (sp, cp - sp, true,
4567 lb.buffer, cp - lb.buffer + 1, lineno, linecharno);
4553 } 4568 }
4554 else if (LOOKING_AT (cp, "use constant") 4569 else if (LOOKING_AT (cp, "use constant")
4555 || LOOKING_AT (cp, "use constant::defer")) 4570 || LOOKING_AT (cp, "use constant::defer"))