emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/emacs-24 r111284: * progmodes/python.el (py


From: Fabián Ezequiel Gallina
Subject: [Emacs-diffs] /srv/bzr/emacs/emacs-24 r111284: * progmodes/python.el (python-info-current-defun): Enhance
Date: Wed, 20 Feb 2013 17:41:46 -0300
User-agent: Bazaar (2.5.0)

------------------------------------------------------------
revno: 111284
committer: Fabián Ezequiel Gallina <address@hidden>
branch nick: emacs-24
timestamp: Wed 2013-02-20 17:41:46 -0300
message:
  * progmodes/python.el (python-info-current-defun): Enhance
  match-data cluttering prevention.
modified:
  lisp/ChangeLog
  lisp/progmodes/python.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2013-02-19 21:21:30 +0000
+++ b/lisp/ChangeLog    2013-02-20 20:41:46 +0000
@@ -1,3 +1,8 @@
+2013-02-20  Fabián Ezequiel Gallina  <address@hidden>
+
+       * progmodes/python.el (python-info-current-defun): Enhance
+       match-data cluttering prevention.
+
 2013-02-19  Glenn Morris  <address@hidden>
 
        * net/tramp.el (tramp-get-debug-buffer): Ensure outline.el is not

=== modified file 'lisp/progmodes/python.el'
--- a/lisp/progmodes/python.el  2013-02-19 18:53:57 +0000
+++ b/lisp/progmodes/python.el  2013-02-20 20:41:46 +0000
@@ -2949,42 +2949,40 @@
             (type))
         (catch 'exit
           (while (python-nav-beginning-of-defun 1)
-            (when (and
-                   (or (not last-indent)
-                       (< (current-indentation) last-indent))
-                   (or
-                    (and first-run
+            (when (save-match-data
+                    (and
+                     (or (not last-indent)
+                         (< (current-indentation) last-indent))
+                     (or
+                      (and first-run
+                           (save-excursion
+                             ;; If this is the first run, we may add
+                             ;; the current defun at point.
+                             (setq first-run nil)
+                             (goto-char starting-pos)
+                             (python-nav-beginning-of-statement)
+                             (beginning-of-line 1)
+                             (looking-at-p
+                              python-nav-beginning-of-defun-regexp)))
+                      (< starting-pos
                          (save-excursion
-                           ;; If this is the first run, we may add
-                           ;; the current defun at point.
-                           (setq first-run nil)
-                           (goto-char starting-pos)
-                           (python-nav-beginning-of-statement)
-                           (beginning-of-line 1)
-                           (looking-at-p
-                            python-nav-beginning-of-defun-regexp)))
-                    (< starting-pos
-                       (save-excursion
-                         (let ((min-indent
-                                (+ (current-indentation)
-                                   python-indent-offset)))
-                           (if (< starting-indentation  min-indent)
-                               ;; If the starting indentation is not
-                               ;; within the min defun indent make the
-                               ;; check fail.
-                               starting-pos
-                             ;; Else go to the end of defun and add
-                             ;; up the current indentation to the
-                             ;; ending position.
-                             (save-match-data
-                               ;; FIXME: avoid cluttering match-data
-                               ;; where's not wanted.
-                               (python-nav-end-of-defun))
-                             (+ (point)
-                                (if (>= (current-indentation) min-indent)
-                                    (1+ (current-indentation))
-                                  0))))))))
-              (setq last-indent (current-indentation))
+                           (let ((min-indent
+                                  (+ (current-indentation)
+                                     python-indent-offset)))
+                             (if (< starting-indentation  min-indent)
+                                 ;; If the starting indentation is not
+                                 ;; within the min defun indent make the
+                                 ;; check fail.
+                                 starting-pos
+                               ;; Else go to the end of defun and add
+                               ;; up the current indentation to the
+                               ;; ending position.
+                               (python-nav-end-of-defun)
+                               (+ (point)
+                                  (if (>= (current-indentation) min-indent)
+                                      (1+ (current-indentation))
+                                    0)))))))))
+              (save-match-data (setq last-indent (current-indentation)))
               (if (or (not include-type) type)
                   (setq names (cons (match-string-no-properties 1) names))
                 (let ((match (split-string (match-string-no-properties 0))))


reply via email to

[Prev in Thread] Current Thread [Next in Thread]