[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] feature/jsx f7ac5e4 11/19: Finish replacing SGML-based JS
From: |
Marcin Borkowski |
Subject: |
[Emacs-diffs] feature/jsx f7ac5e4 11/19: Finish replacing SGML-based JSX detection with js-mode’s parsing |
Date: |
Wed, 27 Mar 2019 05:35:01 -0400 (EDT) |
branch: feature/jsx
commit f7ac5e432cf3406d846ce61a416207d5bdb6b38b
Author: Jackson Ray Hamilton <address@hidden>
Commit: Marcin Borkowski <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."
- [Emacs-diffs] feature/jsx 24fcdad 03/19: Add new (failing) unclosed JSX test and separate such tests, (continued)
- [Emacs-diffs] feature/jsx 24fcdad 03/19: Add new (failing) unclosed JSX test and separate such tests, Marcin Borkowski, 2019/03/27
- [Emacs-diffs] feature/jsx 754f826 01/19: Add failing tests for JSX indentation bugs, Marcin Borkowski, 2019/03/27
- [Emacs-diffs] feature/jsx 91c29fb 09/19: Update expectations for JSX indentation in JSXAttribute space, Marcin Borkowski, 2019/03/27
- [Emacs-diffs] feature/jsx 539191c 07/19: Font-lock JSX while editing it by extending regions, Marcin Borkowski, 2019/03/27
- [Emacs-diffs] feature/jsx 79954c6 05/19: Use js-jsx- prefix for functions and variables, Marcin Borkowski, 2019/03/27
- [Emacs-diffs] feature/jsx acab35c 19/19: Add tests for miscellaneous JSX parsing feats, Marcin Borkowski, 2019/03/27
- [Emacs-diffs] feature/jsx e196207 15/19: Indent broken arrow function bodies as an N+1th arg, Marcin Borkowski, 2019/03/27
- [Emacs-diffs] feature/jsx 071c134 06/19: Add basic JSX font-locking, Marcin Borkowski, 2019/03/27
- [Emacs-diffs] feature/jsx ec144e9 12/19: Automatically detect JSX in JavaScript files, Marcin Borkowski, 2019/03/27
- [Emacs-diffs] feature/jsx c66bfa6 10/19: Indent JSX as parsed in a JS context, Marcin Borkowski, 2019/03/27
- [Emacs-diffs] feature/jsx f7ac5e4 11/19: Finish replacing SGML-based JSX detection with js-mode’s parsing,
Marcin Borkowski <=
- [Emacs-diffs] feature/jsx 79118f8 16/19: Fix counting of nested self-closing JSXOpeningElements, Marcin Borkowski, 2019/03/27
- [Emacs-diffs] feature/jsx 4337acd 14/19: Rename tests to use the “.jsx” file extension, Marcin Borkowski, 2019/03/27
- [Emacs-diffs] feature/jsx 66433fd 13/19: Improve JSX syntax propertization, Marcin Borkowski, 2019/03/27
- [Emacs-diffs] feature/jsx ae0ee9b 18/19: Split JSX indentation calculation into several functions, Marcin Borkowski, 2019/03/27
- [Emacs-diffs] feature/jsx 2b4cc70 17/19: Indent expressions in JSXAttributes relative to the attribute’s name, Marcin Borkowski, 2019/03/27
- [Emacs-diffs] feature/jsx d5dae48 02/19: Refactor JSX indentation code to improve enclosing JSX discovery, Marcin Borkowski, 2019/03/27
- [Emacs-diffs] feature/jsx 7166bd2 08/19: Propertize and font-lock JSXText and JSXExpressionContainers, Marcin Borkowski, 2019/03/27
- [Emacs-diffs] feature/jsx 85fccaf 04/19: js-syntax-propertize: Disambiguate JS from JSX, fixing some indents, Marcin Borkowski, 2019/03/27