diff options
Diffstat (limited to 'lisp/progmodes/java-ts-mode.el')
-rw-r--r-- | lisp/progmodes/java-ts-mode.el | 40 |
1 files changed, 35 insertions, 5 deletions
diff --git a/lisp/progmodes/java-ts-mode.el b/lisp/progmodes/java-ts-mode.el index 5c4bce340f0..bb4a7df3340 100644 --- a/lisp/progmodes/java-ts-mode.el +++ b/lisp/progmodes/java-ts-mode.el @@ -310,6 +310,13 @@ Return nil if there is no name or if NODE is not a defun node." (treesit-node-child-by-field-name node "name") t)))) + +(defvar java-ts-mode--feature-list + '(( comment definition ) + ( constant keyword string type) + ( annotation expression literal) + ( bracket delimiter operator))) + ;;;###autoload (define-derived-mode java-ts-mode prog-mode "Java" "Major mode for editing Java, powered by tree-sitter." @@ -362,13 +369,34 @@ Return nil if there is no name or if NODE is not a defun node." "constructor_declaration"))) (setq-local treesit-defun-name-function #'java-ts-mode--defun-name) + (setq-local treesit-thing-settings + `((java + (sexp ,(rx (or "annotation" + "parenthesized_expression" + "argument_list" + "identifier" + "modifiers" + "block" + "body" + "literal" + "access" + "reference" + "_type" + "true" + "false"))) + (sentence ,(rx (or "statement" + "local_variable_declaration" + "field_declaration" + "module_declaration" + "package_declaration" + "import_declaration"))) + (text ,(regexp-opt '("line_comment" + "block_comment" + "text_block")))))) + ;; Font-lock. (setq-local treesit-font-lock-settings java-ts-mode--font-lock-settings) - (setq-local treesit-font-lock-feature-list - '(( comment definition ) - ( constant keyword string type) - ( annotation expression literal) - ( bracket delimiter operator))) + (setq-local treesit-font-lock-feature-list java-ts-mode--feature-list) ;; Imenu. (setq-local treesit-simple-imenu-settings @@ -378,6 +406,8 @@ Return nil if there is no name or if NODE is not a defun node." ("Method" "\\`method_declaration\\'" nil nil))) (treesit-major-mode-setup)) +(derived-mode-add-parents 'java-ts-mode '(java-mode)) + (if (treesit-ready-p 'java) (add-to-list 'auto-mode-alist '("\\.java\\'" . java-ts-mode))) |