Function: org-agenda-kill

org-agenda-kill is an interactive and byte-compiled function defined in org-agenda.el.gz.

Signature

(org-agenda-kill)

Documentation

Kill the entry or subtree belonging to the current agenda entry.

Key Bindings

Source Code

;; Defined in /usr/src/emacs/lisp/org/org-agenda.el.gz
(defun org-agenda-kill ()
  "Kill the entry or subtree belonging to the current agenda entry."
  (interactive)
  (or (eq major-mode 'org-agenda-mode) (user-error "Not in agenda"))
  (org-agenda-maybe-loop
   #'org-agenda-kill nil nil t
   (let* ((bufname-orig (buffer-name))
	  (marker (or (org-get-at-bol 'org-marker)
		      (org-agenda-error)))
	  (buffer (marker-buffer marker))
	  (type (org-get-at-bol 'type))
	  dbeg dend (n 0))
     (org-with-remote-undo buffer
       (org-with-point-at marker
	 (if (and (derived-mode-p 'org-mode) (not (member type '("sexp"))))
	     (setq dbeg (progn (org-back-to-heading t) (point))
		   dend (org-end-of-subtree t t))
           (setq dbeg (line-beginning-position)
                 dend (min (point-max) (1+ (line-end-position)))))
	 (goto-char dbeg)
	 (while (re-search-forward "^[ \t]*\\S-" dend t) (setq n (1+ n))))
       (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))
       (org-with-point-at marker (delete-region dbeg dend))
       (message "Agenda item and source killed")))))