1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-15 10:30:25 -08:00

Fix infinite loop in python.el

This commit is contained in:
Vinicius Jose Latorre 2007-08-01 00:47:25 +00:00
parent 65a9c8e243
commit 47968e06da
2 changed files with 24 additions and 15 deletions

View file

@ -1,3 +1,8 @@
2007-07-31 Paul Pogonyshev <pogonyshev@gmx.net>
* progmodes/python.el (python-current-defun): Adjust to never fall
into infinite loop.
2007-07-31 Stefan Monnier <monnier@iro.umontreal.ca>
* pcvs.el (cvs-vc-command-advice): Handle the new fileset case.

View file

@ -1005,7 +1005,7 @@ don't move and return nil. Otherwise return t."
(set-text-properties 0 (length function-name) nil function-name)
function-name))
;;;; Imenu.
(defvar python-recursing)
@ -1828,21 +1828,25 @@ of current line."
(save-excursion
;; Move up the tree of nested `class' and `def' blocks until we
;; get to zero indentation, accumulating the defined names.
(let ((start t)
(accum)
(let ((accum)
(length -1))
(while (and (or start (> (current-indentation) 0))
(or (null length-limit)
(null (cdr accum))
(< length length-limit)))
(setq start nil)
(python-beginning-of-block)
(end-of-line)
(beginning-of-defun)
(when (looking-at (rx (0+ space) (or "def" "class") (1+ space)
(group (1+ (or word (syntax symbol))))))
(push (match-string 1) accum)
(setq length (+ length 1 (length (car accum))))))
(catch 'done
(while (or (null length-limit)
(null (cdr accum))
(< length length-limit))
(setq start nil)
(let ((started-from (point)))
(python-beginning-of-block)
(end-of-line)
(beginning-of-defun)
(when (= (point) started-from)
(throw 'done nil)))
(when (looking-at (rx (0+ space) (or "def" "class") (1+ space)
(group (1+ (or word (syntax symbol))))))
(push (match-string 1) accum)
(setq length (+ length 1 (length (car accum)))))
(when (= (current-indentation) 0)
(throw 'done nil))))
(when accum
(when (and length-limit (> length length-limit))
(setcar accum ".."))