From 8bac4d386a87b14a21d74ba4083f2efd0bde72a0 Mon Sep 17 00:00:00 2001 From: Ihor Radchenko Date: Mon, 26 Feb 2024 15:51:31 +0300 Subject: [PATCH] org-fold-core-get-folding-spec: Fix edge case * lisp/org-fold-core.el (org-fold-core-get-folding-spec): When SPEC is nil, do not rely upon 'invisible property value to determine the fold. Examine unique property set by `org-fold-region' instead. --- lisp/org-fold-core.el | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/lisp/org-fold-core.el b/lisp/org-fold-core.el index e28039a68..98f8d7d4f 100644 --- a/lisp/org-fold-core.el +++ b/lisp/org-fold-core.el @@ -784,19 +784,16 @@ corresponding folding spec (if the text is folded using that spec)." (when (and spec (not (eq spec 'all))) (org-fold-core--check-spec spec)) (org-with-point-at pom (cond - ((eq spec 'all) - (let ((result)) - (dolist (spec (org-fold-core-folding-spec-list)) - (let ((val (if (eq org-fold-core-style 'text-properties) - (get-text-property (point) (org-fold-core--property-symbol-get-create spec nil t)) - (get-char-property (point) (org-fold-core--property-symbol-get-create spec nil t))))) - (when val (push val result)))) - (reverse result))) - ((null spec) - (let ((result (if (eq org-fold-core-style 'text-properties) - (get-text-property (point) 'invisible) - (get-char-property (point) 'invisible)))) - (when (org-fold-core-folding-spec-p result) result))) + ((or (null spec) (eq spec 'all)) + (catch :single-spec + (let ((result)) + (dolist (lspec (org-fold-core-folding-spec-list)) + (let ((val (if (eq org-fold-core-style 'text-properties) + (get-text-property (point) (org-fold-core--property-symbol-get-create lspec nil t)) + (get-char-property (point) (org-fold-core--property-symbol-get-create lspec nil t))))) + (when (and val (null spec)) (throw :single-spec val)) + (when val (push val result)))) + (reverse result)))) (t (if (eq org-fold-core-style 'text-properties) (get-text-property (point) (org-fold-core--property-symbol-get-create spec nil t)) (get-char-property (point) (org-fold-core--property-symbol-get-create spec nil t))))))))