Skip to content

Commit a37f7d2

Browse files
committed
fix: set syntax-propertize function
- `$` in atom and string - Tripled-quoted string in doc or Var
1 parent 60ee341 commit a37f7d2

File tree

1 file changed

+24
-1
lines changed

1 file changed

+24
-1
lines changed

erlang-ts.el

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,28 @@ Use `treesit-font-lock-level' or `treesit-font-lock-feature-list'
311311
t
312312
nil)))
313313

314+
(defvar erlang-ts--syntax-propertize-query
315+
(when (treesit-available-p)
316+
(treesit-query-compile
317+
'erlang
318+
'(((atom) @node-atom)
319+
((string) @node-string)))))
320+
321+
(defun erlang-ts--process-node (node)
322+
"Apply syntax-descriptor as `w' for atom or normal string NODE."
323+
(let* ((string-start (1+ (treesit-node-start node)))
324+
(string-end (1- (treesit-node-end node))))
325+
(put-text-property string-start string-end 'syntax-table (string-to-syntax "w"))))
326+
327+
(defun erlang-ts--syntax-propertize (start end)
328+
"Apply syntax properties for Erlang specific patterns from START to END."
329+
(let ((captures
330+
(treesit-query-capture 'erlang erlang-ts--syntax-propertize-query start end)))
331+
(pcase-dolist (`(,name . ,node) captures)
332+
(pcase name
333+
('node-atom (erlang-ts--process-node node))
334+
('node-string (erlang-ts--process-node node))))))
335+
314336
(defun erlang-ts-setup ()
315337
"Setup treesit for erlang."
316338

@@ -367,7 +389,8 @@ Use `treesit-font-lock-level' or `treesit-font-lock-feature-list'
367389
(advice-add #'erlang-font-lock-level-3 :around #'erlang-ts--font-lock-level-3)
368390
(advice-add #'erlang-font-lock-level-4 :around #'erlang-ts--font-lock-level-4)
369391

370-
(treesit-major-mode-setup))
392+
(treesit-major-mode-setup)
393+
(setq-local syntax-propertize-function #'erlang-ts--syntax-propertize))
371394

372395

373396
(defun erlang-ts-unload-function ()

0 commit comments

Comments
 (0)