|
114 | 114 | (html-mode . ,(treesit-fold-parsers-html)) |
115 | 115 | (html-ts-mode . ,(treesit-fold-parsers-html)) |
116 | 116 | (jai-mode . ,(treesit-fold-parsers-jai)) |
| 117 | + (janet-mode . ,(treesit-fold-parsers-janet)) |
117 | 118 | (java-mode . ,(treesit-fold-parsers-java)) |
118 | 119 | (java-ts-mode . ,(treesit-fold-parsers-java)) |
119 | 120 | (javascript-mode . ,(treesit-fold-parsers-javascript)) |
@@ -478,87 +479,87 @@ current `major-mode'. |
478 | 479 | If no NODE is found in point, do nothing." |
479 | 480 | (interactive) |
480 | 481 | (treesit-fold--ensure-ts |
481 | | - (when-let* ((node (or node (treesit-fold--foldable-node-at-pos)))) |
482 | | - ;; make sure I do not create multiple overlays for the same fold |
483 | | - (when-let* ((ov (treesit-fold-overlay-at node))) |
484 | | - (delete-overlay ov)) |
485 | | - (when-let* ((range (treesit-fold--get-fold-range node)) |
486 | | - (ov (treesit-fold--create-overlay range))) |
487 | | - (run-hooks 'treesit-fold-on-fold-hook) |
488 | | - ov)))) |
| 482 | + (when-let* ((node (or node (treesit-fold--foldable-node-at-pos)))) |
| 483 | + ;; make sure I do not create multiple overlays for the same fold |
| 484 | + (when-let* ((ov (treesit-fold-overlay-at node))) |
| 485 | + (delete-overlay ov)) |
| 486 | + (when-let* ((range (treesit-fold--get-fold-range node)) |
| 487 | + (ov (treesit-fold--create-overlay range))) |
| 488 | + (run-hooks 'treesit-fold-on-fold-hook) |
| 489 | + ov)))) |
489 | 490 |
|
490 | 491 | ;;;###autoload |
491 | 492 | (defun treesit-fold-open () |
492 | 493 | "Open the fold of the syntax node in which `point' resides. |
493 | 494 | If the current node is not folded or not foldable, do nothing." |
494 | 495 | (interactive) |
495 | 496 | (treesit-fold--ensure-ts |
496 | | - (when-let* ((node (treesit-fold--foldable-node-at-pos)) |
497 | | - (ov (treesit-fold-overlay-at node))) |
498 | | - (delete-overlay ov) |
499 | | - (run-hooks 'treesit-fold-on-fold-hook) |
500 | | - t))) |
| 497 | + (when-let* ((node (treesit-fold--foldable-node-at-pos)) |
| 498 | + (ov (treesit-fold-overlay-at node))) |
| 499 | + (delete-overlay ov) |
| 500 | + (run-hooks 'treesit-fold-on-fold-hook) |
| 501 | + t))) |
501 | 502 |
|
502 | 503 | ;;;###autoload |
503 | 504 | (defun treesit-fold-open-recursively () |
504 | 505 | "Open recursively folded syntax NODE that are contained in the node at point." |
505 | 506 | (interactive) |
506 | 507 | (treesit-fold--ensure-ts |
507 | | - (when-let* ((node (treesit-fold--foldable-node-at-pos)) |
508 | | - (beg (treesit-node-start node)) |
509 | | - (end (treesit-node-end node)) |
510 | | - (nodes (treesit-fold--overlays-in 'invisible 'treesit-fold beg end))) |
511 | | - (mapc #'delete-overlay nodes) |
512 | | - (run-hooks 'treesit-fold-on-fold-hook) |
513 | | - t))) |
| 508 | + (when-let* ((node (treesit-fold--foldable-node-at-pos)) |
| 509 | + (beg (treesit-node-start node)) |
| 510 | + (end (treesit-node-end node)) |
| 511 | + (nodes (treesit-fold--overlays-in 'invisible 'treesit-fold beg end))) |
| 512 | + (mapc #'delete-overlay nodes) |
| 513 | + (run-hooks 'treesit-fold-on-fold-hook) |
| 514 | + t))) |
514 | 515 |
|
515 | 516 | ;;;###autoload |
516 | 517 | (defun treesit-fold-close-all () |
517 | 518 | "Fold all foldable syntax nodes in the buffer." |
518 | 519 | (interactive) |
519 | 520 | (treesit-fold--ensure-ts |
520 | | - (let (nodes) |
521 | | - (let* ((treesit-fold-indicators-mode) |
522 | | - (treesit-fold-on-fold-hook) |
523 | | - (node (treesit-buffer-root-node)) |
524 | | - (patterns (seq-mapcat (lambda (fold-range) `((,(car fold-range)) @name)) |
525 | | - (alist-get major-mode treesit-fold-range-alist))) |
526 | | - (query (treesit-query-compile (treesit-node-language node) patterns))) |
527 | | - (setq nodes (treesit-query-capture node query) |
528 | | - nodes (cl-remove-if (lambda (node) |
529 | | - ;; Removed if on same line |
530 | | - (treesit-fold--node-range-on-same-line (cdr node))) |
531 | | - nodes)) |
532 | | - (thread-last nodes |
533 | | - (mapcar #'cdr) |
534 | | - (mapc #'treesit-fold-close))) |
535 | | - (when nodes |
536 | | - (run-hooks 'treesit-fold-on-fold-hook) |
537 | | - t)))) |
| 521 | + (let (nodes) |
| 522 | + (let* ((treesit-fold-indicators-mode) |
| 523 | + (treesit-fold-on-fold-hook) |
| 524 | + (node (treesit-buffer-root-node)) |
| 525 | + (patterns (seq-mapcat (lambda (fold-range) `((,(car fold-range)) @name)) |
| 526 | + (alist-get major-mode treesit-fold-range-alist))) |
| 527 | + (query (treesit-query-compile (treesit-node-language node) patterns))) |
| 528 | + (setq nodes (treesit-query-capture node query) |
| 529 | + nodes (cl-remove-if (lambda (node) |
| 530 | + ;; Removed if on same line |
| 531 | + (treesit-fold--node-range-on-same-line (cdr node))) |
| 532 | + nodes)) |
| 533 | + (thread-last nodes |
| 534 | + (mapcar #'cdr) |
| 535 | + (mapc #'treesit-fold-close))) |
| 536 | + (when nodes |
| 537 | + (run-hooks 'treesit-fold-on-fold-hook) |
| 538 | + t)))) |
538 | 539 |
|
539 | 540 | ;;;###autoload |
540 | 541 | (defun treesit-fold-open-all () |
541 | 542 | "Unfold all syntax nodes in the buffer." |
542 | 543 | (interactive) |
543 | 544 | (treesit-fold--ensure-ts |
544 | | - (when-let* ((nodes (treesit-fold--overlays-in 'invisible 'treesit-fold))) |
545 | | - (mapc #'delete-overlay nodes) |
546 | | - (run-hooks 'treesit-fold-on-fold-hook) |
547 | | - t))) |
| 545 | + (when-let* ((nodes (treesit-fold--overlays-in 'invisible 'treesit-fold))) |
| 546 | + (mapc #'delete-overlay nodes) |
| 547 | + (run-hooks 'treesit-fold-on-fold-hook) |
| 548 | + t))) |
548 | 549 |
|
549 | 550 | ;;;###autoload |
550 | 551 | (defun treesit-fold-toggle () |
551 | 552 | "Toggle the syntax node at `point'. |
552 | 553 | If the current syntax node is not foldable, do nothing." |
553 | 554 | (interactive) |
554 | 555 | (treesit-fold--ensure-ts |
555 | | - (if-let* ((node (treesit-fold--foldable-node-at-pos (point))) |
556 | | - (ov (treesit-fold-overlay-at node))) |
557 | | - (progn |
558 | | - (delete-overlay ov) |
559 | | - (run-hooks 'treesit-fold-on-fold-hook) |
560 | | - t) |
561 | | - (treesit-fold-close)))) |
| 556 | + (if-let* ((node (treesit-fold--foldable-node-at-pos (point))) |
| 557 | + (ov (treesit-fold-overlay-at node))) |
| 558 | + (progn |
| 559 | + (delete-overlay ov) |
| 560 | + (run-hooks 'treesit-fold-on-fold-hook) |
| 561 | + t) |
| 562 | + (treesit-fold-close)))) |
562 | 563 |
|
563 | 564 | (defun treesit-fold--after-command (&rest _) |
564 | 565 | "Function call after interactive commands." |
|
0 commit comments