changeset 10214:82e7df72b8a0

(dired-string-replace-match): Function moved here.
author Richard M. Stallman <rms@gnu.org>
date Thu, 22 Dec 1994 04:17:30 +0000
parents dd2102e33b29
children 7690653b9231
files lisp/dired.el
diffstat 1 files changed, 29 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/dired.el	Thu Dec 22 04:16:36 1994 +0000
+++ b/lisp/dired.el	Thu Dec 22 04:17:30 1994 +0000
@@ -1161,6 +1161,35 @@
 	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 `.'