emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] master 339be7c 11/28: Finish replacing SGML-based JSX det


From: Jackson Ray Hamilton
Subject: [Emacs-diffs] master 339be7c 11/28: Finish replacing SGML-based JSX detection with js-mode’s parsing
Date: Tue, 9 Apr 2019 02:00:13 -0400 (EDT)

branch: master
commit 339be7c00790fb407cc8449fa8f59baa792cbe69
Author: Jackson Ray Hamilton <address@hidden>
Commit: Jackson Ray Hamilton <address@hidden>

    Finish replacing SGML-based JSX detection with js-mode’s parsing
    
    This removes the last dependency on sgml-mode for JSX-related logic.
    
    * lisp/progmodes/js.el (js-jsx--start-tag-re)
    (js-jsx--end-tag-re): Remove.
    (js-jsx--looking-at-start-tag-p)
    (js-jsx--looking-back-at-end-tag-p): Reimplement using text
    properties, using syntax information which ought to be slightly more
    accurate than regexps since it was found by complete parsing.
---
 lisp/progmodes/js.el | 14 +++-----------
 1 file changed, 3 insertions(+), 11 deletions(-)

diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el
index af83e04..df2c413 100644
--- a/lisp/progmodes/js.el
+++ b/lisp/progmodes/js.el
@@ -50,7 +50,6 @@
 (require 'imenu)
 (require 'moz nil t)
 (require 'json)
-(require 'sgml-mode)
 (require 'prog-mode)
 
 (eval-when-compile
@@ -2211,13 +2210,10 @@ testing for syntax only valid as JSX."
           (js--regexp-opt-symbol '("in" "instanceof")))
   "Regexp matching operators that affect indentation of continued 
expressions.")
 
-(defconst js-jsx--start-tag-re
-  (concat "<" sgml-name-re)
-  "Regexp matching code that looks like a JSXOpeningElement.")
-
 (defun js-jsx--looking-at-start-tag-p ()
   "Non-nil if a JSXOpeningElement immediately follows point."
-  (looking-at js-jsx--start-tag-re))
+  (let ((tag-beg (get-text-property (point) 'js-jsx-tag-beg)))
+    (and tag-beg (memq (car tag-beg) '(open self-closing)))))
 
 (defun js--looking-at-operator-p ()
   "Return non-nil if point is on a JavaScript operator, other than a comma."
@@ -2263,13 +2259,9 @@ testing for syntax only valid as JSX."
         (setq result nil)))
     result))
 
-(defconst js-jsx--end-tag-re
-  (concat "</" sgml-name-re ">\\|/>")
-  "Regexp matching a JSXClosingElement.")
-
 (defun js-jsx--looking-back-at-end-tag-p ()
   "Non-nil if a JSXClosingElement immediately precedes point."
-  (looking-back js-jsx--end-tag-re (point-at-bol)))
+  (get-text-property (point) 'js-jsx-tag-end))
 
 (defun js--continued-expression-p ()
   "Return non-nil if the current line continues an expression."



reply via email to

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