diff options
author | Richard M. Stallman <rms@gnu.org> | 1995-08-21 01:15:25 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 1995-08-21 01:15:25 +0000 |
commit | 856321e221094e93285cd3e03b6699e1152793de (patch) | |
tree | 5583b607af69d49d26be0be06a3bb6ea5a5a3644 /lisp/dired.el | |
parent | 0b1c32a15f983fdb6691de0a99b256cab4a3f03f (diff) | |
download | emacs-856321e221094e93285cd3e03b6699e1152793de.tar.gz |
(dired-string-replace-match): Simplify using replace-match.
Diffstat (limited to 'lisp/dired.el')
-rw-r--r-- | lisp/dired.el | 26 |
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." |