;;; Details of groups in this are used in `cperl-imenu--create-perl-index' ;;; and `cperl-outline-level'. ;;;; Was: 2=sub|package; now 2=package-group, 5=package-name 8=sub-name (+3) (defvar cperl-imenu--function-name-regexp-perl (concat "^\\(" ; 1 = all "\\([ \t]*package" ; 2 = package-group "\\(" ; 3 = package-name-group cperl-white-and-comment-rex ; 4 = pre-package-name "\\([a-zA-Z_0-9:']+\\)\\)?\\)" ; 5 = package-name "\\|" "[ \t]*sub" (cperl-after-sub-regexp 'named nil) ; 8=name 11=proto 14=attr-start cperl-maybe-white-and-comment-rex ; 15=pre-block "\\|" "=head\\([1-4]\\)[ \t]+" ; 16=level "\\([^\n]+\\)$" ; 17=text "\\)")) (defvar cperl-outline-regexp (concat cperl-imenu--function-name-regexp-perl "\\|" "\\`")) ;; ... ;; Suggested by Mark A. Hershberger (defun cperl-outline-level () (looking-at outline-regexp) (cond ((not (match-beginning 1)) 0) ; beginning-of-file ;;;; 2=package-group, 5=package-name 8=sub-name 16=head-level ((match-beginning 2) 0) ; package ((match-beginning 8) 1) ; sub ((match-beginning 16) (- (char-after (match-beginning 16)) ?0)) ; headN ==> N (t 5))) ; should not happen