mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-02 08:22:22 +00:00
Make syntax-ppss more accurate for Python triple quotes (bug#49518)
By putting delimiter syntax on the last character of Python triple-quoted strings, this makes syntax-ppss be more accurate. Previously: emacs -Q something.py type two single quotes M-: (nth 3 (syntax-ppss)) notice how the return value says you're outside a string, correctly type another quote M-: (nth 3 (syntax-ppss)) notice how the return value says you're inside a string, correctly backspace the quote just entered M-: (nth 3 (syntax-ppss)) notice how the return value says you're inside a string, incorrectly With this patch the last step is corrected. This 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.
This commit is contained in:
parent
9ad962e118
commit
0646c68171
@ -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
|
||||
;; string fence syntax on last quote. (bug#49518)
|
||||
(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
|
||||
;; string fence syntax on first quote. (bug#49518)
|
||||
(put-text-property quote-starting-pos (1+ quote-starting-pos)
|
||||
'syntax-table (string-to-syntax "|"))))))
|
||||
|
||||
(defvar python-mode-syntax-table
|
||||
@ -4308,6 +4310,7 @@ JUSTIFY should be used (if applicable) as in `fill-paragraph'."
|
||||
(and (equal (string-to-syntax "|")
|
||||
(syntax-after (point)))
|
||||
(point)))))
|
||||
;; JT@2021-09-21: Since bug#49518's fix this will always be 1
|
||||
(num-quotes (python-syntax-count-quotes
|
||||
(char-after str-start-pos) str-start-pos))
|
||||
(str-line-start-pos
|
||||
|
@ -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))
|
||||
|
Loading…
Reference in New Issue
Block a user