diff options
author | Miles Bader <[email protected]> | 2005-03-03 10:35:22 +0000 |
---|---|---|
committer | Miles Bader <[email protected]> | 2005-03-03 10:35:22 +0000 |
commit | dedb5504d3464bd50b6c591d36791c5535af68c1 (patch) | |
tree | 83ce1054c597d5e7c0d9be5dffd1d08dae2e330c /lisp/progmodes/perl-mode.el | |
parent | c638e2237cd90a294ed01ae2d29a51e25887bd43 (diff) | |
parent | 139c65cf7b6b0bce5f4cd6e45f450ff4f02d5421 (diff) |
Revision: [email protected]/emacs--unicode--0--patch-21
Merge from emacs--cvs-trunk--0
Patches applied:
* [email protected]/emacs--cvs-trunk--0 (patch 129-149)
- Update from CVS
- Merge from gnus--rel--5.10
- (make-text-button): Default button type if not specified
- quick-install-emacs: Use mkdir --verbose only when requested
* [email protected]/gnus--rel--5.10 (patch 31-33)
- Merge from emacs--cvs-trunk--0
- Update from CVS
Diffstat (limited to 'lisp/progmodes/perl-mode.el')
-rw-r--r-- | lisp/progmodes/perl-mode.el | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/lisp/progmodes/perl-mode.el b/lisp/progmodes/perl-mode.el index 4b2941bd96..63848b188b 100644 --- a/lisp/progmodes/perl-mode.el +++ b/lisp/progmodes/perl-mode.el @@ -161,10 +161,11 @@ The expansion is entirely correct because it uses the C preprocessor." (defvar perl-imenu-generic-expression '(;; Functions - (nil "^sub\\s-+\\([-A-Za-z0-9+_:]+\\)\\(\\s-\\|\n\\)*{" 1 ) + (nil "^sub\\s-+\\([-A-Za-z0-9+_:]+\\)" 1) ;;Variables - ("Variables" "^\\([$@%][-A-Za-z0-9+_:]+\\)\\s-*=" 1 ) - ("Packages" "^package\\s-+\\([-A-Za-z0-9+_:]+\\);" 1 )) + ("Variables" "^\\([$@%][-A-Za-z0-9+_:]+\\)\\s-*=" 1) + ("Packages" "^package\\s-+\\([-A-Za-z0-9+_:]+\\);" 1) + ("Doc sections" "^=head[0-9][ \t]+\\(.*\\)" 1)) "Imenu generic expression for Perl mode. See `imenu-generic-expression'.") ;; Regexps updated with help from Tom Tromey <[email protected]> and @@ -411,6 +412,20 @@ create a new comment." (defcustom perl-nochange ";?#\\|\f\\|\\s(\\|\\(\\w\\|\\s_\\)+:[^:]" "*Lines starting with this regular expression are not auto-indented." :type 'regexp) + +;; Outline support + +(defvar perl-outline-regexp + (concat (mapconcat 'cadr perl-imenu-generic-expression "\\|") + "\\|^=cut\\>")) + +(defun perl-outline-level () + (cond + ((looking-at "package\\s-") 0) + ((looking-at "sub\\s-") 1) + ((looking-at "=head[0-9]") (- (char-before (match-end 0)) ?0)) + ((looking-at "=cut") 1) + (t 3))) ;;;###autoload (defun perl-mode () @@ -498,9 +513,12 @@ Turning on Perl mode runs the normal hook `perl-mode-hook'." . perl-font-lock-syntactic-face-function) (parse-sexp-lookup-properties . t))) ;; Tell imenu how to handle Perl. - (make-local-variable 'imenu-generic-expression) - (setq imenu-generic-expression perl-imenu-generic-expression) + (set (make-local-variable 'imenu-generic-expression) + perl-imenu-generic-expression) (setq imenu-case-fold-search nil) + ;; Setup outline-minor-mode. + (set (make-local-variable 'outline-regexp) perl-outline-regexp) + (set (make-local-variable 'outline-level) 'perl-outline-level) (run-hooks 'perl-mode-hook)) ;; This is used by indent-for-comment |