branch: elpa/treesit-fold commit 0cfd0139560b9a86fb78a3bcb5a4afa7b0baf633 Author: Jen-Chieh Shen <jcs090...@gmail.com> Commit: Jen-Chieh Shen <jcs090...@gmail.com>
Test --- tree-sitter-fold-summary.el | 39 ++++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/tree-sitter-fold-summary.el b/tree-sitter-fold-summary.el index 23c76ad02f..796c8681f5 100644 --- a/tree-sitter-fold-summary.el +++ b/tree-sitter-fold-summary.el @@ -25,12 +25,14 @@ ;;; Code: -(defcustom tree-sitter-fold-show-summary t +(require 's) + +(defcustom tree-sitter-fold-summary-show t "Flag to show summary if available." :type 'boolean :group 'tree-sitter-fold) -(defcustom tree-sitter-fold-max-summary-length 60 +(defcustom tree-sitter-fold-summary-max-length 60 "Maximum length for summary to display." :type '(choice (const :tag "nil" nil) (integer :tag "positive integer number")) @@ -39,7 +41,7 @@ (defcustom tree-sitter-fold-summary-exceeded-string "..." "String that added after display summary. This happens only when summary length is larger than variable -`tree-sitter-fold-max-summary-length'." +`tree-sitter-fold-summary-max-length'." :type 'string :group 'tree-sitter-fold) @@ -48,26 +50,33 @@ This happens only when summary length is larger than variable :type 'string :group 'tree-sitter-fold) -(defun tree-sitter-fold--keep-summary-length (summary) - "Keep the SUMMARY length to `tree-sitter-fold-max-summary-length'." +(defun tree-sitter-fold-summary--keep-length (summary) + "Keep the SUMMARY length to `tree-sitter-fold-summary-max-length'." (let ((len-sum (length summary)) (len-exc (length tree-sitter-fold-summary-exceeded-string))) - (when (< tree-sitter-fold-max-summary-length len-sum) - (setq summary (substring summary 0 (- tree-sitter-fold-max-summary-length len-exc)) + (when (< tree-sitter-fold-summary-max-length len-sum) + (setq summary (substring summary 0 (- tree-sitter-fold-summary-max-length len-exc)) summary (concat summary tree-sitter-fold-summary-exceeded-string)))) summary) -(defun tree-sitter-fold--get-summary (doc-str) +(defun tree-sitter-fold-summary--remove-comments (doc-str) + "Remove comments from DOC-STR." + ;;(s-replace-regexp "^[ \t]*[*]") + (s-replace-regexp (regexp-quote comment-start-skip) "" doc-str) + ) + +(defun tree-sitter-fold-summary--get (doc-str) "Extract summary from DOC-STR in order to display ontop of the overlay." - (let ((parser (cdr (origami-get-summary-parser))) summary) - (when parser - (setq summary (funcall parser doc-str)) - (when (integerp tree-sitter-fold-max-summary-length) - (setq summary (tree-sitter-fold--keep-summary-length summary))) + (when (nth 4 (syntax-ppss)) + (let ((summary (tree-sitter-fold-summary--remove-comments doc-str))) + (when (integerp tree-sitter-fold-summary-max-length) + (setq summary (tree-sitter-fold-summary--keep-length summary))) (when summary (setq summary (origami-summary-apply-format summary) - summary (propertize summary 'face 'tree-sitter-fold-replacement-face)))) - summary)) + summary (propertize summary 'face 'tree-sitter-fold-replacement-face))) + summary + nil ; TODO: Remove this later on + ))) (provide 'tree-sitter-fold-summary) ;;; tree-sitter-fold-summary.el ends here