bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#7322: 23.1; tqs-escape-syntax-error


From: Stefan Monnier
Subject: bug#7322: 23.1; tqs-escape-syntax-error
Date: Mon, 08 Nov 2010 13:57:34 -0500
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux)

>>>>> "Andreas" == Andreas Röhler <andreas.roehler@easy-emacs.de> writes:

> Hi,

> editing python code, the following code concatenates strings with variables:

> """(beginning-of-form-base \"""" + string1 + """\" \"""" + string2 + """\"
> nil nil nil nil t))))"""

> while " + string1 +" is highlighted correctly, " + string2 + " has string
> face wrongly.

Thanks.  Indeed backslashes weren't recognized properly in this case.
I've installed the patch below in the emacs-23 branch, which seems to
fix this problem.


        Stefan


=== modified file 'lisp/progmodes/python.el'
--- lisp/progmodes/python.el    2010-08-23 00:44:55 +0000
+++ lisp/progmodes/python.el    2010-11-08 18:53:30 +0000
@@ -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 "|")))))






reply via email to

[Prev in Thread] Current Thread [Next in Thread]