Mercurial > emacs
changeset 111385:85a2b871f225
* lisp/progmodes/python.el (python-font-lock-syntactic-keywords):
Fix handling of backslash escapes.
(python-quote-syntax): Adjust accordingly.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Mon, 08 Nov 2010 13:56:10 -0500 |
parents | 90d8fda00161 |
children | 93e249d6d27c |
files | lisp/ChangeLog lisp/progmodes/python.el |
diffstat | 2 files changed, 11 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Mon Nov 08 13:42:24 2010 -0500 +++ b/lisp/ChangeLog Mon Nov 08 13:56:10 2010 -0500 @@ -1,3 +1,9 @@ +2010-11-08 Stefan Monnier <monnier@iro.umontreal.ca> + + * progmodes/python.el (python-font-lock-syntactic-keywords): (bug#7322) + Fix handling of backslash escapes. + (python-quote-syntax): Adjust accordingly. + 2010-11-08 Richard Levitte <richard@levitte.org> (tiny patch) * vc-mtn.el (vc-mtn-working-revision, vc-mtn-after-dir-status)
--- a/lisp/progmodes/python.el Mon Nov 08 13:42:24 2010 -0500 +++ b/lisp/progmodes/python.el Mon Nov 08 13:56:10 2010 -0500 @@ -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 @@ (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 "|")))))