|
9 | 9 | ;; Shen, Jen-Chieh <jcs090218@gmail.com> |
10 | 10 | ;; Maintainer: Shen, Jen-Chieh <jcs090218@gmail.com> |
11 | 11 | ;; URL: https://github.com/emacs-tree-sitter/treesit-fold |
12 | | -;; Version: 0.1.0 |
| 12 | +;; Version: 0.2.0 |
13 | 13 | ;; Package-Requires: ((emacs "29.1")) |
14 | 14 | ;; Keywords: convenience folding tree-sitter |
15 | 15 |
|
@@ -504,87 +504,87 @@ current `major-mode'. |
504 | 504 | If no NODE is found in point, do nothing." |
505 | 505 | (interactive) |
506 | 506 | (treesit-fold--ensure-ts |
507 | | - (when-let* ((node (or node (treesit-fold--foldable-node-at-pos)))) |
508 | | - ;; make sure I do not create multiple overlays for the same fold |
509 | | - (when-let* ((ov (treesit-fold-overlay-at node))) |
510 | | - (delete-overlay ov)) |
511 | | - (when-let* ((range (treesit-fold--get-fold-range node)) |
512 | | - (ov (treesit-fold--create-overlay range))) |
513 | | - (run-hooks 'treesit-fold-on-fold-hook) |
514 | | - ov)))) |
| 507 | + (when-let* ((node (or node (treesit-fold--foldable-node-at-pos)))) |
| 508 | + ;; make sure I do not create multiple overlays for the same fold |
| 509 | + (when-let* ((ov (treesit-fold-overlay-at node))) |
| 510 | + (delete-overlay ov)) |
| 511 | + (when-let* ((range (treesit-fold--get-fold-range node)) |
| 512 | + (ov (treesit-fold--create-overlay range))) |
| 513 | + (run-hooks 'treesit-fold-on-fold-hook) |
| 514 | + ov)))) |
515 | 515 |
|
516 | 516 | ;;;###autoload |
517 | 517 | (defun treesit-fold-open () |
518 | 518 | "Open the fold of the syntax node in which `point' resides. |
519 | 519 | If the current node is not folded or not foldable, do nothing." |
520 | 520 | (interactive) |
521 | 521 | (treesit-fold--ensure-ts |
522 | | - (when-let* ((node (treesit-fold--foldable-node-at-pos)) |
523 | | - (ov (treesit-fold-overlay-at node))) |
524 | | - (delete-overlay ov) |
525 | | - (run-hooks 'treesit-fold-on-fold-hook) |
526 | | - t))) |
| 522 | + (when-let* ((node (treesit-fold--foldable-node-at-pos)) |
| 523 | + (ov (treesit-fold-overlay-at node))) |
| 524 | + (delete-overlay ov) |
| 525 | + (run-hooks 'treesit-fold-on-fold-hook) |
| 526 | + t))) |
527 | 527 |
|
528 | 528 | ;;;###autoload |
529 | 529 | (defun treesit-fold-open-recursively () |
530 | 530 | "Open recursively folded syntax NODE that are contained in the node at point." |
531 | 531 | (interactive) |
532 | 532 | (treesit-fold--ensure-ts |
533 | | - (when-let* ((node (treesit-fold--foldable-node-at-pos)) |
534 | | - (beg (treesit-node-start node)) |
535 | | - (end (treesit-node-end node)) |
536 | | - (nodes (treesit-fold--overlays-in 'invisible 'treesit-fold beg end))) |
537 | | - (mapc #'delete-overlay nodes) |
538 | | - (run-hooks 'treesit-fold-on-fold-hook) |
539 | | - t))) |
| 533 | + (when-let* ((node (treesit-fold--foldable-node-at-pos)) |
| 534 | + (beg (treesit-node-start node)) |
| 535 | + (end (treesit-node-end node)) |
| 536 | + (nodes (treesit-fold--overlays-in 'invisible 'treesit-fold beg end))) |
| 537 | + (mapc #'delete-overlay nodes) |
| 538 | + (run-hooks 'treesit-fold-on-fold-hook) |
| 539 | + t))) |
540 | 540 |
|
541 | 541 | ;;;###autoload |
542 | 542 | (defun treesit-fold-close-all () |
543 | 543 | "Fold all foldable syntax nodes in the buffer." |
544 | 544 | (interactive) |
545 | 545 | (treesit-fold--ensure-ts |
546 | | - (let (nodes) |
547 | | - (let* ((treesit-fold-indicators-mode) |
548 | | - (treesit-fold-on-fold-hook) |
549 | | - (node (treesit-buffer-root-node)) |
550 | | - (patterns (seq-mapcat (lambda (fold-range) `((,(car fold-range)) @name)) |
551 | | - (alist-get major-mode treesit-fold-range-alist))) |
552 | | - (query (treesit-query-compile (treesit-node-language node) patterns))) |
553 | | - (setq nodes (treesit-query-capture node query) |
554 | | - nodes (cl-remove-if (lambda (node) |
555 | | - ;; Removed if on same line |
556 | | - (treesit-fold--node-range-on-same-line (cdr node))) |
557 | | - nodes)) |
558 | | - (thread-last nodes |
559 | | - (mapcar #'cdr) |
560 | | - (mapc #'treesit-fold-close))) |
561 | | - (when nodes |
562 | | - (run-hooks 'treesit-fold-on-fold-hook) |
563 | | - t)))) |
| 546 | + (let (nodes) |
| 547 | + (let* ((treesit-fold-indicators-mode) |
| 548 | + (treesit-fold-on-fold-hook) |
| 549 | + (node (treesit-buffer-root-node)) |
| 550 | + (patterns (seq-mapcat (lambda (fold-range) `((,(car fold-range)) @name)) |
| 551 | + (alist-get major-mode treesit-fold-range-alist))) |
| 552 | + (query (treesit-query-compile (treesit-node-language node) patterns))) |
| 553 | + (setq nodes (treesit-query-capture node query) |
| 554 | + nodes (cl-remove-if (lambda (node) |
| 555 | + ;; Removed if on same line |
| 556 | + (treesit-fold--node-range-on-same-line (cdr node))) |
| 557 | + nodes)) |
| 558 | + (thread-last nodes |
| 559 | + (mapcar #'cdr) |
| 560 | + (mapc #'treesit-fold-close))) |
| 561 | + (when nodes |
| 562 | + (run-hooks 'treesit-fold-on-fold-hook) |
| 563 | + t)))) |
564 | 564 |
|
565 | 565 | ;;;###autoload |
566 | 566 | (defun treesit-fold-open-all () |
567 | 567 | "Unfold all syntax nodes in the buffer." |
568 | 568 | (interactive) |
569 | 569 | (treesit-fold--ensure-ts |
570 | | - (when-let* ((nodes (treesit-fold--overlays-in 'invisible 'treesit-fold))) |
571 | | - (mapc #'delete-overlay nodes) |
572 | | - (run-hooks 'treesit-fold-on-fold-hook) |
573 | | - t))) |
| 570 | + (when-let* ((nodes (treesit-fold--overlays-in 'invisible 'treesit-fold))) |
| 571 | + (mapc #'delete-overlay nodes) |
| 572 | + (run-hooks 'treesit-fold-on-fold-hook) |
| 573 | + t))) |
574 | 574 |
|
575 | 575 | ;;;###autoload |
576 | 576 | (defun treesit-fold-toggle () |
577 | 577 | "Toggle the syntax node at `point'. |
578 | 578 | If the current syntax node is not foldable, do nothing." |
579 | 579 | (interactive) |
580 | 580 | (treesit-fold--ensure-ts |
581 | | - (if-let* ((node (treesit-fold--foldable-node-at-pos (point))) |
582 | | - (ov (treesit-fold-overlay-at node))) |
583 | | - (progn |
584 | | - (delete-overlay ov) |
585 | | - (run-hooks 'treesit-fold-on-fold-hook) |
586 | | - t) |
587 | | - (treesit-fold-close)))) |
| 581 | + (if-let* ((node (treesit-fold--foldable-node-at-pos (point))) |
| 582 | + (ov (treesit-fold-overlay-at node))) |
| 583 | + (progn |
| 584 | + (delete-overlay ov) |
| 585 | + (run-hooks 'treesit-fold-on-fold-hook) |
| 586 | + t) |
| 587 | + (treesit-fold-close)))) |
588 | 588 |
|
589 | 589 | (defun treesit-fold--after-command (&rest _) |
590 | 590 | "Function call after interactive commands." |
|
0 commit comments