diff options
author | Yuan Fu <casouri@gmail.com> | 2022-11-19 17:59:14 -0800 |
---|---|---|
committer | Yuan Fu <casouri@gmail.com> | 2022-11-19 18:36:08 -0800 |
commit | ac9bc819bc438f21bd38a995812d756727ed8e2a (patch) | |
tree | 94bc9c6242de9a72b7768512388714f08bc3d783 /lisp/progmodes/js.el | |
parent | 7d7e9ef46a1b310fb3f481cdf8023082f5ec1618 (diff) | |
download | emacs-ac9bc819bc438f21bd38a995812d756727ed8e2a.tar.gz emacs-ac9bc819bc438f21bd38a995812d756727ed8e2a.tar.bz2 emacs-ac9bc819bc438f21bd38a995812d756727ed8e2a.zip |
Fix tree-sitter comment indentation for C-like languages
The goal is to indent like this:
/* comment
comment --> This line aligns with the beginning of the first line
*/ --> This line aligns with the opening comment token
* lisp/treesit.el (treesit-comment-start)
(treesit-comment-end): New variables.
(treesit-simple-indent-presets): New preset comment-end,
comment-start, comment-start-skip
* lisp/progmodes/c-ts-mode.el (c-ts-mode--indent-styles)
(c-ts-mode)
* lisp/progmodes/java-ts-mode.el (java-ts-mode--indent-rules)
(java-ts-mode)
* lisp/progmodes/js.el (js--treesit-indent-rules)
(js-ts-mode)
* lisp/progmodes/ts-mode.el (ts-mode--indent-rules)
(ts-mode): Add identical indent rules to each mode, and set identical
treesit-comment-start/end's.
* doc/lispref/modes.texi (Parser-based Indentation)
* doc/lispref/parsing.texi (Tree-sitter major modes): Update manual.
Diffstat (limited to 'lisp/progmodes/js.el')
-rw-r--r-- | lisp/progmodes/js.el | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el index c37cef977b2..159c32ca2ae 100644 --- a/lisp/progmodes/js.el +++ b/lisp/progmodes/js.el @@ -3412,6 +3412,9 @@ This function is intended for use in `after-change-functions'." ((node-is ")") parent-bol 0) ((node-is "]") parent-bol 0) ((node-is ">") parent-bol 0) + ((parent-is "comment") comment-start 0) + ((and (parent-is "comment") comment-end) comment-start -1) + ((parent-is "comment") comment-start-skip 0) ((parent-is "ternary_expression") parent-bol js-indent-level) ((parent-is "member_expression") parent-bol js-indent-level) ((node-is ,switch-case) parent-bol 0) @@ -3807,6 +3810,8 @@ Currently there are `js-mode' and `js-ts-mode'." (setq-local comment-start-skip "\\(?://+\\|/\\*+\\)\\s *") (setq-local comment-end "") (setq-local comment-multi-line t) + (setq-local treesit-comment-start (rx "/" (or (+ "/") (+ "*")))) + (setq-local treesit-comment-end (rx (+ (or "*")) "/")) ;; Electric-indent. (setq-local electric-indent-chars (append "{}():;," electric-indent-chars)) ;FIXME: js2-mode adds "[]*". |