]> git.eshelyaron.com Git - emacs.git/commitdiff
(dired-string-replace-match): Simplify using replace-match.
authorRichard M. Stallman <rms@gnu.org>
Mon, 21 Aug 1995 01:15:25 +0000 (01:15 +0000)
committerRichard M. Stallman <rms@gnu.org>
Mon, 21 Aug 1995 01:15:25 +0000 (01:15 +0000)
lisp/dired.el

index 1385c7985352fe8b5f7e629293efecdbc4b5e88a..9b0ba468fb5a18b5b182206eb3016c2bebecd159 100644 (file)
@@ -1177,8 +1177,6 @@ Optional arg NO-ERROR-IF-NOT-FILEP means return nil if no filename on
        file
       (and file (concat (dired-current-directory localp) file)))))
 
-;; Cloning replace-match to work on strings instead of in buffer:
-;; The FIXEDCASE parameter of replace-match is not implemented.
 (defun dired-string-replace-match (regexp string newtext
                                          &optional literal global)
   "Replace first match of REGEXP in STRING with NEWTEXT.
@@ -1186,25 +1184,15 @@ If it does not match, nil is returned instead of the new string.
 Optional arg LITERAL means to take NEWTEXT literally.
 Optional arg GLOBAL means to replace all matches."
   (if global
-        (let ((result "") (start 0) mb me)
-         (while (string-match regexp string start)
-           (setq mb (match-beginning 0)
-                 me (match-end 0)
-                 result (concat result
-                                (substring string start mb)
-                                (if literal
-                                    newtext
-                                  (dired-expand-newtext string newtext)))
-                 start me))
-         (if mb                        ; matched at least once
-             (concat result (substring string start))
-           nil))
-    ;; not GLOBAL
+      (let ((start 0))
+       (while (string-match regexp string start)
+         (let ((from-end (- (length string) (match-end 0))))
+           (setq string (replace-match newtext t literal string))
+           (setq start (- (length string) from-end))))
+         string)
     (if (not (string-match regexp string 0))
        nil
-      (concat (substring string 0 (match-beginning 0))
-             (if literal newtext (dired-expand-newtext string newtext))
-             (substring string (match-end 0))))))
+      (replace-match newtext t literal string))))
 
 (defun dired-make-absolute (file &optional dir)
   ;;"Convert FILE (a pathname relative to DIR) to an absolute pathname."