From 126ad796ea4a02f01e4183d0b495c90461c84578 Mon Sep 17 00:00:00 2001 From: Andreas Gerler Date: Mon, 22 Feb 2016 09:57:02 +0100 Subject: [PATCH] update seq. --- elpa/seq-1.11.signed | 1 + .../seq-autoloads.el | 2 +- elpa/seq-1.11/seq-pkg.el | 1 + elpa/{seq-20150515.214 => seq-1.11}/seq.el | 139 ++++++++++++++++-- elpa/seq-20150515.214/seq-pkg.el | 1 - elpa/seq-readme.txt | 13 ++ 6 files changed, 143 insertions(+), 14 deletions(-) create mode 100644 elpa/seq-1.11.signed rename elpa/{seq-20150515.214 => seq-1.11}/seq-autoloads.el (82%) create mode 100644 elpa/seq-1.11/seq-pkg.el rename elpa/{seq-20150515.214 => seq-1.11}/seq.el (79%) delete mode 100644 elpa/seq-20150515.214/seq-pkg.el create mode 100644 elpa/seq-readme.txt diff --git a/elpa/seq-1.11.signed b/elpa/seq-1.11.signed new file mode 100644 index 00000000..45784d6b --- /dev/null +++ b/elpa/seq-1.11.signed @@ -0,0 +1 @@ +Good signature from 474F05837FBDEF9B GNU ELPA Signing Agent (trust undefined) created at 2015-10-20T11:05:02+0200 using DSA \ No newline at end of file diff --git a/elpa/seq-20150515.214/seq-autoloads.el b/elpa/seq-1.11/seq-autoloads.el similarity index 82% rename from elpa/seq-20150515.214/seq-autoloads.el rename to elpa/seq-1.11/seq-autoloads.el index ca9332aa..70a5bc8e 100644 --- a/elpa/seq-20150515.214/seq-autoloads.el +++ b/elpa/seq-1.11/seq-autoloads.el @@ -3,7 +3,7 @@ ;;; Code: (add-to-list 'load-path (or (file-name-directory #$) (car load-path))) -;;;### (autoloads nil nil ("seq.el") (21908 14191 997184 0)) +;;;### (autoloads nil nil ("seq.el") (22218 52471 978369 0)) ;;;*** diff --git a/elpa/seq-1.11/seq-pkg.el b/elpa/seq-1.11/seq-pkg.el new file mode 100644 index 00000000..e5dce4f0 --- /dev/null +++ b/elpa/seq-1.11/seq-pkg.el @@ -0,0 +1 @@ +(define-package "seq" "1.11" "Sequence manipulation functions" 'nil :url "http://elpa.gnu.org/packages/seq.html" :keywords '("sequences")) diff --git a/elpa/seq-20150515.214/seq.el b/elpa/seq-1.11/seq.el similarity index 79% rename from elpa/seq-20150515.214/seq.el rename to elpa/seq-1.11/seq.el index c4232fca..9b97b916 100644 --- a/elpa/seq-20150515.214/seq.el +++ b/elpa/seq-1.11/seq.el @@ -4,8 +4,7 @@ ;; Author: Nicolas Petton ;; Keywords: sequences -;; Package-Version: 20150515.214 -;; Version: 1.7 +;; Version: 1.11 ;; Package: seq ;; Maintainer: emacs-devel@gnu.org @@ -165,13 +164,27 @@ If SEQ is empty, return INITIAL-VALUE and FUNCTION is not called." (setq acc (funcall function acc elt))) acc))) -(defun seq-some-p (pred seq) - "Return any element for which (PRED element) is non-nil in SEQ, nil otherwise." +(defun seq-some (pred seq) + "Return the first value for which if (PRED element) is non-nil for in SEQ." + (catch 'seq--break + (seq-doseq (elt seq) + (let ((result (funcall pred elt))) + (when result + (throw 'seq--break result)))) + nil)) + +(defun seq-find (pred seq &optional default) + "Return the first element for which (PRED element) is non-nil in SEQ. +If no element is found, return DEFAULT. + +Note that `seq-find' has an ambiguity if the found element is +identical to DEFAULT, as it cannot be known if an element was +found or not." (catch 'seq--break (seq-doseq (elt seq) (when (funcall pred elt) (throw 'seq--break elt))) - nil)) + default)) (defun seq-every-p (pred seq) "Return non-nil if (PRED element) is non-nil for all elements of the sequence SEQ." @@ -203,19 +216,30 @@ The result is a sequence of the same type as SEQ." (let ((result (seq-sort pred (append seq nil)))) (seq-into result (type-of seq))))) -(defun seq-contains-p (seq elt &optional testfn) +(defun seq-contains (seq elt &optional testfn) "Return the first element in SEQ that equals to ELT. Equality is defined by TESTFN if non-nil or by `equal' if nil." - (seq-some-p (lambda (e) + (seq-some (lambda (e) (funcall (or testfn #'equal) elt e)) seq)) +(defun seq-position (seq elt &optional testfn) + "Return the index of the first element in SEQ that is equal to ELT. +Equality is defined by TESTFN if non-nil or by `equal' if nil." + (let ((index 0)) + (catch 'seq--break + (seq-doseq (e seq) + (when (funcall (or testfn #'equal) e elt) + (throw 'seq--break index)) + (setq index (1+ index))) + nil))) + (defun seq-uniq (seq &optional testfn) "Return a list of the elements of SEQ with duplicates removed. TESTFN is used to compare elements, or `equal' if TESTFN is nil." (let ((result '())) (seq-doseq (elt seq) - (unless (seq-contains-p result elt testfn) + (unless (seq-contains result elt testfn) (setq result (cons elt result)))) (nreverse result))) @@ -273,17 +297,17 @@ negative integer or 0, nil is returned." "Return a list of the elements that appear in both SEQ1 and SEQ2. Equality is defined by TESTFN if non-nil or by `equal' if nil." (seq-reduce (lambda (acc elt) - (if (seq-contains-p seq2 elt testfn) + (if (seq-contains seq2 elt testfn) (cons elt acc) acc)) (seq-reverse seq1) '())) (defun seq-difference (seq1 seq2 &optional testfn) - "Return a list of th elements that appear in SEQ1 but not in SEQ2. + "Return a list of the elements that appear in SEQ1 but not in SEQ2. Equality is defined by TESTFN if non-nil or by `equal' if nil." (seq-reduce (lambda (acc elt) - (if (not (seq-contains-p seq2 elt testfn)) + (if (not (seq-contains seq2 elt testfn)) (cons elt acc) acc)) (seq-reverse seq1) @@ -326,6 +350,16 @@ TYPE can be one of the following symbols: vector, string or list." (`list (append seq nil)) (t (error "Not a sequence type name: %S" type)))) +(defun seq-min (seq) + "Return the smallest element of SEQ. +SEQ must be a sequence of numbers or markers." + (apply #'min (seq-into seq 'list))) + +(defun seq-max (seq) + "Return the largest element of SEQ. +SEQ must be a sequence of numbers or markers." + (apply #'max (seq-into seq 'list))) + (defun seq--drop-list (list n) "Return a list from LIST without its first N elements. This is an optimization for lists in `seq-drop'." @@ -443,7 +477,88 @@ If no element is found, return nil." (unless (fboundp 'elisp--font-lock-flush-elisp-buffers) ;; In Emacs≥25, (via elisp--font-lock-flush-elisp-buffers and a few others) ;; we automatically highlight macros. - (add-to-list 'emacs-lisp-mode-hook #'seq--activate-font-lock-keywords)) + (add-hook 'emacs-lisp-mode-hook #'seq--activate-font-lock-keywords)) + +;;;; ChangeLog: + +;; 2015-10-20 Nicolas Petton +;; +;; Update seq.el to version 1.11 +;; +;; * packages/seq/seq.el: +;; * packages/seq/tests/seq-tests.el: Update. +;; +;; 2015-09-18 Nicolas Petton +;; +;; Update seq.el to version 1.9 +;; +;; * packages/seq/seq.el: Update to version 1.9. +;; * packages/seq/tests/seq-tests.el: Update to version 1.9. +;; +;; 2015-07-09 Nicolas Petton +;; +;; Update seq.el to version 1.8 +;; +;; * packages/seq/seq.el: Update to version 1.8. +;; * packages/seq/tests/seq-tests.el: Update to version 1.8. +;; +;; 2015-05-15 Nicolas Petton +;; +;; Update seq.el to version 1.7 +;; +;; * packages/seq/seq.el: Update to version 1.7. +;; * packages/seq/tests/seq-tests.el: Update to version 1.7. +;; +;; 2015-04-27 Nicolas Petton +;; +;; * packages/seq/seq.el: Update seq.el to version 1.5. +;; +;; 2015-04-15 Nicolas Petton +;; +;; seq.el update +;; +;; * packages/seq/seq.el: Update seq.el to version 1.4 +;; * packages/seq/tests/seq-tests.el: Update seq.el to version 1.4 +;; +;; 2015-03-25 Nicolas Petton +;; +;; Rephrases a comment in seq.el about the order of the arguments +;; +;; * packages/seq/seq.el: Better comment about the order of the arguments +;; +;; 2015-03-09 Nicolas Petton +;; +;; Update seq.el to version 1.3 +;; +;; * packages/seq/seq.el: update to version 1.3 +;; * packages/seq/tests/seq-tests.el: update to version 1.3 +;; +;; 2015-02-11 Nicolas Petton +;; +;; Update seq.el to version 1.2 +;; +;; * package/seq/seq.el: Update to version 1.2 +;; * packages/seq/tests/seq-tests.el: Update to version 1.2 +;; +;; 2015-02-09 Nicolas Petton +;; +;; Update seq.el to version 1.1.1 +;; +;; * package/seq/seq.el: Update to version 1.1.1 +;; * packages/seq/tests/seq-tests.el: Update to version 1.1.1 +;; +;; 2015-02-06 Nicolas Petton +;; +;; Update seq.el to version 1.1 +;; +;; * packages/seq/seq.el: Update to version 1.1 +;; * packages/seq/tests/seq-tests.el: Update to version 1.1 +;; +;; 2015-01-14 Nicolas Petton +;; +;; packages/seq: New package +;; + (provide 'seq) ;;; seq.el ends here diff --git a/elpa/seq-20150515.214/seq-pkg.el b/elpa/seq-20150515.214/seq-pkg.el deleted file mode 100644 index 3fcfc35b..00000000 --- a/elpa/seq-20150515.214/seq-pkg.el +++ /dev/null @@ -1 +0,0 @@ -(define-package "seq" "20150515.214" "Sequence manipulation functions" 'nil :keywords '("sequences")) diff --git a/elpa/seq-readme.txt b/elpa/seq-readme.txt new file mode 100644 index 00000000..8b59def0 --- /dev/null +++ b/elpa/seq-readme.txt @@ -0,0 +1,13 @@ +Sequence-manipulation functions that complement basic functions +provided by subr.el. + +All functions are prefixed with "seq-". + +All provided functions work on lists, strings and vectors. + +Functions taking a predicate or iterating over a sequence using a +function as argument take the function as their first argument and +the sequence as their second argument. All other functions take +the sequence as their first argument. + +All functions are tested in test/automated/seq-tests.el -- 2.47.3