mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-31 21:01:23 -08:00
Avoid hangs in python-mode with debug-on-error set
* lisp/progmodes/python.el (python-nav-end-of-statement): Avoid using cl-assert here, because this is called from the font-lock machinery, and if debug-on-error is set here, we'll hang Emacs (bug#54996). Do not merge to master.
This commit is contained in:
parent
4684b8e62f
commit
1b77362771
1 changed files with 14 additions and 17 deletions
|
|
@ -1620,23 +1620,20 @@ of the statement."
|
|||
;; are somehow out of whack. This has been
|
||||
;; observed when using `syntax-ppss' during
|
||||
;; narrowing.
|
||||
(cl-assert (>= string-start last-string-end)
|
||||
:show-args
|
||||
"\
|
||||
Overlapping strings detected (start=%d, last-end=%d)")
|
||||
(goto-char string-start)
|
||||
(if (python-syntax-context 'paren)
|
||||
;; Ended up inside a paren, roll again.
|
||||
(python-nav-end-of-statement t)
|
||||
;; This is not inside a paren, move to the
|
||||
;; end of this string.
|
||||
(goto-char (+ (point)
|
||||
(python-syntax-count-quotes
|
||||
(char-after (point)) (point))))
|
||||
(setq last-string-end
|
||||
(or (re-search-forward
|
||||
(rx (syntax string-delimiter)) nil t)
|
||||
(goto-char (point-max))))))
|
||||
(when (>= string-start last-string-end)
|
||||
(goto-char string-start)
|
||||
(if (python-syntax-context 'paren)
|
||||
;; Ended up inside a paren, roll again.
|
||||
(python-nav-end-of-statement t)
|
||||
;; This is not inside a paren, move to the
|
||||
;; end of this string.
|
||||
(goto-char (+ (point)
|
||||
(python-syntax-count-quotes
|
||||
(char-after (point)) (point))))
|
||||
(setq last-string-end
|
||||
(or (re-search-forward
|
||||
(rx (syntax string-delimiter)) nil t)
|
||||
(goto-char (point-max)))))))
|
||||
((python-syntax-context 'paren)
|
||||
;; The statement won't end before we've escaped
|
||||
;; at least one level of parenthesis.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue