emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/org dfeff03c5a: lisp/org-element-ast.el (org-element-co


From: ELPA Syncer
Subject: [elpa] externals/org dfeff03c5a: lisp/org-element-ast.el (org-element-copy): Fix altering source element
Date: Wed, 3 Jan 2024 09:58:41 -0500 (EST)

branch: externals/org
commit dfeff03c5ab0be64b8bf7baeea46a617b7dd004a
Author: Ihor Radchenko <yantar92@posteo.net>
Commit: Ihor Radchenko <yantar92@posteo.net>

    lisp/org-element-ast.el (org-element-copy): Fix altering source element
    
    * testing/lisp/test-org-element.el (test-org-element/copy): Add new
    test case.
    
    Reported-by: gerard.vermeulen@posteo.net
    Link: https://orgmode.org/list/e0252d664af25728243734d67432ad64@posteo.net
---
 lisp/org-element-ast.el          | 4 ++--
 testing/lisp/test-org-element.el | 8 +++++++-
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/lisp/org-element-ast.el b/lisp/org-element-ast.el
index 4c2f431fe3..2186480bed 100644
--- a/lisp/org-element-ast.el
+++ b/lisp/org-element-ast.el
@@ -810,8 +810,8 @@ When DATUM is `plain-text', all the properties are removed."
          (org-element-put-property (car tail) :parent node-copy)
          (setq tail (cdr tail)))
        node-copy))
-    (_
-     (let ((node-copy (copy-sequence datum)))
+    (type
+     (let ((node-copy (append (list type (copy-sequence (cadr datum))) 
(copy-sequence (cddr datum)))))
        ;; Copy `:standard-properties'
        (when-let ((parray (org-element-property-raw :standard-properties 
node-copy)))
          (org-element-put-property node-copy :standard-properties 
(copy-sequence parray)))
diff --git a/testing/lisp/test-org-element.el b/testing/lisp/test-org-element.el
index 063827e9f6..a97d863c83 100644
--- a/testing/lisp/test-org-element.el
+++ b/testing/lisp/test-org-element.el
@@ -794,7 +794,13 @@ Some other text
   (should-not (org-element-copy nil))
   ;; Return a copy secondary strings.
   (should (equal '("text") (org-element-copy '("text"))))
-  (should-not (eq '("text") (org-element-copy '("text")))))
+  (should-not (eq '("text") (org-element-copy '("text"))))
+  ;; Do not alter the source.
+  (org-test-with-temp-text "*bold*"
+    (let* ((source (org-element-context))
+           (copy (org-element-copy source)))
+      (should-not (org-element-parent copy))
+      (should (org-element-parent source)))))
 
 
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]