* progmodes/python.el (python-nav-end-of-statement): Fix
authorFabián Ezequiel Gallina <fgallina@gnu.org>
Thu, 10 Jan 2013 03:44:12 +0000 (00:44 -0300)
committerFabián Ezequiel Gallina <fgallina@gnu.org>
Thu, 10 Jan 2013 03:44:12 +0000 (00:44 -0300)
cornercase when handling multiline strings.

lisp/ChangeLog
lisp/progmodes/python.el

index c3264d8..63dd9d0 100644 (file)
@@ -1,3 +1,8 @@
+2013-01-10  Fabián Ezequiel Gallina  <fgallina@cuca>
+
+       * progmodes/python.el (python-nav-end-of-statement): Fix
+       cornercase when handling multiline strings.
+
 2013-01-10  Glenn Morris  <rgm@gnu.org>
 
        * emacs-lisp/authors.el (authors-ignored-files)
index 7294984..e58dfa1 100644 (file)
@@ -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