summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorGlenn Morris <rgm@gnu.org>2013-02-21 08:56:49 -0800
committerGlenn Morris <rgm@gnu.org>2013-02-21 08:56:49 -0800
commitcfbf790d80eaa399afceecd9a6c3e2e76bca59b0 (patch)
treeb2c7ea684fb8d24d5f51d6959aa38854e335d9b6 /lisp
parentd20e6e9093f74ce2e435a3dac948df200e767405 (diff)
parent62cfd799f17a31188b3cdb9ffbe1421b4e6cba5d (diff)
downloademacs-cfbf790d80eaa399afceecd9a6c3e2e76bca59b0.tar.gz
Merge from emacs-24; up to 2012-12-21T07:35:02Z!ueno@gnu.org
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog15
-rw-r--r--lisp/net/tramp.el2
-rw-r--r--lisp/progmodes/python.el65
3 files changed, 50 insertions, 32 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 4210740791f..6258293be7e 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,18 @@
+2013-02-21 Fabián Ezequiel Gallina <fgallina@cuca>
+
+ * progmodes/python.el (python-info-current-defun): Enhance
+ match-data cluttering prevention.
+
+2013-02-21 Glenn Morris <rgm@gnu.org>
+
+ * net/tramp.el (tramp-get-debug-buffer): Ensure outline.el is not
+ loaded while outline-regexp is let bound. (Bug#9584)
+
+2013-02-21 Fabián Ezequiel Gallina <fgallina@cuca>
+
+ * progmodes/python.el (python-info-current-defun): Fix failed
+ defun name retrieval because of unwanted match-data cluttering.
+
2013-02-21 Michael Albinus <michael.albinus@gmx.de>
* net/tramp.el (tramp-ssh-controlmaster-template): Make it a
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index 5305484e920..4bfe541f053 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -1354,6 +1354,8 @@ The outline level is equal to the verbosity of the Tramp message."
(get-buffer-create (tramp-debug-buffer-name vec))
(when (bobp)
(setq buffer-undo-list t)
+ ;; So it does not get loaded while outline-regexp is let-bound.
+ (require 'outline)
;; Activate `outline-mode'. This runs `text-mode-hook' and
;; `outline-mode-hook'. We must prevent that local processes
;; die. Yes: I've seen `flyspell-mode', which starts "ispell".
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index da56fe70329..f0f67d01845 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -2959,39 +2959,40 @@ not inside a defun."
(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.
- (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))))