From 437fe5aeffe4782f9cc8b149a91139027a1b1e4d Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Thu, 22 Dec 1994 04:17:30 +0000 Subject: [PATCH] (dired-string-replace-match): Function moved here. --- lisp/dired.el | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/lisp/dired.el b/lisp/dired.el index e0303cb4f00..a02f63a7efe 100644 --- a/lisp/dired.el +++ b/lisp/dired.el @@ -1161,6 +1161,35 @@ 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. +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 + (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)))))) + (defun dired-make-absolute (file &optional dir) ;;"Convert FILE (a pathname relative to DIR) to an absolute pathname." ;; We can't always use expand-file-name as this would get rid of `.' -- 2.39.5