Browse Source

Merge branch 'agenda-subtree-kill-with-subtree-feedback'

Marco Wahl 1 month ago
parent
commit
77d7fe8e26
1 changed files with 15 additions and 9 deletions
  1. 15 9
      lisp/org-agenda.el

+ 15 - 9
lisp/org-agenda.el

@@ -8477,7 +8477,7 @@ Point is in the buffer where the item originated.")
 	 (buffer (marker-buffer marker))
 	 (pos (marker-position marker))
 	 (type (org-get-at-bol 'type))
-	 dbeg dend (n 0) conf)
+	 dbeg dend (n 0))
     (org-with-remote-undo buffer
       (with-current-buffer buffer
 	(save-excursion
@@ -8489,14 +8489,20 @@ Point is in the buffer where the item originated.")
 		  dend (min (point-max) (1+ (point-at-eol)))))
 	  (goto-char dbeg)
 	  (while (re-search-forward "^[ \t]*\\S-" dend t) (setq n (1+ n)))))
-      (setq conf (or (eq t org-agenda-confirm-kill)
-		     (and (numberp org-agenda-confirm-kill)
-			  (> n org-agenda-confirm-kill))))
-      (and conf
-	   (not (y-or-n-p
-		 (format "Delete entry with %d lines in buffer \"%s\"? "
-			 n (buffer-name buffer))))
-	   (error "Abort"))
+      (when (or (eq t org-agenda-confirm-kill)
+		(and (numberp org-agenda-confirm-kill)
+		     (> n org-agenda-confirm-kill)))
+	(let ((win-conf (current-window-configuration)))
+	  (unwind-protect
+	      (and
+	       (prog2
+		   (org-agenda-tree-to-indirect-buffer nil)
+		   (not (y-or-n-p
+			 (format "Delete entry with %d lines in buffer \"%s\"? "
+				 n (buffer-name buffer))))
+		 (kill-buffer org-last-indirect-buffer))
+	       (error "Abort"))
+	    (set-window-configuration win-conf))))
       (let ((org-agenda-buffer-name bufname-orig))
 	(org-remove-subtree-entries-from-agenda buffer dbeg dend))
       (with-current-buffer buffer (delete-region dbeg dend))