]> code.delx.au - gnu-emacs/blobdiff - lisp/progmodes/cperl-mode.el
Merge from emacs-24; up to 2012-12-06T01:39:03Z!monnier@iro.umontreal.ca
[gnu-emacs] / lisp / progmodes / cperl-mode.el
index c64a89aa17bdd6702253aa0f378d80801a64381a..c302bb484af25e8a4a95649406035eeeb24878fa 100644 (file)
@@ -1742,6 +1742,13 @@ or as help on variables `cperl-tips', `cperl-problems',
   (setq outline-regexp cperl-outline-regexp)
   (make-local-variable 'outline-level)
   (setq outline-level 'cperl-outline-level)
+  (make-local-variable 'add-log-current-defun-function)
+  (setq add-log-current-defun-function
+       (lambda ()
+         (save-excursion
+           (if (re-search-backward "^sub[ \t]+\\([^({ \t\n]+\\)" nil t)
+               (match-string-no-properties 1)))))
+
   (make-local-variable 'paragraph-start)
   (setq paragraph-start (concat "^$\\|" page-delimiter))
   (make-local-variable 'paragraph-separate)
@@ -3113,8 +3120,10 @@ and closing parentheses and brackets."
         ((eq 'continuation (elt i 0))
          ;; [continuation statement-start char-after is-block is-brace]
          (goto-char (elt i 1))         ; statement-start
-         (+ (if (memq (elt i 2) (append "}])" nil)) ; char-after
-                0                      ; Closing parenth
+         (+ (if (or (memq (elt i 2) (append "}])" nil)) ; char-after
+                     (eq 'continuation ; do not stagger continuations
+                         (elt (cperl-sniff-for-indent parse-data) 0)))
+                0 ; Closing parenth or continuation of a continuation
               cperl-continued-statement-offset)
             (if (or (elt i 3)          ; is-block
                     (not (elt i 4))            ; is-brace