changeset 12906:28a8f63327fc

(dired-string-replace-match): Simplify using replace-match.
author Richard M. Stallman <rms@gnu.org>
date Mon, 21 Aug 1995 01:15:25 +0000
parents 5c9d2e139925
children 6cae53a06172
files lisp/dired.el
diffstat 1 files changed, 7 insertions(+), 19 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/dired.el	Mon Aug 21 01:12:12 1995 +0000
+++ b/lisp/dired.el	Mon Aug 21 01:15:25 1995 +0000
@@ -1177,8 +1177,6 @@
 	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 @@
 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."