Fix treesit-langauge-at-point for elixir-ts-mode.

The treesit-language-at-point function is only suppose to query the
host language.

* lisp/progmodes/elixir-ts-mode.el
(elixir-ts--indent-rules): Add missing rules.
(elixir-ts--treesit-language-at-point): Update function to only query
the host language.
* test/lisp/progmodes/elixir-ts-mode-resources/indent.erts: Add test
for inline docs.
This commit is contained in:
Wilhelm H Kirschbaum 2023-09-26 21:32:40 +02:00 committed by Yuan Fu
parent 07ede5e92a
commit 1f850d8d7b
No known key found for this signature in database
GPG key ID: 56E19BC57664A442
2 changed files with 35 additions and 16 deletions

View file

@ -312,7 +312,16 @@
((parent-is "^catch_block$") parent ,offset)
((parent-is "^keywords$") parent-bol 0)
((node-is "^call$") parent-bol ,offset)
((node-is "^comment$") parent-bol ,offset)))))
((node-is "^comment$") parent-bol ,offset)
((node-is "\"\"\"") parent-bol 0)
;; Handle quoted_content indentation on the last
;; line before the closing \"\"\", where it might
;; see it as no-node outside a HEEx tag.
(no-node (lambda (_n _p _bol)
(treesit-node-start
(treesit-node-parent
(treesit-node-at (point) 'elixir))))
0)))))
(defvar elixir-ts--font-lock-settings
(treesit-font-lock-rules
@ -510,21 +519,15 @@ With ARG, do it many times. Negative ARG means move backward."
(defun elixir-ts--treesit-language-at-point (point)
"Return the language at POINT."
(let* ((range nil)
(language-in-range
(cl-loop
for parser in (treesit-parser-list)
do (setq range
(cl-loop
for range in (treesit-parser-included-ranges parser)
if (and (>= point (car range)) (<= point (cdr range)))
return parser))
if range
return (treesit-parser-language parser))))
(if (null language-in-range)
(when-let ((parser (car (treesit-parser-list))))
(treesit-parser-language parser))
language-in-range)))
(let ((node (treesit-node-at point 'elixir)))
(if (and (equal (treesit-node-type node) "quoted_content")
(let ((prev-sibling (treesit-node-prev-sibling node t)))
(and (treesit-node-p prev-sibling)
(string-match-p
(rx bos (or "H" "F") eos)
(treesit-node-text prev-sibling)))))
'heex
'elixir)))
(defun elixir-ts--defun-p (node)
"Return non-nil when NODE is a defun."

View file

@ -330,6 +330,22 @@ Name: Long tuple
"October", "November", "December"}
=-=-=
Name: Doc
=-=
defmodule Foo do
"""
bar
"""
end
=-=
defmodule Foo do
"""
bar
"""
end
=-=-=
Name: Embedded HEEx
=-=