]> git.eshelyaron.com Git - emacs.git/commitdiff
Simplify rng-substq with cl-substitute
authorStefan Kangas <stefankangas@gmail.com>
Sat, 5 Aug 2023 15:58:19 +0000 (17:58 +0200)
committerStefan Kangas <stefankangas@gmail.com>
Sat, 5 Aug 2023 15:58:19 +0000 (17:58 +0200)
* lisp/nxml/rng-util.el (rng-substq): Simplify.
(cl-lib): Require.

lisp/nxml/rng-util.el

index 27c924d960f4fe60fc3a3916f8bcea2557f0c83a..4f49885fc45e0f2cc67f0145b2d0227ecfa2020f 100644 (file)
@@ -24,6 +24,8 @@
 
 ;;; Code:
 
+(require 'cl-lib)
+
 (defun rng-make-datatypes-uri (uri)
   (if (string-equal uri "")
       ;; The spec doesn't say to do this, but it's perfectly conformant
 (defun rng-substq (new old list)
   "Replace first member of LIST (if any) that is `eq' to OLD by NEW.
 LIST is not modified."
-  (cond ((null list) nil)
-       ((eq (car list) old)
-        (cons new (cdr list)))
-       (t
-        (let ((tail (cons (car list)
-                          nil))
-              (rest (cdr list)))
-          (setq list tail)
-          (while rest
-            (let ((item (car rest)))
-              (setq rest (cdr rest))
-              (cond ((eq item old)
-                     (setcdr tail
-                             (cons new rest))
-                     (setq rest nil))
-                    (t
-                     (setq tail
-                           (setcdr tail
-                                   (cons item nil))))))))
-        list)))
+  (cl-substitute new old list :count 1 :test #'eq))
 
 (defun rng-escape-string (s)
   (replace-regexp-in-string "[&\"<>]"