]> git.eshelyaron.com Git - emacs.git/commitdiff
Make js-jsx-regexps case-sensitive
authorJackson Ray Hamilton <jackson@jacksonrayhamilton.com>
Sun, 22 Sep 2019 18:57:57 +0000 (11:57 -0700)
committerJackson Ray Hamilton <jackson@jacksonrayhamilton.com>
Sun, 22 Sep 2019 19:03:03 +0000 (12:03 -0700)
The regexp in this list used a capitalized “React” because it actually
should be capitalized like that.  Otherwise, the following code would
produce a false positive match: import Thing from './react/Thing'

* lisp/progmodes/js.el (js-jsx-regexps): Update docstring.
(js-jsx--detect-and-enable): Match case-sensitively when determining
whether JSX should be enabled.

lisp/progmodes/js.el

index 161fd5c00b0da8f4629604929e6236d41defb362..65a2538c30a87b30a79f80a16fd7f129abe557e2 100644 (file)
@@ -4484,7 +4484,7 @@ their `mode-name' updates to show enabled syntax extensions."
 
 (defvar js-jsx-regexps
   (list "\\_<\\(?:var\\|let\\|const\\|import\\)\\_>.*?React")
-  "Regexps for detecting JSX in JavaScript buffers.
+  "Case-sensitive regexps for detecting JSX in JavaScript buffers.
 When `js-jsx-detect-syntax' is non-nil and any of these regexps
 match text near the beginning of a JavaScript buffer,
 `js-jsx-syntax' (which see) will be made buffer-local and set to
@@ -4504,7 +4504,9 @@ is non-nil.  Return t after enabling, nil otherwise."
                    (catch 'match
                      (mapc
                       (lambda (regexp)
-                        (if (re-search-forward regexp 4000 t) (throw 'match t)))
+                        (when (let (case-fold-search)
+                                (re-search-forward regexp 4000 t))
+                          (throw 'match t)))
                       js-jsx-regexps)
                      nil))))
     (js-jsx-enable)