emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 6686a31 1/2: Remove local uniquify functions in favour of seq-uni


From: Stefan Kangas
Subject: master 6686a31 1/2: Remove local uniquify functions in favour of seq-uniq
Date: Mon, 5 Apr 2021 09:26:48 -0400 (EDT)

branch: master
commit 6686a31591d2d22a4d1c7b6e68a618823186c48e
Author: Stefan Kangas <stefan@marxist.se>
Commit: Stefan Kangas <stefan@marxist.se>

    Remove local uniquify functions in favour of seq-uniq
    
    * lisp/emacs-lisp/seq.el (seq-uniq): Add autoload cookie.
    * lisp/pcomplete.el: (pcomplete-uniquify-list): Use seq-uniq.
    * lisp/eshell/esh-util.el (eshell-uniqify-list)
    (eshell-uniquify-list):
    * lisp/nxml/rng-util.el (rng-uniquify-equal):
    * lisp/progmodes/idlwave.el (idlwave-uniquify):
    * lisp/textmodes/artist.el (artist-uniq): Make into obsolete
    function aliases for seq-uniq.  Update callers.
    * lisp/nxml/rng-util.el (rng-uniquify-eq): Make obsolete in favor
    of seq-uniq.  Update callers.
---
 lisp/emacs-lisp/seq.el    |  1 +
 lisp/eshell/em-pred.el    |  2 +-
 lisp/eshell/esh-util.el   | 16 ++--------------
 lisp/nxml/rng-loc.el      |  2 +-
 lisp/nxml/rng-match.el    |  2 +-
 lisp/nxml/rng-nxml.el     |  2 +-
 lisp/nxml/rng-util.el     | 28 ++++++++--------------------
 lisp/pcomplete.el         | 15 +++------------
 lisp/progmodes/idlwave.el | 12 +++---------
 lisp/textmodes/artist.el  | 14 ++------------
 10 files changed, 23 insertions(+), 71 deletions(-)

diff --git a/lisp/emacs-lisp/seq.el b/lisp/emacs-lisp/seq.el
index 7aa5684..6c15463 100644
--- a/lisp/emacs-lisp/seq.el
+++ b/lisp/emacs-lisp/seq.el
@@ -431,6 +431,7 @@ Equality is defined by TESTFN if non-nil or by `equal' if 
nil."
         (setq index (1+ index)))
       nil)))
 
+;;;###autoload
 (cl-defgeneric seq-uniq (sequence &optional testfn)
   "Return a list of the elements of SEQUENCE with duplicates removed.
 TESTFN is used to compare elements, or `equal' if TESTFN is nil."
