]> git.eshelyaron.com Git - emacs.git/commit
cperl-mode: Improve detection of index entries for imenu
authorHarald Jörg <haj@posteo.de>
Tue, 16 Feb 2021 23:54:38 +0000 (00:54 +0100)
committerLars Ingebrigtsen <larsi@gnus.org>
Tue, 16 Feb 2021 23:54:38 +0000 (00:54 +0100)
commit7b2448ae6eaf4ae5f81f1a1b1b9f1b14735e90d6
tree68ef3f1c9b43cc016091885de06e8047069b0f76
parent64ef8ff74d3f111d2d71a22c2326fa4c974182ba
cperl-mode: Improve detection of index entries for imenu

* lisp/progmodes/cperl-mode.el
(cperl-imenu-addback): Customization variable deleted.  This
variable has been declared obsolete in 1998.
(cperl--basic-identifier-regexp) and many other variables:
defining regular expressions for basic Perl constructs.
(cperl-imenu--create-perl-index): This function has been
completely rewritten, keeping only some parts of the output
formatting.  It now recognizes a lot more package and
subroutine declarations which came since Perl 5.14: Packages
with a version and/or a block attached, lexical subroutines,
declarations with a newline between the keyword "package" and
the package name, and several more.  This version also
correctly separates subroutine names from attributes, does no
longer support "unnamed" packages (which don't exist in Perl),
and doesn't fall for false positives like stuff that looks
like a declaration in a multiline string.
(cperl-tags-hier-init): Eliminate call to
`cperl-imenu-addback` (which actually was commented out in
1997)

* test/lisp/progmodes/cperl-mode-tests.el
(cperl-test--validate-regexp) and six other new tests for the
new regular expressions and the index creation.

* test/lisp/progmodes/cperl-mode-resources/grammar.pl: New
file showcasing different syntax variations for package and
sub declarations (bug#46574).
lisp/progmodes/cperl-mode.el
test/lisp/progmodes/cperl-mode-resources/grammar.pl [new file with mode: 0644]
test/lisp/progmodes/cperl-mode-tests.el