From 50620051800d14a47558fb4379d7cbae5d81f6a1 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fabi=C3=A1n=20Ezequiel=20Gallina?= Date: Thu, 10 Jan 2013 00:44:12 -0300 Subject: [PATCH] * progmodes/python.el (python-nav-end-of-statement): Fix cornercase when handling multiline strings. --- lisp/ChangeLog | 5 +++++ lisp/progmodes/python.el | 13 +++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index c3264d817e..63dd9d0a09 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2013-01-10 Fabián Ezequiel Gallina + + * progmodes/python.el (python-nav-end-of-statement): Fix + cornercase when handling multiline strings. + 2013-01-10 Glenn Morris * emacs-lisp/authors.el (authors-ignored-files) diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index 7294984fc4..e58dfa169e 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el @@ -1188,7 +1188,16 @@ of the statement." (not (eobp)) (cond ((setq string-start (python-syntax-context 'string)) (goto-char string-start) - (python-nav-end-of-statement t)) + (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)))) + (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. @@ -1302,7 +1311,7 @@ backward to previous block." "Safe version of standard `forward-sexp'. When ARG > 0 move forward, else if ARG is < 0." (or arg (setq arg 1)) - (let ((forward-sexp-function nil) + (let ((forward-sexp-function) (paren-regexp (if (> arg 0) (python-rx close-paren) (python-rx open-paren))) (search-fn -- 2.20.1