From aba51fb5848d80083ae1c7cb011813e93a64f032 Mon Sep 17 00:00:00 2001 From: Ihor Radchenko Date: Sat, 10 Dec 2022 11:54:47 +0300 Subject: [PATCH] org-fold-core-save-visibility: Fix macro expansion * lisp/org-fold-core.el (org-fold-core-save-visibility): Calculate folds on runtime, not during macro expansion. * testing/lisp/test-org.el (test-org/org-ctrl-c-ctrl-c): Add test ensuring that outline visibility is preserved upon refreshing Org setup. Reported-by: Matt Lundin Link: https://orgmode.org/list/87wn70tlcn.fsf@fastmail.fm --- lisp/org-fold-core.el | 2 +- testing/lisp/test-org.el | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/lisp/org-fold-core.el b/lisp/org-fold-core.el index 8a451a82b..ffa689d4f 100644 --- a/lisp/org-fold-core.el +++ b/lisp/org-fold-core.el @@ -1063,7 +1063,7 @@ means that the buffer should stay alive during the operation, because otherwise all these markers will point to nowhere." (declare (debug (form body)) (indent 1)) (org-with-gensyms (regions) - `(let* ((,regions ,(org-fold-core-get-regions :with-markers use-markers))) + `(let* ((,regions (org-fold-core-get-regions :with-markers ,use-markers))) (unwind-protect (progn ,@body) (org-fold-core-regions ,regions :override t :clean-markers t))))) diff --git a/testing/lisp/test-org.el b/testing/lisp/test-org.el index 32026b74e..3f61b8365 100644 --- a/testing/lisp/test-org.el +++ b/testing/lisp/test-org.el @@ -3581,6 +3581,21 @@ SCHEDULED: <2017-05-06 Sat> (kill-buffer buffer)) t))) +(ert-deftest test-org/org-ctrl-c-ctrl-c () + "Test `org-ctrl-c-ctrl-c' specifications." + ;; FIXME: Improve coverage. + ;; Preserve visibility after refreshing Org setup. + (org-test-with-temp-text + "#+TITLE: Test +* Heading +text" + (org-overview) + (should (org-fold-folded-p (point) 'outline)) + (save-excursion + (goto-char (point-min)) + (org-ctrl-c-ctrl-c)) + (should (org-fold-folded-p (point) 'outline)))) + ;;; Navigation