diff --git a/lisp/eshell/em-pred.el b/lisp/eshell/em-pred.el
index b0a7544..0780d6e 100644
--- a/lisp/eshell/em-pred.el
+++ b/lisp/eshell/em-pred.el
@@ -130,7 +130,7 @@ The format of each entry is
     (?e . (lambda (lst) (mapcar #'file-name-extension lst)))
     (?t . (lambda (lst) (mapcar #'file-name-nondirectory lst)))
     (?q . (lambda (lst) (mapcar #'eshell-escape-arg lst)))
-    (?u . (lambda (lst) (eshell-uniquify-list lst)))
+    (?u . (lambda (lst) (seq-uniq lst)))
     (?o . (lambda (lst) (sort lst #'string-lessp)))
     (?O . (lambda (lst) (nreverse (sort lst #'string-lessp))))
     (?j . (eshell-join-members))
diff --git a/lisp/eshell/esh-util.el b/lisp/eshell/esh-util.el
index 1dcbed3..a48f626 100644
--- a/lisp/eshell/esh-util.el
+++ b/lisp/eshell/esh-util.el
@@ -291,20 +291,6 @@ Prepend remote identification of `default-directory', if 
any."
 
 (define-obsolete-function-alias 'eshell-flatten-list #'flatten-tree "27.1")
 
-(defun eshell-uniquify-list (l)
-  "Remove occurring multiples in L.  You probably want to sort first."
-  (let ((m l))
-    (while m
-      (while (and (cdr m)
-                 (string= (car m)
-                          (cadr m)))
-       (setcdr m (cddr m)))
-      (setq m (cdr m))))
-  l)
-(define-obsolete-function-alias
-  'eshell-uniqify-list
-  'eshell-uniquify-list "27.1")
-
 (defun eshell-stringify (object)
   "Convert OBJECT into a string value."
   (cond
@@ -700,6 +686,8 @@ gid format.  Valid values are `string' and `integer', 
defaulting to
 
 ;; Obsolete.
 
+(define-obsolete-function-alias 'eshell-uniquify-list #'seq-uniq "28.1")
+(define-obsolete-function-alias 'eshell-uniqify-list #'seq-uniq "28.1")
 (define-obsolete-function-alias 'eshell-copy-tree #'copy-tree "28.1")
 (define-obsolete-function-alias 'eshell-user-name #'user-login-name "28.1")
 
diff --git a/lisp/nxml/rng-loc.el b/lisp/nxml/rng-loc.el
index d5a608d..a38da79 100644
--- a/lisp/nxml/rng-loc.el
+++ b/lisp/nxml/rng-loc.el
@@ -182,7 +182,7 @@ If TYPE-ID is non-nil, then locate the schema for this 
TYPE-ID."
     (while files
       (setq type-ids (rng-possible-type-ids-using (car files) type-ids))
       (setq files (cdr files)))
-    (rng-uniquify-equal (sort type-ids 'string<))))
+    (seq-uniq (sort type-ids 'string<))))
 
 (defun rng-locate-schema-file-using (files)
   "Locate a schema using the schema locating files FILES.
diff --git a/lisp/nxml/rng-match.el b/lisp/nxml/rng-match.el
index 4fc6727..7a2739c 100644
--- a/lisp/nxml/rng-match.el
+++ b/lisp/nxml/rng-match.el
@@ -472,7 +472,7 @@ list is nullable and whose cdr is the normalized list."
     (cons nullable
          (if sorted
              head
-           (rng-uniquify-eq (sort head 'rng-compare-ipattern))))))
+            (seq-uniq (sort head 'rng-compare-ipattern) #'eq)))))
 
 (defun rng-compare-ipattern (p1 p2)
   (< (rng--ipattern-index p1)
diff --git a/lisp/nxml/rng-nxml.el b/lisp/nxml/rng-nxml.el
index 7ea6fb2..33768a4 100644
--- a/lisp/nxml/rng-nxml.el
+++ b/lisp/nxml/rng-nxml.el
@@ -522,7 +522,7 @@ set `xmltok-dtd'.  Returns the position of the end of the 
token."
          (unless attribute-flag
            (setcdr ns-prefixes (cons nil (cdr ns-prefixes))))))
       (setq iter (cdr iter)))
-    (rng-uniquify-equal
+    (seq-uniq
      (sort (apply #'append
                  (cons extra-strings
                        (mapcar (lambda (name)
diff --git a/lisp/nxml/rng-util.el b/lisp/nxml/rng-util.el
index a20e950..67e2ee9 100644
--- a/lisp/nxml/rng-util.el
+++ b/lisp/nxml/rng-util.el
@@ -36,26 +36,6 @@
 
 (defconst rng-builtin-datatypes-uri (rng-make-datatypes-uri ""))
 
-(defun rng-uniquify-eq (list)
-  "Destructively remove `eq' duplicates from LIST."
-  (and list
-       (let ((head list))
-        (while (cdr head)
-          (if (eq (car head) (cadr head))
-              (setcdr head (cddr head)))
-          (setq head (cdr head)))
-        list)))
-
-(defun rng-uniquify-equal (list)
-  "Destructively remove `equal' duplicates from LIST."
-  (and list
-       (let ((head list))
-        (while (cdr head)
-          (if (equal (car head) (cadr head))
-              (setcdr head (cddr head)))
-          (setq head (cdr head)))
-        list)))
-
 (defun rng-blank-p (str) (string-match "\\`[ \t\n\r]*\\'" str))
 
 (defun rng-substq (new old list)
@@ -104,6 +84,14 @@ LIST is not modified."
 
 (define-error 'rng-error nil)
 
+;; Obsolete.
+
+(defun rng-uniquify-eq (list)
+  (declare (obsolete seq-uniq "28.1"))
+  (seq-uniq list #'eq))
+
+(define-obsolete-function-alias 'rng-uniquify-equal #'seq-uniq "28.1")
+
 (provide 'rng-util)
 
 ;;; rng-util.el ends here
diff --git a/lisp/pcomplete.el b/lisp/pcomplete.el
index b648ecf..bffdcaa 100644
--- a/lisp/pcomplete.el
+++ b/lisp/pcomplete.el
@@ -1260,18 +1260,9 @@ If specific documentation can't be given, be generic."
 
 (defun pcomplete-uniquify-list (l)
   "Sort and remove multiples in L."
-  (setq l (sort l 'string-lessp))
-  (let ((m l))
-    (while m
-      (while (and (cdr m)
-                 (string= (car m)
-                          (cadr m)))
-       (setcdr m (cddr m)))
-      (setq m (cdr m))))
-  l)
-(define-obsolete-function-alias
-  'pcomplete-uniqify-list
-  'pcomplete-uniquify-list "27.1")
+  (setq l (sort l #'string-lessp))
+  (seq-uniq l))
+(define-obsolete-function-alias 'pcomplete-uniqify-list 
#'pcomplete-uniquify-list "27.1")
 
 (defun pcomplete-process-result (cmd &rest args)
   "Call CMD using `call-process' and return the simplest result."
diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el
index f53f3f3..75f2016 100644
--- a/lisp/progmodes/idlwave.el
+++ b/lisp/progmodes/idlwave.el
@@ -7601,15 +7601,6 @@ associated TAG, if any."
           (put-text-property (match-beginning 0) (match-end 0)
                              'face 'font-lock-string-face))))))
 
-(defun idlwave-uniquify (list)
-  (let ((ht (make-hash-table :size (length list) :test 'equal)))
-    (delq nil
-         (mapcar (lambda (x)
-                   (unless (gethash x ht)
-                     (puthash x t ht)
-                     x))
-                 list))))
-
 (defun idlwave-after-successful-completion (type slash &optional verify)
   "Add `=' or `(' after successful completion of keyword and function.
 Restore the pre-completion window configuration if possible."
@@ -9101,6 +9092,9 @@ This function was written since `list-abbrevs' looks 
terrible for IDLWAVE mode."
 ;; Run the hook
 (run-hooks 'idlwave-load-hook)
 
+;; Obsolete.
+(define-obsolete-function-alias 'idlwave-uniquify #'seq-uniq "28.1")
+
 (provide 'idlwave)
 
 ;;; idlwave.el ends here
diff --git a/lisp/textmodes/artist.el b/lisp/textmodes/artist.el
index 22ade15..fbb9d21 100644
--- a/lisp/textmodes/artist.el
+++ b/lisp/textmodes/artist.el
@@ -1753,13 +1753,6 @@ info-variant-part."
   "Call function FN with ARGS, if FN is not nil."
   `(if ,fn (funcall ,fn ,@args)))
 
-(defun artist-uniq (l)
-  "Remove consecutive duplicates in list L.  Comparison is done with `equal'."
-  (cond ((null l) nil)
-       ((null (cdr l)) l)              ; only one element in list
-       ((equal (car l) (car (cdr l))) (artist-uniq (cdr l))) ; first 2 equal
-       (t (cons (car l) (artist-uniq (cdr l)))))) ; first 2 are different
-
 (defun artist-string-split (str r)
   "Split string STR at occurrences of regexp R, returning a list of strings."
   (let ((res nil)
@@ -2761,7 +2754,7 @@ to append to the end of the list, when doing free-hand 
drawing)."
 Also, the `artist-key-poly-point-list' is reversed."
 
   (setq artist-key-poly-point-list
-       (artist-uniq artist-key-poly-point-list))
+        (seq-uniq artist-key-poly-point-list))
 
   (if (>= (length artist-key-poly-point-list) 2)
 
@@ -5372,10 +5365,7 @@ The event, EV, is the mouse event."
         (concat "Hello Tomas,\n\n"
                 "I have a nice bug report on Artist for you! Here it is:")))))
 
-
-;;
-;; Now provide this minor mode
-;;
+(define-obsolete-function-alias 'artist-uniq #'seq-uniq "28.1")
 
 (provide 'artist)
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]