[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 70477be3e3: Add treesit-sentence-type-regexp
From: |
Theodor Thornhill |
Subject: |
master 70477be3e3: Add treesit-sentence-type-regexp |
Date: |
Sun, 15 Jan 2023 16:19:24 -0500 (EST) |
branch: master
commit 70477be3e38d7bd5243e5d2f66577d8fbe8d1010
Author: Theodor Thornhill <theo@thornhill.no>
Commit: Theodor Thornhill <theo@thornhill.no>
Add treesit-sentence-type-regexp
* lisp/progmodes/js.el (js--treesit-sentence-type-regexp): New defvar
with sentence nodes.
(js-ts-mode): Use the new defvar for treesit-sentence-type-regexp.
* lisp/progmodes/typescript-ts-mode.el
(typescript-ts-mode--sentence-type-regexp): New defvar with sentence
nodes.
* lisp/progmodes/typescript-ts-mode.el (typescript-ts-base-mode): Use
the new defvar for treesit-sentence-type-regexp.
(tsx-ts-mode): Extend treesit-sentence-type-regexp with jsx nodes.
---
lisp/progmodes/js.el | 29 +++++++++++++++++++++++++++++
lisp/progmodes/typescript-ts-mode.el | 34 ++++++++++++++++++++++++++++++++++
2 files changed, 63 insertions(+)
diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el
index 902d4fa7ab..f6103d43ee 100644
--- a/lisp/progmodes/js.el
+++ b/lisp/progmodes/js.el
@@ -3789,6 +3789,31 @@ Currently there are `js-mode' and `js-ts-mode'."
;;(syntax-propertize (point-max))
)
+(defvar js--treesit-sentence-type-regexp
+ '("import_statement"
+ "debugger_statement"
+ "expression_statement"
+ "if_statement"
+ "switch_statement"
+ "for_statement"
+ "for_in_statement"
+ "while_statement"
+ "do_statement"
+ "try_statement"
+ "with_statement"
+ "break_statement"
+ "continue_statement"
+ "return_statement"
+ "throw_statement"
+ "empty_statement"
+ "labeled_statement"
+ "variable_declaration"
+ "lexical_declaration"
+ "jsx_element"
+ "jsx_self_closing_element")
+ "Nodes that designate sentences in JavaScript.
+See `treesit-sentence-type-regexp' for more information.")
+
;;;###autoload
(define-derived-mode js-ts-mode js-base-mode "JavaScript"
"Major mode for editing JavaScript.
@@ -3828,6 +3853,10 @@ Currently there are `js-mode' and `js-ts-mode'."
"function_declaration"
"lexical_declaration")))
(setq-local treesit-defun-name-function #'js--treesit-defun-name)
+
+ (setq-local treesit-sentence-type-regexp
+ (regexp-opt js--treesit-sentence-type-regexp))
+
;; Fontification.
(setq-local treesit-font-lock-settings js--treesit-font-lock-settings)
(setq-local treesit-font-lock-feature-list
diff --git a/lisp/progmodes/typescript-ts-mode.el
b/lisp/progmodes/typescript-ts-mode.el
index 0786150d90..be84caa7b2 100644
--- a/lisp/progmodes/typescript-ts-mode.el
+++ b/lisp/progmodes/typescript-ts-mode.el
@@ -312,6 +312,30 @@ Argument LANGUAGE is either `typescript' or `tsx'."
:override t
'((escape_sequence) @font-lock-escape-face)))
+(defvar typescript-ts-mode--sentence-type-regexp
+ '("import_statement"
+ "debugger_statement"
+ "expression_statement"
+ "if_statement"
+ "switch_statement"
+ "for_statement"
+ "for_in_statement"
+ "while_statement"
+ "do_statement"
+ "try_statement"
+ "with_statement"
+ "break_statement"
+ "continue_statement"
+ "return_statement"
+ "throw_statement"
+ "empty_statement"
+ "labeled_statement"
+ "variable_declaration"
+ "lexical_declaration"
+ "property_signature")
+ "Nodes that designate sentences in TypeScript.
+See `treesit-sentence-type-regexp' for more information.")
+
;;;###autoload
(add-to-list 'auto-mode-alist '("\\.ts\\'" . typescript-ts-mode))
@@ -344,6 +368,9 @@ Argument LANGUAGE is either `typescript' or `tsx'."
"lexical_declaration")))
(setq-local treesit-defun-name-function #'js--treesit-defun-name)
+ (setq-local treesit-sentence-type-regexp
+ (regexp-opt typescript-ts-mode--sentence-type-regexp))
+
;; Imenu (same as in `js-ts-mode').
(setq-local treesit-simple-imenu-settings
`(("Function" "\\`function_declaration\\'" nil nil)
@@ -402,6 +429,13 @@ Argument LANGUAGE is either `typescript' or `tsx'."
(setq-local treesit-simple-indent-rules
(typescript-ts-mode--indent-rules 'tsx))
+ ;; Navigation
+ (setq-local treesit-sentence-type-regexp
+ (regexp-opt (append
+ typescript-ts-mode--sentence-type-regexp
+ '("jsx_element"
+ "jsx_self_closing_element"))))
+
;; Font-lock.
(setq-local treesit-font-lock-settings
(typescript-ts-mode--font-lock-settings 'tsx))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master 70477be3e3: Add treesit-sentence-type-regexp,
Theodor Thornhill <=