branch: externals/org
commit 87c9f9b5db2e14fe0c5254105b7b90b01bbf8d61
Author: Ihor Radchenko <yanta...@posteo.net>
Commit: Ihor Radchenko <yanta...@posteo.net>

    org-export: Fix exporting visible when org-fold-core-style is 
'text-properties
    
    * lisp/org-fold-core.el (org-fold-core--update-buffer-folds): New
    function updating buffer folds in copied text for current buffer.
    (org-fold-core-decouple-indirect-buffer-folds): Use the new function.
    * lisp/org-element.el (org-element--generate-copy-script): Synchronize
    folds.
---
 lisp/org-element.el   | 4 ++++
 lisp/org-fold-core.el | 6 +++++-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/lisp/org-element.el b/lisp/org-element.el
index ec1dfe770e..573de01060 100644
--- a/lisp/org-element.el
+++ b/lisp/org-element.el
@@ -551,6 +551,8 @@ The resulting function can be evaluated at a later time, 
from
 another buffer, effectively cloning the original buffer there.
 
 The function assumes BUFFER's major mode is `org-mode'."
+  (declare-function org-fold-core--update-buffer-folds "org-fold-core" ())
+  (require 'org-fold-core)
   (with-current-buffer buffer
     (let ((str (unless drop-contents (org-with-wide-buffer (buffer-string))))
           (narrowing
@@ -622,6 +624,8 @@ The function assumes BUFFER's major mode is `org-mode'."
             (let ((ov (make-overlay start end)))
               (while props
                 (overlay-put ov (pop props) (pop props)))))
+          ;; Text property folds.
+          (unless drop-visibility (org-fold-core--update-buffer-folds))
           ;; Never write the buffer copy to disk, despite
           ;; `buffer-file-name' not being nil.
           (setq write-contents-functions (list (lambda (&rest _) t))))))))
diff --git a/lisp/org-fold-core.el b/lisp/org-fold-core.el
index 98f8d7d4f5..ff44639130 100644
--- a/lisp/org-fold-core.el
+++ b/lisp/org-fold-core.el
@@ -634,6 +634,10 @@ unless RETURN-ONLY is non-nil."
                                                 text-property-default-nonsticky
                                                 full-prop-list))))))))))))))
 
+(defun org-fold-core--update-buffer-folds ()
+  "Copy folding state in a new buffer with text copied from old buffer."
+  (org-fold-core--property-symbol-get-create (car 
(org-fold-core-folding-spec-list))))
+
 (defun org-fold-core-decouple-indirect-buffer-folds ()
   "Copy and decouple folding state in a newly created indirect buffer.
 This function is mostly intended to be used in
@@ -641,7 +645,7 @@ This function is mostly intended to be used in
   (when (and (buffer-base-buffer)
              (eq org-fold-core-style 'text-properties)
              (not (memql 'ignore-indirect 
org-fold-core--optimise-for-huge-buffers)))
-    (org-fold-core--property-symbol-get-create (car 
(org-fold-core-folding-spec-list)))))
+    (org-fold-core--update-buffer-folds)))
 
 ;;; API
 

Reply via email to