aboutsummaryrefslogtreecommitdiffstats
path: root/test/src
diff options
context:
space:
mode:
authorYuan Fu2022-11-04 01:31:56 -0700
committerYuan Fu2022-11-04 09:39:57 -0700
commitd9d66764e2a02db9f19f5c76ce34ac7d8bc1edc6 (patch)
tree8ea201a94b7e0e3b80dba409693d87ee56aea871 /test/src
parentf6dc55f516a88765bbd8b8c34f0ec663b8948373 (diff)
downloademacs-d9d66764e2a02db9f19f5c76ce34ac7d8bc1edc6.tar.gz
emacs-d9d66764e2a02db9f19f5c76ce34ac7d8bc1edc6.zip
Revise tree-sitter facility for multi-language buffers
* doc/lispref/parsing.texi (Multiple Languages): Extend and update manual. * lisp/treesit.el (treesit-range-functions): Remove variable. (treesit-range-settings): New variable. (treesit-range-rules): New function. (treesit--merge-ranges): New function. (treesit-update-ranges): Use treesit-range-settings instead of treesit-range-functions. (treesit-font-lock-rules): Fix docstring. (treesit-indent) (treesit-indent-region): Only update ranges in a region. * test/src/treesit-tests.el (treesit-range): New test.
Diffstat (limited to 'test/src')
-rw-r--r--test/src/treesit-tests.el29
1 files changed, 29 insertions, 0 deletions
diff --git a/test/src/treesit-tests.el b/test/src/treesit-tests.el
index 56ac51ff994..5e4aea3ad41 100644
--- a/test/src/treesit-tests.el
+++ b/test/src/treesit-tests.el
@@ -321,6 +321,9 @@ visible_end.)"
321 (setq parser (treesit-parser-create 'json)) 321 (setq parser (treesit-parser-create 'json))
322 (setq root-node (treesit-parser-root-node 322 (setq root-node (treesit-parser-root-node
323 parser))) 323 parser)))
324
325 (should (eq (treesit-parser-included-ranges parser) nil))
326
324 (should-error 327 (should-error
325 (treesit-parser-set-included-ranges 328 (treesit-parser-set-included-ranges
326 parser '((1 . 6) (5 . 20))) 329 parser '((1 . 6) (5 . 20)))
@@ -333,6 +336,32 @@ visible_end.)"
333 (should (equal "(document (array (array (number)) (array (number) (number) (number)) (array (number) (number))))" 336 (should (equal "(document (array (array (number)) (array (number) (number) (number)) (array (number) (number))))"
334 (treesit-node-string 337 (treesit-node-string
335 (treesit-parser-root-node parser)))) 338 (treesit-parser-root-node parser))))
339
340 (treesit-parser-set-included-ranges parser nil)
341 (should (eq (treesit-parser-included-ranges parser) nil))
342
343 ;; `treesit--merge-ranges'.
344 (let ((old-ranges '((1 . 10) ; (1) -- before (a)
345 (20 . 30); (2) -- intersect with (b)
346 (42 . 46) (47 . 48) ; (3) -- inside (c)
347 (55 . 65) (70 . 75) ; (4) -- intersect start-end
348 (80 . 90) ; (4)
349 ))
350 (new-ranges '((10 . 15) ; (a)
351 (18 . 25) (26 . 28) ; (b)
352 (40 . 50) ; (c)
353 (90 . 100) ; (d) -- after (4)
354 ))
355 (result '((1 . 10) ; (1)
356 (10 . 15) ; (a)
357 (18 . 25) (26 . 28) ; (b)
358 (40 . 50) ; (c)
359 (80 . 90) ; (4)
360 (90 . 100) ; (d)
361 )))
362 (should (equal (treesit--merge-ranges
363 old-ranges new-ranges 60 75)
364 result)))
336 ;; TODO: More tests. 365 ;; TODO: More tests.
337 ))) 366 )))
338 367