161 |
|
|
162 |
(defvar perl-imenu-generic-expression |
(defvar perl-imenu-generic-expression |
163 |
'(;; Functions |
'(;; Functions |
164 |
(nil "^sub\\s-+\\([-A-Za-z0-9+_:]+\\)\\(\\s-\\|\n\\)*{" 1 ) |
(nil "^sub\\s-+\\([-A-Za-z0-9+_:]+\\)" 1) |
165 |
;;Variables |
;;Variables |
166 |
("Variables" "^\\([$@%][-A-Za-z0-9+_:]+\\)\\s-*=" 1 ) |
("Variables" "^\\([$@%][-A-Za-z0-9+_:]+\\)\\s-*=" 1) |
167 |
("Packages" "^package\\s-+\\([-A-Za-z0-9+_:]+\\);" 1 )) |
("Packages" "^package\\s-+\\([-A-Za-z0-9+_:]+\\);" 1) |
168 |
|
("Doc sections" "^=head[0-9][ \t]+\\(.*\\)" 1)) |
169 |
"Imenu generic expression for Perl mode. See `imenu-generic-expression'.") |
"Imenu generic expression for Perl mode. See `imenu-generic-expression'.") |
170 |
|
|
171 |
;; Regexps updated with help from Tom Tromey <tromey@cambric.colorado.edu> and |
;; Regexps updated with help from Tom Tromey <tromey@cambric.colorado.edu> and |
412 |
(defcustom perl-nochange ";?#\\|\f\\|\\s(\\|\\(\\w\\|\\s_\\)+:[^:]" |
(defcustom perl-nochange ";?#\\|\f\\|\\s(\\|\\(\\w\\|\\s_\\)+:[^:]" |
413 |
"*Lines starting with this regular expression are not auto-indented." |
"*Lines starting with this regular expression are not auto-indented." |
414 |
:type 'regexp) |
:type 'regexp) |
415 |
|
|
416 |
|
;; Outline support |
417 |
|
|
418 |
|
(defvar perl-outline-regexp |
419 |
|
(concat (mapconcat 'cadr perl-imenu-generic-expression "\\|") |
420 |
|
"\\|^=cut\\>")) |
421 |
|
|
422 |
|
(defun perl-outline-level () |
423 |
|
(cond |
424 |
|
((looking-at "package\\s-") 0) |
425 |
|
((looking-at "sub\\s-") 1) |
426 |
|
((looking-at "=head[0-9]") (- (char-before (match-end 0)) ?0)) |
427 |
|
((looking-at "=cut") 1) |
428 |
|
(t 3))) |
429 |
|
|
430 |
;;;###autoload |
;;;###autoload |
431 |
(defun perl-mode () |
(defun perl-mode () |
513 |
. perl-font-lock-syntactic-face-function) |
. perl-font-lock-syntactic-face-function) |
514 |
(parse-sexp-lookup-properties . t))) |
(parse-sexp-lookup-properties . t))) |
515 |
;; Tell imenu how to handle Perl. |
;; Tell imenu how to handle Perl. |
516 |
(make-local-variable 'imenu-generic-expression) |
(set (make-local-variable 'imenu-generic-expression) |
517 |
(setq imenu-generic-expression perl-imenu-generic-expression) |
perl-imenu-generic-expression) |
518 |
(setq imenu-case-fold-search nil) |
(setq imenu-case-fold-search nil) |
519 |
|
;; Setup outline-minor-mode. |
520 |
|
(set (make-local-variable 'outline-regexp) perl-outline-regexp) |
521 |
|
(set (make-local-variable 'outline-level) 'perl-outline-level) |
522 |
(run-hooks 'perl-mode-hook)) |
(run-hooks 'perl-mode-hook)) |
523 |
|
|
524 |
;; This is used by indent-for-comment |
;; This is used by indent-for-comment |