diff options
| author | Yuan Fu | 2022-11-04 01:31:56 -0700 |
|---|---|---|
| committer | Yuan Fu | 2022-11-04 09:39:57 -0700 |
| commit | d9d66764e2a02db9f19f5c76ce34ac7d8bc1edc6 (patch) | |
| tree | 8ea201a94b7e0e3b80dba409693d87ee56aea871 /test/src | |
| parent | f6dc55f516a88765bbd8b8c34f0ec663b8948373 (diff) | |
| download | emacs-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.el | 29 |
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 | ||