diff options
| author | Stefan Monnier <monnier@iro.umontreal.ca> | 2010-11-08 13:56:10 -0500 |
|---|---|---|
| committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2010-11-08 13:56:10 -0500 |
| commit | 73525e726cd917645950e185cbabafda00bc0635 (patch) | |
| tree | a1d9a980325462459c536250333fdaf580f2e921 /lisp/progmodes/python.el | |
| parent | 05539fb32aabb9bf531b70b0ea549314e2446370 (diff) | |
* lisp/progmodes/python.el (python-font-lock-syntactic-keywords):
Fix handling of backslash escapes.
(python-quote-syntax): Adjust accordingly.
Fixes: debbugs:7322
Diffstat (limited to 'lisp/progmodes/python.el')
| -rw-r--r-- | lisp/progmodes/python.el | 19 |
1 files changed, 5 insertions, 14 deletions
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index ed2a3236be1..dba8fe5572b 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el @@ -170,18 +170,9 @@ ;; Make outer chars of matching triple-quote sequences into generic ;; string delimiters. Fixme: Is there a better way? ;; First avoid a sequence preceded by an odd number of backslashes. - `((,(rx (not (any ?\\)) - ?\\ (* (and ?\\ ?\\)) - (group (syntax string-quote)) - (backref 1) - (group (backref 1))) - (2 ,(string-to-syntax "\""))) ; dummy - (,(rx (group (optional (any "uUrR"))) ; prefix gets syntax property - (optional (any "rR")) ; possible second prefix - (group (syntax string-quote)) ; maybe gets property - (backref 2) ; per first quote - (group (backref 2))) ; maybe gets property - (1 (python-quote-syntax 1)) + `((,(concat "\\(?:\\([RUru]\\)[Rr]?\\|^\\|[^\\]\\(?:\\\\.\\)*\\)" ;Prefix. + "\\(?:\\('\\)'\\('\\)\\|\\(?2:\"\\)\"\\(?3:\"\\)\\)") + (1 (python-quote-syntax 1) nil lax) (2 (python-quote-syntax 2)) (3 (python-quote-syntax 3))) ;; This doesn't really help. @@ -219,9 +210,9 @@ Used for syntactic keywords. N is the match number (1, 2 or 3)." (eval-when-compile (string-to-syntax "|")))))) ;; Consider property for initial char, accounting for prefixes. ((or (and (= n 2) ; leading quote (not prefix) - (= (match-beginning 1) (match-end 1))) ; prefix is null + (not (match-end 1))) ; prefix is null (and (= n 1) ; prefix - (/= (match-beginning 1) (match-end 1)))) ; non-empty + (match-end 1))) ; non-empty (let ((font-lock-syntactic-keywords nil)) (unless (eq 'string (syntax-ppss-context (syntax-ppss))) (eval-when-compile (string-to-syntax "|"))))) |
