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

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

[elpa] externals/org 286a8fb798 01/10: org-element-insert-before: Fix re


From: ELPA Syncer
Subject: [elpa] externals/org 286a8fb798 01/10: org-element-insert-before: Fix return value when setting plain-text
Date: Thu, 29 Feb 2024 06:58:53 -0500 (EST)

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

    org-element-insert-before: Fix return value when setting plain-text
    
    * lisp/org-element-ast.el (org-element-set-element): When setting
    plain-text node, return the new node instead of immutable old one.
    * testing/lisp/test-org-element.el (test-org-element/set): Add test.
---
 lisp/org-element-ast.el          | 7 +++++--
 testing/lisp/test-org-element.el | 9 +++++++++
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/lisp/org-element-ast.el b/lisp/org-element-ast.el
index 4c1391ec4e..fba6b37e66 100644
--- a/lisp/org-element-ast.el
+++ b/lisp/org-element-ast.el
@@ -1131,8 +1131,11 @@ The function takes care of setting `:parent' property 
for NEW."
            (eq new-type 'plain-text))
         ;; We cannot replace OLD with NEW since strings are not mutable.
         ;; We take the long path.
-        (progn (org-element-insert-before new old)
-              (org-element-extract old))
+        (progn
+          (org-element-insert-before new old)
+         (org-element-extract old)
+          ;; We will return OLD.
+          (setq old new))
       ;; Since OLD is going to be changed into NEW by side-effect, first
       ;; make sure that every element or object within NEW has OLD as
       ;; parent.
diff --git a/testing/lisp/test-org-element.el b/testing/lisp/test-org-element.el
index 93754bae50..23d3d695c9 100644
--- a/testing/lisp/test-org-element.el
+++ b/testing/lisp/test-org-element.el
@@ -755,6 +755,15 @@ Some other text
                   (text (org-element-map tree 'plain-text 'identity nil t)))
              (org-element-set text "b")
              (org-element-map tree 'plain-text 'identity nil t)))))
+  ;; Replace string inside anonymous element with another string.
+  (let* ((parent (org-element-create 'anonymous nil "test"))
+        (str (car (org-element-contents parent))))
+    (let ((return (org-element-set str "repl"))
+          (new (car (org-element-contents parent))))
+      ;; Return the modified value.
+      (should (eq return new))
+      (should (equal new "repl"))
+      (should (eq (org-element-parent new) parent))))
   ;; KEEP-PROPS
   (should
    (org-element-property



reply via email to

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