emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] master 3eadf1e 24/28: Identify JSX strings (for js2-mode)


From: Jackson Ray Hamilton
Subject: [Emacs-diffs] master 3eadf1e 24/28: Identify JSX strings (for js2-mode)
Date: Tue, 9 Apr 2019 02:00:16 -0400 (EDT)

branch: master
commit 3eadf1eff43c84a1095094334549a1e0d1e75d80
Author: Jackson Ray Hamilton <address@hidden>
Commit: Jackson Ray Hamilton <address@hidden>

    Identify JSX strings (for js2-mode)
    
    * lisp/progmodes/js.el (js-jsx--syntax-propertize-tag): Derived modes
    like js2-mode may use font-lock-syntactic-face-function to apply faces
    to JSX strings (and only JSX strings).  Apply the js-jsx-string text
    property to such strings so they can be distinctly identified.
    (js-jsx--text-properties): Ensure the js-jsx-string text property gets
    cleaned up, too.
---
 lisp/progmodes/js.el | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el
index a1de3ef..b1068bf 100644
--- a/lisp/progmodes/js.el
+++ b/lisp/progmodes/js.el
@@ -2165,9 +2165,14 @@ testing for syntax only valid as JSX."
             ;; JSXExpressionContainer here will be parsed in the
             ;; next iteration of the loop.
             (if (memq (char-after) '(?\" ?\' ?\`))
-                (condition-case nil
-                    (forward-sexp)
-                  (scan-error (throw 'stop nil)))
+                (progn
+                  ;; Record the string’s position so derived modes
+                  ;; applying syntactic fontification atypically
+                  ;; (e.g. js2-mode) can recognize it as part of JSX.
+                  (put-text-property (point) (1+ (point)) 'js-jsx-string t)
+                  (condition-case nil
+                      (forward-sexp)
+                    (scan-error (throw 'stop nil))))
               ;; Save JSXAttribute’s beginning in case we find a
               ;; JSXExpressionContainer as the JSXAttribute’s value which
               ;; we should associate with the JSXAttribute.
@@ -2195,7 +2200,7 @@ testing for syntax only valid as JSX."
 (defconst js-jsx--text-properties
   (list
    'js-jsx-tag-beg nil 'js-jsx-tag-end nil 'js-jsx-close-tag-pos nil
-   'js-jsx-tag-name nil 'js-jsx-attribute-name nil
+   'js-jsx-tag-name nil 'js-jsx-attribute-name nil 'js-jsx-string nil
    'js-jsx-text nil 'js-jsx-expr nil 'js-jsx-expr-attribute nil)
   "Plist of text properties added by `js-syntax-propertize'.")
 



reply via email to

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