]> git.eshelyaron.com Git - emacs.git/commitdiff
Prefer seq-random-elt to nth+random
authorStefan Kangas <stefan@marxist.se>
Fri, 24 Sep 2021 17:41:03 +0000 (19:41 +0200)
committerStefan Kangas <stefan@marxist.se>
Fri, 24 Sep 2021 17:41:03 +0000 (19:41 +0200)
* lisp/emacs-lisp/seq.el (seq-random-elt): Autoload.
* lisp/avoid.el (mouse-avoidance-random-shape):
* lisp/epa-ks.el (epa-ks--query-url):
* lisp/erc/erc-networks.el (erc-server-select):
* lisp/gnus/gnus-fun.el (gnus--random-face-with-type)
(gnus-fun-ppm-change-string):
* lisp/net/soap-inspect.el (soap-sample-value-for-xs-simple-type):
* lisp/obsolete/landmark.el (landmark-random-move):
* lisp/play/mpuz.el (mpuz-build-random-perm):
* lisp/play/zone.el (zone-pgm-stress):
* lisp/vc/add-log.el (add-change-log-entry):
* test/lisp/net/tramp-tests.el
(tramp-test44-asynchronous-requests): Prefer seq-random-elt to
nth+random.

lisp/avoid.el
lisp/emacs-lisp/seq.el
lisp/epa-ks.el
lisp/erc/erc-networks.el
lisp/gnus/gnus-fun.el
lisp/net/soap-inspect.el
lisp/obsolete/landmark.el
lisp/play/mpuz.el
lisp/play/zone.el
lisp/vc/add-log.el
test/lisp/net/tramp-tests.el

index d3afecf8cc25d8229d4c60dd332cff80e1f24a76..03707d104659dd45d6213255c6f981356fc30d0c 100644 (file)
@@ -43,7 +43,7 @@
 ;;
 ;; (if (eq window-system 'x)
 ;;     (mouse-avoidance-set-pointer-shape
-;;          (nth (random 4)
+;;          (seq-random-elt
 ;;               (list x-pointer-man x-pointer-spider
 ;;                     x-pointer-gobbler x-pointer-gumby))))
 ;;
@@ -125,7 +125,6 @@ TOP-OR-BOTTOM-POS: Distance from top or bottom edge of frame or window."
 ;; Internal variables
 (defvar mouse-avoidance-state nil)
 (defvar mouse-avoidance-pointer-shapes nil)
-(defvar mouse-avoidance-n-pointer-shapes 0)
 (defvar mouse-avoidance-old-pointer-shape nil)
 (defvar mouse-avoidance-animating-pointer nil)
 
@@ -306,11 +305,8 @@ redefine this function to suit your own tastes."
                      (all-completions "x-pointer-" obarray
                                       (lambda (x)
                                          (and (boundp x)
-                                              (integerp (symbol-value x)))))))
-       (setq mouse-avoidance-n-pointer-shapes
-             (length mouse-avoidance-pointer-shapes))))
-  (nth (random mouse-avoidance-n-pointer-shapes)
-       mouse-avoidance-pointer-shapes))
+                                               (integerp (symbol-value x)))))))))
+  (seq-random-elt mouse-avoidance-pointer-shapes))
 
 (defun mouse-avoidance-ignore-p ()
   (let ((mp (mouse-position)))
index ae5988296d8f2174648b2cc21cf82ac9b9f93840..baafc51693c8b6d0a254b71b11019a4a04a09e64 100644 (file)
@@ -570,6 +570,7 @@ SEQUENCE must be a sequence of numbers or markers."
 If no element is found, return nil."
   (ignore-errors (seq-elt sequence n)))
 
+;;;###autoload
 (cl-defgeneric seq-random-elt (sequence)
   "Return a random element from SEQUENCE.
 Signal an error if SEQUENCE is empty."
index ebdb12742186bf2d25402634c0e7ca7e7236aec5..35caa1a93c5b39268a39e2de2b763921e5eb0a5b 100644 (file)
@@ -149,8 +149,7 @@ If EXACT is non-nil, don't accept approximate matches."
           (cond ((null epa-keyserver)
                  (user-error "Empty keyserver pool"))
                 ((listp epa-keyserver)
-                 (nth (random (length epa-keyserver))
-                      epa-keyserver))
+                 (seq-random-elt epa-keyserver))
                 ((stringp epa-keyserver)
                  epa-keyserver)
                 ((error "Invalid type for `epa-keyserver'")))
index 1c7742afd219549ae89f0ab04d3ca2c73bf4949b..678c596760b2962daa6e8a2d2df7551cb0c3184f 100644 (file)
@@ -824,7 +824,7 @@ As an example:
         (ports (if (listp (nth 3 srv))
                    (erc-ports-list (nth 3 srv))
                  (list (nth 3 srv))))
-        (port (nth (random (length ports)) ports)))
+         (port (and ports (seq-random-elt ports))))
     (erc :server host :port port)))
 
 ;;; The following experimental
index 8bca4ffe38f52eef82fb6ded29d9deb793bd639e..bfc57a2d605b894887c599e6640c14dc94e18ca1 100644 (file)
@@ -103,7 +103,7 @@ PNG format."
             (remove nil (mapcar
                          (lambda (f) (unless (string-match (or omit "^$") f) f))
                          (directory-files dir t ext))))
