X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/615a3b8d0d2c88cd664f1e0beb5a32b5b8e08f90..7cef3569a3d872ea5be07a529b68910bf1d8b790:/lisp/progmodes/cperl-mode.el diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el index 88193d4d3f..e1430b67e9 100644 --- a/lisp/progmodes/cperl-mode.el +++ b/lisp/progmodes/cperl-mode.el @@ -1,6 +1,6 @@ ;;; cperl-mode.el --- Perl code editing commands for Emacs -;; Copyright (C) 1985-1987, 1991-2011 Free Software Foundation, Inc. +;; Copyright (C) 1985-1987, 1991-2012 Free Software Foundation, Inc. ;; Author: Ilya Zakharevich ;; Bob Olson @@ -958,7 +958,7 @@ B) Speed of editing operations. `cperl-array-face' Array names `cperl-hash-face' Hash names `font-lock-comment-face' Comments, PODs and whatever is considered - syntaxically to be not code + syntactically to be not code `font-lock-constant-face' HERE-doc delimiters, labels, delimiters of 2-arg operators s/y/tr/ or of RExen, `font-lock-warning-face' Special-cased m// and s//foo/, @@ -970,7 +970,7 @@ B) Speed of editing operations. `cperl-nonoverridable-face' Non-overridable keywords, modifiers of RExen `font-lock-string-face' Strings, qw() constructs, RExen, POD sections, literal parts and the terminator of formats - and whatever is syntaxically considered + and whatever is syntactically considered as string literals `font-lock-type-face' Overridable keywords `font-lock-variable-name-face' Variable declarations, indirect array and @@ -1277,7 +1277,7 @@ versions of Emacs." "----" ["Ispell PODs" cperl-pod-spell ;; Better not to update syntaxification here: - ;; debugging syntaxificatio can be broken by this??? + ;; debugging syntaxification can be broken by this??? (or (get-text-property (point-min) 'in-pod) (< (progn @@ -1388,12 +1388,12 @@ The expansion is entirely correct because it uses the C preprocessor." ;;; These two must be unwound, otherwise take exponential time (defconst cperl-maybe-white-and-comment-rex "[ \t\n]*\\(#[^\n]*\n[ \t\n]*\\)*" -"Regular expression to match optional whitespace with interpspersed comments. +"Regular expression to match optional whitespace with interspersed comments. Should contain exactly one group.") ;;; This one is tricky to unwind; still very inefficient... (defconst cperl-white-and-comment-rex "\\([ \t\n]\\|#[^\n]*\n\\)+" -"Regular expression to match whitespace with interpspersed comments. +"Regular expression to match whitespace with interspersed comments. Should contain exactly one group.") @@ -1537,8 +1537,8 @@ default.) You can always quote (with \\[quoted-insert]) the left since most the time you mean \"less\". CPerl mode tries to guess whether you want to type pair <>, and inserts is if it appropriate. You can set `cperl-electric-parens-string' to the string that -contains the parenths from the above list you want to be electrical. -Electricity of parenths is controlled by `cperl-electric-parens'. +contains the parens from the above list you want to be electrical. +Electricity of parens is controlled by `cperl-electric-parens'. You may also set `cperl-electric-parens-mark' to have electric parens look for active mark and \"embrace\" a region if possible.' @@ -1811,7 +1811,7 @@ or as help on variables `cperl-tips', `cperl-problems', (funcall f)) (make-local-variable 'compilation-error-regexp-alist) (push 'cperl compilation-error-regexp-alist))) - ((boundp 'compilation-error-regexp-alist);; xmeacs 19.x + ((boundp 'compilation-error-regexp-alist);; xemacs 19.x (make-local-variable 'compilation-error-regexp-alist) (set 'compilation-error-regexp-alist (append cperl-compilation-error-regexp-alist @@ -1838,7 +1838,13 @@ or as help on variables `cperl-tips', `cperl-problems', (set (make-local-variable 'cperl-syntax-done-to) nil) (set (make-local-variable 'syntax-propertize-function) (lambda (start end) - (goto-char start) (cperl-fontify-syntaxically end)))) + (goto-char start) + ;; Even if cperl-fontify-syntaxically has already gone + ;; beyond `start', syntax-propertize has just removed + ;; syntax-table properties between start and end, so we have + ;; to re-apply them. + (setq cperl-syntax-done-to start) + (cperl-fontify-syntaxically end)))) (make-local-variable 'parse-sexp-lookup-properties) ;; Do not introduce variable if not needed, we check it! (set 'parse-sexp-lookup-properties t) @@ -2322,8 +2328,7 @@ to nil." nil t)))) ; Only one (progn (forward-word 1) - (setq name (file-name-sans-extension - (file-name-nondirectory (buffer-file-name))) + (setq name (file-name-base) p (point)) (insert " NAME\n\n" name " - \n\n=head1 SYNOPSIS\n\n\n\n" @@ -3498,7 +3503,8 @@ Works before syntax recognition is done." (if end ;; Do the same for end, going small steps (save-excursion - (while (and end (get-text-property end 'syntax-type)) + (while (and end (< end (point-max)) + (get-text-property end 'syntax-type)) (setq pos end end (next-single-property-change end 'syntax-type nil (point-max))) (if end (progn (goto-char end) @@ -3517,7 +3523,7 @@ Works before syntax recognition is done." (defvar font-lock-warning-face) (defun cperl-find-sub-attrs (&optional st-l b-fname e-fname pos) - "Syntaxically mark (and fontify) attributes of a subroutine. + "Syntactically mark (and fontify) attributes of a subroutine. Should be called with the point before leading colon of an attribute." ;; Works *before* syntax recognition is done (or st-l (setq st-l (list nil))) ; Avoid overwriting '() @@ -4994,7 +5000,7 @@ conditional/loop constructs." (setq top (point)) ;; Plan A: if line has an unfinished paren-group, go to end-of-group (while (= -1 (nth 0 (parse-partial-sexp (point) tmp-end -1))) - (setq top (point))) ; Get the outermost parenths in line + (setq top (point))) ; Get the outermost parens in line (goto-char top) (while (< (point) tmp-end) (parse-partial-sexp (point) tmp-end nil t) ; To start-sexp or eol @@ -5906,7 +5912,7 @@ indentation and initial hashes. Behaves usually outside of comment." 3 font-lock-variable-name-face))) '("\\