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:
parent
65a9c8e243
commit
47968e06da
2 changed files with 24 additions and 15 deletions
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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 ".."))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue