mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-18 10:16:51 +00:00
Enhancements for triple-quote string syntax.
* progmodes/python.el (python-syntax-propertize-function): Match both quote cases in one regexp. (python-syntax-stringify): Handle matches properly.
This commit is contained in:
parent
b43d62ae72
commit
5727eadff9
@ -499,17 +499,17 @@ The type returned can be `comment', `string' or `paren'."
|
||||
(defconst python-syntax-propertize-function
|
||||
(syntax-propertize-rules
|
||||
((rx
|
||||
;; Match even number of backslashes.
|
||||
(or (not (any ?\\ ?\' ?\")) point) (* ?\\ ?\\)
|
||||
;; Match single or triple quotes of any kind.
|
||||
(group (or "\"" "\"\"\"" "'" "'''")))
|
||||
(1 (ignore (python-syntax-stringify))))
|
||||
((rx
|
||||
;; Match odd number of backslashes.
|
||||
(or (not (any ?\\)) point) ?\\ (* ?\\ ?\\)
|
||||
;; Followed by even number of equal quotes.
|
||||
(group (or "\"\"" "\"\"\"\"" "''" "''''")))
|
||||
(1 (ignore (python-syntax-stringify))))))
|
||||
(or (and
|
||||
;; Match even number of backslashes.
|
||||
(or (not (any ?\\ ?\' ?\")) point) (* ?\\ ?\\)
|
||||
;; Match single or triple quotes of any kind.
|
||||
(group (or "\"" "\"\"\"" "'" "'''")))
|
||||
(and
|
||||
;; Match odd number of backslashes.
|
||||
(or (not (any ?\\)) point) ?\\ (* ?\\ ?\\)
|
||||
;; Followed by even number of equal quotes.
|
||||
(group (or "\"\"" "\"\"\"\"" "''" "''''")))))
|
||||
(0 (ignore (python-syntax-stringify))))))
|
||||
|
||||
(defsubst python-syntax-count-quotes (quote-char &optional point limit)
|
||||
"Count number of quotes around point (max is 3).
|
||||
@ -526,7 +526,8 @@ is used to limit the scan."
|
||||
(defun python-syntax-stringify ()
|
||||
"Put `syntax-table' property correctly on single/triple quotes."
|
||||
(let* ((num-quotes
|
||||
(let ((n (length (match-string-no-properties 1))))
|
||||
(let ((n (length (or (match-string-no-properties 1)
|
||||
(match-string-no-properties 2)))))
|
||||
;; This corrects the quote count when matching odd number
|
||||
;; of backslashes followed by even number of quotes.
|
||||
(or (and (= 1 (logand n 1)) n) (1- n))))
|
||||
|
Loading…
Reference in New Issue
Block a user