]> git.eshelyaron.com Git - emacs.git/commitdiff
Make syntax-ppss more accurate for Python triple quotes (bug#49518)
authorJoão Távora <joaotavora@gmail.com>
Sun, 19 Sep 2021 10:42:20 +0000 (11:42 +0100)
committerJoão Távora <joaotavora@gmail.com>
Sun, 19 Sep 2021 16:18:17 +0000 (17:18 +0100)
By putting delimiter syntax on the "inside" of Python triple-quoted
strings, this makes syntax-ppss be more accurate and thus helps things
like electric-pair-mode.  Also, the test
python-syntax-after-python-backspace now passes, again.

* lisp/progmodes/python.el (python-syntax-stringify): Put
delimiter syntax in "inner" of the surrouding triple quotes.

* test/lisp/progmodes/python-tests.el
(python-syntax-after-python-backspace): Passes again.

lisp/progmodes/python.el
test/lisp/progmodes/python-tests.el

index 19b79b6919788197536fe4df7cb9938815fd53c0..da7b92ae42c1322f4ff92b6c2efc649197e5c497 100644 (file)
@@ -775,12 +775,14 @@ is used to limit the scan."
            ;; The first quote is escaped, so it's not part of a triple quote!
            (goto-char (1+ quote-starting-pos)))
           ((null string-start)
-           ;; This set of quotes delimit the start of a string.
-           (put-text-property quote-starting-pos (1+ quote-starting-pos)
+           ;; This set of quotes delimit the start of a string.  Put
+           ;; the delimiter syntax in the last of the three quotes.
+           (put-text-property (1- quote-ending-pos) quote-ending-pos
                               'syntax-table (string-to-syntax "|")))
           (t
-           ;; This set of quotes delimit the end of a string.
-           (put-text-property (1- quote-ending-pos) quote-ending-pos
+           ;; This set of quotes delimit the end of a string.  Put the
+           ;; delimiter syntax in the first of the three quotess.
+           (put-text-property quote-starting-pos (1+ quote-starting-pos)
                               'syntax-table (string-to-syntax "|"))))))
 
 (defvar python-mode-syntax-table
index 1af579bb7a47ca710dc04daee2d1284e5b5e2a95..a172f0f8e9c353b9f8cfdd2332b3eaf72936c4eb 100644 (file)
@@ -193,7 +193,6 @@ aliqua."
 
 (ert-deftest python-syntax-after-python-backspace ()
   ;; `python-indent-dedent-line-backspace' garbles syntax
-  :expected-result :failed
   (python-tests-with-temp-buffer
       "\"\"\""
     (goto-char (point-max))