Function: org-list-delete-item

org-list-delete-item is a byte-compiled function defined in org-list.el.gz.

Signature

(org-list-delete-item ITEM STRUCT)

Documentation

Remove ITEM from the list and return the new structure.

STRUCT is the list structure.

Source Code

;; Defined in /usr/src/emacs/lisp/org/org-list.el.gz
(defun org-list-delete-item (item struct)
  "Remove ITEM from the list and return the new structure.

STRUCT is the list structure."
  (let* ((end (org-list-get-item-end item struct))
	 (beg (if (= (org-list-get-bottom-point struct) end)
		  ;; If ITEM ends with the list, delete blank lines
		  ;; before it.
		  (save-excursion
		    (goto-char item)
		    (skip-chars-backward " \r\t\n")
                    (min (1+ (line-end-position)) (point-max)))
		item)))
    ;; Remove item from buffer.
    (delete-region beg end)
    ;; Remove item from structure and shift others items accordingly.
    ;; Don't forget to shift also ending position when appropriate.
    (let ((size (- end beg)))
      (delq nil (mapcar (lambda (e)
			  (let ((pos (car e)))
			    (cond
			     ((< pos item)
			      (let ((end-e (nth 6 e)))
				(cond
				 ((< end-e item) e)
				 ((= end-e item)
				  (append (butlast e) (list beg)))
				 (t
				  (append (butlast e) (list (- end-e size)))))))
			     ((< pos end) nil)
			     (t
			      (cons (- pos size)
				    (append (butlast (cdr e))
					    (list (- (nth 6 e) size))))))))
			struct)))))