Преглед на файлове

list: Refactor `mapc' + `lambda' into `dolist'

* lisp/org-list.el (org-list-get-subtree):
(org-list-struct-fix-box):
(org-list-struct-fix-item-end):
(org-apply-on-list):
(org-list-set-item-visibility):
(org-toggle-checkbox):
(org-list-indent-item-generic): Use `dolist', or `pcase-dolist'
instead of `mapc' + `lambda'.
Nicolas Goaziou преди 4 години
родител
ревизия
609e4f004b
променени са 1 файла, в които са добавени 43 реда и са изтрити 49 реда
  1. 43 49
      lisp/org-list.el

+ 43 - 49
lisp/org-list.el

@@ -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: