|
@@ -910,13 +910,13 @@ items, as returned by `org-list-prevs-alist'."
|
|
|
STRUCT is the list structure."
|
|
|
(let* ((item-end (org-list-get-item-end item struct))
|
|
|
(sub-struct (cdr (member (assq item struct) struct)))
|
|
|
- subtree)
|
|
|
- (catch 'exit
|
|
|
- (mapc (lambda (e)
|
|
|
- (let ((pos (car e)))
|
|
|
- (if (< pos item-end) (push pos subtree) (throw 'exit nil))))
|
|
|
- sub-struct))
|
|
|
- (nreverse subtree)))
|
|
|
+ items)
|
|
|
+ (catch :exit
|
|
|
+ (pcase-dolist (`(,pos . ,_) sub-struct)
|
|
|
+ (if (< pos item-end)
|
|
|
+ (push pos items)
|
|
|
+ (throw :exit nil))))
|
|
|
+ (nreverse items)))
|
|
|
|
|
|
(defun org-list-get-all-items (item struct prevs)
|
|
|
"List all items in the same sub-list as ITEM.
|
|
@@ -1788,10 +1788,9 @@ This function modifies STRUCT."
|
|
|
;; There are boxes checked after an unchecked one: fix that.
|
|
|
(when (member "[X]" after-unchecked)
|
|
|
(let ((index (- (length struct) (length after-unchecked))))
|
|
|
- (mapc (lambda (e)
|
|
|
- (when (org-list-get-checkbox e struct)
|
|
|
- (org-list-set-checkbox e struct "[ ]")))
|
|
|
- (nthcdr index all-items))
|
|
|
+ (dolist (e (nthcdr index all-items))
|
|
|
+ (when (org-list-get-checkbox e struct)
|
|
|
+ (org-list-set-checkbox e struct "[ ]")))
|
|
|
;; Verify once again the structure, without ORDERED.
|
|
|
(org-list-struct-fix-box struct parents prevs nil)
|
|
|
;; Return blocking item.
|
|
@@ -1802,24 +1801,22 @@ This function modifies STRUCT."
|
|
|
|
|
|
This function modifies STRUCT."
|
|
|
(let (end-list acc-end)
|
|
|
- (mapc (lambda (e)
|
|
|
- (let* ((pos (car e))
|
|
|
- (ind-pos (org-list-get-ind pos struct))
|
|
|
- (end-pos (org-list-get-item-end pos struct)))
|
|
|
- (unless (assq end-pos struct)
|
|
|
- ;; To determine real ind of an ending position that is
|
|
|
- ;; not at an item, we have to find the item it belongs
|
|
|
- ;; to: it is the last item (ITEM-UP), whose ending is
|
|
|
- ;; further than the position we're interested in.
|
|
|
- (let ((item-up (assoc-default end-pos acc-end '>)))
|
|
|
- (push (cons
|
|
|
- ;; Else part is for the bottom point.
|
|
|
- (if item-up (+ (org-list-get-ind item-up struct) 2) 0)
|
|
|
- end-pos)
|
|
|
- end-list)))
|
|
|
- (push (cons ind-pos pos) end-list)
|
|
|
- (push (cons end-pos pos) acc-end)))
|
|
|
- struct)
|
|
|
+ (pcase-dolist (`(,pos . ,_) struct)
|
|
|
+ (let ((ind-pos (org-list-get-ind pos struct))
|
|
|
+ (end-pos (org-list-get-item-end pos struct)))
|
|
|
+ (unless (assq end-pos struct)
|
|
|
+ ;; To determine real ind of an ending position that is not
|
|
|
+ ;; at an item, we have to find the item it belongs to: it is
|
|
|
+ ;; the last item (ITEM-UP), whose ending is further than the
|
|
|
+ ;; position we're interested in.
|
|
|
+ (let ((item-up (assoc-default end-pos acc-end #'>)))
|
|
|
+ (push (cons
|
|
|
+ ;; Else part is for the bottom point.
|
|
|
+ (if item-up (+ (org-list-get-ind item-up struct) 2) 0)
|
|
|
+ end-pos)
|
|
|
+ end-list)))
|
|
|
+ (push (cons ind-pos pos) end-list)
|
|
|
+ (push (cons end-pos pos) acc-end)))
|
|
|
(setq end-list (sort end-list (lambda (e1 e2) (< (cdr e1) (cdr e2)))))
|
|
|
(org-list-struct-assoc-end struct end-list)))
|
|
|
|
|
@@ -2016,10 +2013,9 @@ beginning of the item."
|
|
|
(item (copy-marker (point-at-bol)))
|
|
|
(all (org-list-get-all-items (marker-position item) struct prevs))
|
|
|
(value init-value))
|
|
|
- (mapc (lambda (e)
|
|
|
- (goto-char e)
|
|
|
- (setq value (apply function value args)))
|
|
|
- (nreverse all))
|
|
|
+ (dolist (e (nreverse all))
|
|
|
+ (goto-char e)
|
|
|
+ (setq value (apply function value args)))
|
|
|
(goto-char item)
|
|
|
(move-marker item nil)
|
|
|
value))
|
|
@@ -2041,9 +2037,8 @@ Possible values are: `folded', `children' or `subtree'. See
|
|
|
;; Then fold every child.
|
|
|
(let* ((parents (org-list-parents-alist struct))
|
|
|
(children (org-list-get-children item struct parents)))
|
|
|
- (mapc (lambda (e)
|
|
|
- (org-list-set-item-visibility e struct 'folded))
|
|
|
- children)))
|
|
|
+ (dolist (child children)
|
|
|
+ (org-list-set-item-visibility child struct 'folded))))
|
|
|
((eq view 'subtree)
|
|
|
;; Show everything
|
|
|
(let ((item-end (org-list-get-item-end item struct)))
|
|
@@ -2423,15 +2418,15 @@ subtree, ignoring planning line and any drawer following it."
|
|
|
(items-to-toggle (cl-remove-if
|
|
|
(lambda (e) (or (< e lim-up) (> e lim-down)))
|
|
|
(mapcar #'car struct))))
|
|
|
- (mapc (lambda (e) (org-list-set-checkbox
|
|
|
- e struct
|
|
|
- ;; If there is no box at item, leave as-is
|
|
|
- ;; unless function was called with C-u prefix.
|
|
|
- (let ((cur-box (org-list-get-checkbox e struct)))
|
|
|
- (if (or cur-box (equal toggle-presence '(4)))
|
|
|
- ref-checkbox
|
|
|
- cur-box))))
|
|
|
- items-to-toggle)
|
|
|
+ (dolist (e items-to-toggle)
|
|
|
+ (org-list-set-checkbox
|
|
|
+ e struct
|
|
|
+ ;; If there is no box at item, leave as-is unless
|
|
|
+ ;; function was called with C-u prefix.
|
|
|
+ (let ((cur-box (org-list-get-checkbox e struct)))
|
|
|
+ (if (or cur-box (equal toggle-presence '(4)))
|
|
|
+ ref-checkbox
|
|
|
+ cur-box))))
|
|
|
(setq block-item (org-list-struct-fix-box
|
|
|
struct parents prevs orderedp))
|
|
|
;; Report some problems due to ORDERED status of subtree.
|
|
@@ -2679,10 +2674,9 @@ Return t if successful."
|
|
|
(org-list-bullet-string "-")))
|
|
|
;; Shift every item by OFFSET and fix bullets. Then
|
|
|
;; apply changes to buffer.
|
|
|
- (mapc (lambda (e)
|
|
|
- (let ((ind (org-list-get-ind (car e) struct)))
|
|
|
- (org-list-set-ind (car e) struct (+ ind offset))))
|
|
|
- struct)
|
|
|
+ (pcase-dolist (`(,pos . ,_) struct)
|
|
|
+ (let ((ind (org-list-get-ind pos struct)))
|
|
|
+ (org-list-set-ind pos struct (+ ind offset))))
|
|
|
(org-list-struct-fix-bul struct prevs)
|
|
|
(org-list-struct-apply-struct struct old-struct))))
|
|
|
;; Forbidden move:
|