]> code.delx.au - gnu-emacs-elpa/commitdiff
Fix #33 Fix #24 Define seq-mapn
authorArtur Malabarba <bruce.connor.am@gmail.com>
Sat, 31 Oct 2015 07:31:57 +0000 (07:31 +0000)
committerArtur Malabarba <bruce.connor.am@gmail.com>
Sat, 31 Oct 2015 07:31:57 +0000 (07:31 +0000)
beacon.el

index 9a9f8167a2d6ed44d704cd753907d5eab1f87b22..63ebbae1e89faa4a07d7d866a3c2ce186785a6dc 100644 (file)
--- a/beacon.el
+++ b/beacon.el
@@ -5,7 +5,7 @@
 ;; Author: Artur Malabarba <emacs@endlessparentheses.com>
 ;; URL: https://github.com/Malabarba/beacon
 ;; Keywords: convenience
-;; Version: 0.5
+;; Version: 0.5.1
 ;; Package-Requires: ((seq "1.11"))
 
 ;; This program is free software; you can redistribute it and/or modify
 
 (require 'seq)
 (require 'faces)
+(unless (fboundp 'seq-mapn)
+  ;; This is for people who are on outdated Emacs snapshots. Will be
+  ;; deleted in a couple of weeks.
+  (defun seq-mapn (function sequence &rest sequences)
+    "Like `seq-map' but FUNCTION is mapped over all SEQUENCES.
+The arity of FUNCTION must match the number of SEQUENCES, and the
+mapping stops on the shortest sequence.
+Return a list of the results.
+
+\(fn FUNCTION SEQUENCES...)"
+    (let ((result nil)
+          (sequences (seq-map (lambda (s) (seq-into s 'list))
+                            (cons sequence sequences))))
+      (while (not (memq nil sequences))
+        (push (apply function (seq-map #'car sequences)) result)
+        (setq sequences (seq-map #'cdr sequences)))
+      (nreverse result))))
 
 (defgroup beacon nil
   "Customization group for beacon."