# HG changeset patch # User Richard M. Stallman # Date 808967725 0 # Node ID 28a8f63327fcc8b862e7ad56f57f71735a28d3cc # Parent 5c9d2e13992585839ce4086bab7ca992c2392777 (dired-string-replace-match): Simplify using replace-match. diff -r 5c9d2e139925 -r 28a8f63327fc lisp/dired.el --- 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."