summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2010-11-08 13:56:10 -0500
committerStefan Monnier <monnier@iro.umontreal.ca>2010-11-08 13:56:10 -0500
commit73525e726cd917645950e185cbabafda00bc0635 (patch)
treea1d9a980325462459c536250333fdaf580f2e921
parent05539fb32aabb9bf531b70b0ea549314e2446370 (diff)
downloademacs-73525e726cd917645950e185cbabafda00bc0635.tar.gz
* lisp/progmodes/python.el (python-font-lock-syntactic-keywords):
Fix handling of backslash escapes. (python-quote-syntax): Adjust accordingly. Fixes: debbugs:7322
-rw-r--r--lisp/ChangeLog6
-rw-r--r--lisp/progmodes/python.el19
2 files changed, 11 insertions, 14 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 45066263c5e..0a38a9a6c9f 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -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)
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 "|")))))