summaryrefslogtreecommitdiff
path: root/lisp/dired.el
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1995-08-21 01:15:25 +0000
committerRichard M. Stallman <rms@gnu.org>1995-08-21 01:15:25 +0000
commit856321e221094e93285cd3e03b6699e1152793de (patch)
tree5583b607af69d49d26be0be06a3bb6ea5a5a3644 /lisp/dired.el
parent0b1c32a15f983fdb6691de0a99b256cab4a3f03f (diff)
downloademacs-856321e221094e93285cd3e03b6699e1152793de.tar.gz
(dired-string-replace-match): Simplify using replace-match.
Diffstat (limited to 'lisp/dired.el')
-rw-r--r--lisp/dired.el26
1 files changed, 7 insertions, 19 deletions
diff --git a/lisp/dired.el b/lisp/dired.el
index 1385c798535..9b0ba468fb5 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -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."