Mercurial > emacs
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."