-           (file (nth (random (length files)) files)))
+           (file (and files (seq-random-elt files))))
       (when file
         (funcall fun file)))))
 
@@ -315,7 +315,7 @@ colors of the displayed X-Faces."
   (let* ((possibilities '("%02x0000" "00%02x00" "0000%02x"
                          "%02x%02x00" "00%02x%02x" "%02x00%02x"))
         (format (concat "'#%02x%02x%02x' '#"
-                        (nth (random 6) possibilities)
+                         (seq-random-elt possibilities)
                         "'"))
         (values nil))
   (dotimes (i 255)
index b994b0ed862b5c24684ee1ec4b3726c64f079732..5207ca8ff19b916a690ce3c99a75703e54a6ba17 100644 (file)
@@ -114,7 +114,7 @@ This is a specialization of `soap-sample-value' for
    (cond
     ((soap-xs-simple-type-enumeration type)
      (let ((enumeration (soap-xs-simple-type-enumeration type)))
-       (nth (random (length enumeration)) enumeration)))
+       (and enumeration (seq-random-elt enumeration))))
     ((soap-xs-simple-type-pattern type)
      (format "a string matching %s" (soap-xs-simple-type-pattern type)))
     ((soap-xs-simple-type-length-range type)
@@ -134,7 +134,7 @@ This is a specialization of `soap-sample-value' for
         (t (random 100)))))
     ((consp (soap-xs-simple-type-base type)) ; an union of values
      (let ((base (soap-xs-simple-type-base type)))
-       (soap-sample-value (nth (random (length base)) base))))
+       (soap-sample-value (and base (seq-random-elt base)))))
     ((soap-xs-basic-type-p (soap-xs-simple-type-base type))
      (soap-sample-value (soap-xs-simple-type-base type))))))
 
index cc4fd19c389e2e5978ee0b200ef191a2efb394fc..83e7649a69ceb6ee3590decac206e9f05522aa91 100644 (file)
@@ -1470,7 +1470,7 @@ push him out of it."
   (mapc
    (lambda (direction) (put direction 'y_t 0))
    landmark-directions)
-  (dolist (direction (nth (random 8) landmark-8-directions))
+  (dolist (direction (seq-random-elt landmark-8-directions))
     (put direction 'y_t 1.0))
   (landmark-move))
 
index ff174fed6c2448c4dccdffb37e199e3f8890f619..df2b6fc867a0bee652a2a44cfb08f81a52e055f5 100644 (file)
@@ -153,7 +153,7 @@ You may abort a game by typing \\<mpuz-mode-map>\\[mpuz-offer-abort]."
        (index 10)
        elem)
     (while letters
-      (setq elem    (nth (random index) letters)
+      (setq elem    (seq-random-elt letters)
            letters (delq elem letters)
            index   (1- index))
       (aset mpuz-digit-to-letter index elem)
index 27aa48f4c9a94a1a2dd6dc216bd93df086a23b93..a5d4ac9dc662338eb722eb2be6c2ea4090847f4a 100644 (file)
@@ -596,7 +596,7 @@ If the element is a function or a list of a function and a number,
          (forward-line -1)
          (delete-region (point) (line-beginning-position 2))
          (goto-char (point-min))
-         (insert (nth (random (length lines)) lines)))
+         (insert (seq-random-elt lines)))
        (message (concat (make-string (random (- (frame-width) 5)) ? ) "grrr"))
        (sit-for 0.1)))))
 
index 2e20284951feb6e23d7593ab6512bb94142f505b..1290d7e03a514d498d68e3b15ba1f5c59723dd6c 100644 (file)
@@ -930,8 +930,7 @@ non-nil, otherwise in local time."
                            (not (looking-at "[ \t]+.*<.*>$")))
                          (setq hit t)))))
             (forward-line 1)
-          (insert (nth (random (length new-entries))
-                       new-entries)
+          (insert (and new-entries (seq-random-elt new-entries))
                   (if use-hard-newlines hard-newline "\n")
                   (if use-hard-newlines hard-newline "\n"))
           (forward-line -1))))
index 9f0264abc1bf47b80913e496bc1a129c1a324632..f105c6f60ba0426b7d4508b1822774ac31ce09cb 100644 (file)
@@ -6787,8 +6787,7 @@ process sentinels.  They shall not disturb each other."
                     (let ((time (float-time))
                           (default-directory tmp-name)
                           (file
-                           (buffer-name
-                            (nth (random (length buffers)) buffers)))
+                           (buffer-name (seq-random-elt buffers)))
                          ;; A remote operation in a timer could
                          ;; confuse Tramp heavily.  So we ignore this
                          ;; error here.
@@ -6853,7 +6852,7 @@ process sentinels.  They shall not disturb each other."
             ;; the buffers.  Mix with regular operation.
             (let ((buffers (copy-sequence buffers)))
               (while buffers
-                (let* ((buf (nth (random (length buffers)) buffers))
+                (let* ((buf (seq-random-elt buffers))
                        (proc (get-buffer-process buf))
                        (file (process-get proc 'foo))
                        (count (process-get proc 'bar)))