aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier2005-02-27 23:13:19 +0000
committerStefan Monnier2005-02-27 23:13:19 +0000
commit35c5f5d32f7449676262abe7333b3d12dc2bcbf9 (patch)
treec7a52f4b1e3575ea3a2b51ea7214792d897dd8f6
parentf43ae016822a121eee313180bc4788154f897b42 (diff)
downloademacs-35c5f5d32f7449676262abe7333b3d12dc2bcbf9.tar.gz
emacs-35c5f5d32f7449676262abe7333b3d12dc2bcbf9.zip
(perl-imenu-generic-expression): Add entries for perldoc sections.
(perl-outline-regexp, perl-outline-level): New var and function. (perl-mode): Use them.
-rw-r--r--lisp/ChangeLog7
-rw-r--r--lisp/progmodes/perl-mode.el28
2 files changed, 30 insertions, 5 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 716f6e5a42f..fe9f2fb1930 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,10 @@
12005-02-27 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * progmodes/perl-mode.el (perl-imenu-generic-expression): Add entries
4 for perldoc sections.
5 (perl-outline-regexp, perl-outline-level): New var and function.
6 (perl-mode): Use them.
7
12005-02-27 Glenn Morris <gmorris@ast.cam.ac.uk> 82005-02-27 Glenn Morris <gmorris@ast.cam.ac.uk>
2 9
3 * calendar/diary-lib.el (diary-remind): Discard any mark portion 10 * calendar/diary-lib.el (diary-remind): Discard any mark portion
diff --git a/lisp/progmodes/perl-mode.el b/lisp/progmodes/perl-mode.el
index eb630c2ed54..ad4633e20eb 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."
161 161
162(defvar perl-imenu-generic-expression 162(defvar perl-imenu-generic-expression
163 '(;; Functions 163 '(;; Functions
164 (nil "^sub\\s-+\\([-A-Za-z0-9+_:]+\\)\\(\\s-\\|\n\\)*{" 1 ) 164 (nil "^sub\\s-+\\([-A-Za-z0-9+_:]+\\)" 1)
165 ;;Variables 165 ;;Variables
166 ("Variables" "^\\([$@%][-A-Za-z0-9+_:]+\\)\\s-*=" 1 ) 166 ("Variables" "^\\([$@%][-A-Za-z0-9+_:]+\\)\\s-*=" 1)
167 ("Packages" "^package\\s-+\\([-A-Za-z0-9+_:]+\\);" 1 )) 167 ("Packages" "^package\\s-+\\([-A-Za-z0-9+_:]+\\);" 1)
168 ("Doc sections" "^=head[0-9][ \t]+\\(.*\\)" 1))
168 "Imenu generic expression for Perl mode. See `imenu-generic-expression'.") 169 "Imenu generic expression for Perl mode. See `imenu-generic-expression'.")
169 170
170;; Regexps updated with help from Tom Tromey <tromey@cambric.colorado.edu> and 171;; Regexps updated with help from Tom Tromey <tromey@cambric.colorado.edu> and
@@ -411,6 +412,20 @@ create a new comment."
411(defcustom perl-nochange ";?#\\|\f\\|\\s(\\|\\(\\w\\|\\s_\\)+:[^:]" 412(defcustom perl-nochange ";?#\\|\f\\|\\s(\\|\\(\\w\\|\\s_\\)+:[^:]"
412 "*Lines starting with this regular expression are not auto-indented." 413 "*Lines starting with this regular expression are not auto-indented."
413 :type 'regexp) 414 :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)))
414 429
415;;;###autoload 430;;;###autoload
416(defun perl-mode () 431(defun perl-mode ()
@@ -498,9 +513,12 @@ Turning on Perl mode runs the normal hook `perl-mode-hook'."
498 . perl-font-lock-syntactic-face-function) 513 . perl-font-lock-syntactic-face-function)
499 (parse-sexp-lookup-properties . t))) 514 (parse-sexp-lookup-properties . t)))
500 ;; Tell imenu how to handle Perl. 515 ;; Tell imenu how to handle Perl.
501 (make-local-variable 'imenu-generic-expression) 516 (set (make-local-variable 'imenu-generic-expression)
502 (setq imenu-generic-expression perl-imenu-generic-expression) 517 perl-imenu-generic-expression)
503 (setq imenu-case-fold-search nil) 518 (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)
504 (run-hooks 'perl-mode-hook)) 522 (run-hooks 'perl-mode-hook))
505 523
506;; This is used by indent-for-comment 524;; This is used by indent-for-comment