Hi all I am still blocked with this issue. It looks like the content that is pasted with the second invocation of org-paste-subtree is not just the second org-cut-subtree but the accumulation of the first and the second org-cut-subtree together. This MCE seems better to me than the previous one as it does not use save-excursion:
#+begin_src emacs-lisp :results silent (defun temp () (goto-char (point-min)) (org-cut-subtree) (forward-line 2) (org-paste-subtree)) #+end_src #+begin_src org ,* 1 ,* 2 ,* 3 ,* 4 #+end_src ~M-: (temp) RET M-: (temp) RET~ results in #+begin_src org ,* 3 ,* 1 ,* 1 ,* 2 ,* 4 #+end_src with an unexpected reinsertion of "1" when inserting "2" resulting in a duplicate "1". Michael ---------- Forwarded message --------- From: Michael Brand <michael.ch.br...@gmail.com> Date: Thu, May 16, 2019 at 6:40 PM Subject: Cut and paste an entry programmatically To: Org Mode <emacs-orgmode@gnu.org> Hi all I would like to ask for some help to understand what am I doing wrong with this minimal complete example: #+begin_src org ,* 1 ,* 2 ,* 3 ,* 4 #+end_src #+begin_src emacs-lisp :results silent (defun temp () (org-cut-subtree) (org-forward-heading-same-level 2) (org-paste-subtree)) #+end_src When with point on 1 you do M-: (progn (save-excursion (temp)) (save-excursion (temp))) RET the resulting buffer is the expected reordered 3, 1, 2, 4. When you do M-: (save-excursion (temp)) RET M-: (save-excursion (temp)) RET the resulting buffer is 3, 1, 1, 2, 4 which is not what I want (Emacs 26.1 and today's Org mode master). Why is this and how to resolve? Michael