aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Gutov2019-02-07 12:20:09 +0300
committerDmitry Gutov2019-02-07 12:23:09 +0300
commit5e627fa5f5db8f27ea789d61148e7d5ade644956 (patch)
tree0d671bb2c79d7d959db34688d7c32a644697795a
parent1289ae999b85c6a8059c2f9116db4fd8dbe3b418 (diff)
downloademacs-5e627fa5f5db8f27ea789d61148e7d5ade644956.tar.gz
emacs-5e627fa5f5db8f27ea789d61148e7d5ade644956.zip
Rename multifile.el to fileloop.el
* lisp/multifile.el: Rename to fileloop.el as discussed in https://lists.gnu.org/archive/html/emacs-devel/2018-12/msg00475.html. Update symbol prefixes and all callers
-rw-r--r--doc/emacs/maintaining.texi10
-rw-r--r--etc/NEWS6
-rw-r--r--lisp/dired-aux.el8
-rw-r--r--lisp/fileloop.el (renamed from lisp/multifile.el)74
-rw-r--r--lisp/ldefs-boot.el22
-rw-r--r--lisp/menu-bar.el4
-rw-r--r--lisp/progmodes/etags.el36
-rw-r--r--lisp/progmodes/project.el14
8 files changed, 87 insertions, 87 deletions
diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi
index d97cfd355cc..fd0119e98ce 100644
--- a/doc/emacs/maintaining.texi
+++ b/doc/emacs/maintaining.texi
@@ -1990,7 +1990,7 @@ table.
1990@item M-x tags-query-replace @key{RET} @var{regexp} @key{RET} @var{replacement} @key{RET} 1990@item M-x tags-query-replace @key{RET} @var{regexp} @key{RET} @var{replacement} @key{RET}
1991Perform a @code{query-replace-regexp} on each file in the selected tags table. 1991Perform a @code{query-replace-regexp} on each file in the selected tags table.
1992 1992
1993@item M-x multifile-continue 1993@item M-x fileloop-continue
1994Restart one of the last 2 commands above, from the current location of point. 1994Restart one of the last 2 commands above, from the current location of point.
1995@end table 1995@end table
1996 1996
@@ -2026,9 +2026,9 @@ you can follow its progress. As soon as it finds an occurrence,
2026@code{tags-search} returns. This command requires tags tables to be 2026@code{tags-search} returns. This command requires tags tables to be
2027available (@pxref{Tags Tables}). 2027available (@pxref{Tags Tables}).
2028 2028
2029@findex multifile-continue 2029@findex fileloop-continue
2030 Having found one match with @code{tags-search}, you probably want to 2030 Having found one match with @code{tags-search}, you probably want to
2031find all the rest. @kbd{M-x multifile-continue} resumes the 2031find all the rest. @kbd{M-x fileloop-continue} resumes the
2032@code{tags-search}, finding one more match. This searches the rest of 2032@code{tags-search}, finding one more match. This searches the rest of
2033the current buffer, followed by the remaining files of the tags table. 2033the current buffer, followed by the remaining files of the tags table.
2034 2034
@@ -2051,10 +2051,10 @@ default is to use the same setting as the value of
2051single invocation of @kbd{M-x tags-query-replace}. But often it is 2051single invocation of @kbd{M-x tags-query-replace}. But often it is
2052useful to exit temporarily, which you can do with any input event that 2052useful to exit temporarily, which you can do with any input event that
2053has no special query replace meaning. You can resume the query 2053has no special query replace meaning. You can resume the query
2054replace subsequently by typing @kbd{M-x multifile-continue}; this 2054replace subsequently by typing @kbd{M-x fileloop-continue}; this
2055command resumes the last tags search or replace command that you did. 2055command resumes the last tags search or replace command that you did.
2056For instance, to skip the rest of the current file, you can type 2056For instance, to skip the rest of the current file, you can type
2057@w{@kbd{M-> M-x multifile-continue}}. 2057@w{@kbd{M-> M-x fileloop-continue}}.
2058 2058
2059 Note that the commands described above carry out much broader 2059 Note that the commands described above carry out much broader
2060searches than the @code{xref-find-definitions} family. The 2060searches than the @code{xref-find-definitions} family. The
diff --git a/etc/NEWS b/etc/NEWS
index 406ed6e3788..f889a8ac3c0 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -394,11 +394,11 @@ The mode is automatically enabled in files that start with the
394*** 'next-file' is now an obsolete alias of 'tags-next-file'. 394*** 'next-file' is now an obsolete alias of 'tags-next-file'.
395 395
396*** 'tags-loop-revert-buffers' is an obsolete alias of 396*** 'tags-loop-revert-buffers' is an obsolete alias of
397'multifile-revert-buffers'. 397'fileloop-revert-buffers'.
398 398
399*** The 'tags-loop-continue' function along with the 399*** The 'tags-loop-continue' function along with the
400'tags-loop-operate' and 'tags-loop-scan' variables are now obsolete; 400'tags-loop-operate' and 'tags-loop-scan' variables are now obsolete;
401use the new 'multifile-initialize' and 'multifile-continue' functions 401use the new 'fileloop-initialize' and 'fileloop-continue' functions
402instead. 402instead.
403 403
404** bibtex 404** bibtex
@@ -1085,7 +1085,7 @@ indicator instead of just the indicator (which is sometimes cryptic).
1085 1085
1086* New Modes and Packages in Emacs 27.1 1086* New Modes and Packages in Emacs 27.1
1087 1087
1088** multifile.el lets one setup multifile operations like search&replace. 1088** fileloop.el lets one setup multifile operations like search&replace.
1089 1089
1090+++ 1090+++
1091** Emacs can now visit files in archives as if they were directories. 1091** Emacs can now visit files in archives as if they were directories.
diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el
index 7e709601468..4be93c32207 100644
--- a/lisp/dired-aux.el
+++ b/lisp/dired-aux.el
@@ -2859,11 +2859,11 @@ is part of a file name (i.e., has the text property `dired-filename')."
2859Stops when a match is found. 2859Stops when a match is found.
2860To continue searching for next match, use command \\[tags-loop-continue]." 2860To continue searching for next match, use command \\[tags-loop-continue]."
2861 (interactive "sSearch marked files (regexp): ") 2861 (interactive "sSearch marked files (regexp): ")
2862 (multifile-initialize-search 2862 (fileloop-initialize-search
2863 regexp 2863 regexp
2864 (dired-get-marked-files nil nil #'dired-nondirectory-p) 2864 (dired-get-marked-files nil nil #'dired-nondirectory-p)
2865 'default) 2865 'default)
2866 (multifile-continue)) 2866 (fileloop-continue))
2867 2867
2868;;;###autoload 2868;;;###autoload
2869(defun dired-do-query-replace-regexp (from to &optional delimited) 2869(defun dired-do-query-replace-regexp (from to &optional delimited)
@@ -2881,11 +2881,11 @@ with the command \\[tags-loop-continue]."
2881 (if (and buffer (with-current-buffer buffer 2881 (if (and buffer (with-current-buffer buffer
2882 buffer-read-only)) 2882 buffer-read-only))
2883 (error "File `%s' is visited read-only" file)))) 2883 (error "File `%s' is visited read-only" file))))
2884 (multifile-initialize-replace 2884 (fileloop-initialize-replace
2885 from to (dired-get-marked-files nil nil #'dired-nondirectory-p) 2885 from to (dired-get-marked-files nil nil #'dired-nondirectory-p)
2886 (if (equal from (downcase from)) nil 'default) 2886 (if (equal from (downcase from)) nil 'default)
2887 delimited) 2887 delimited)
2888 (multifile-continue)) 2888 (fileloop-continue))
2889 2889
2890(declare-function xref--show-xrefs "xref") 2890(declare-function xref--show-xrefs "xref")
2891(declare-function xref-query-replace-in-results "xref") 2891(declare-function xref-query-replace-in-results "xref")
diff --git a/lisp/multifile.el b/lisp/fileloop.el
index a40f80947fb..2e77811a576 100644
--- a/lisp/multifile.el
+++ b/lisp/fileloop.el
@@ -1,4 +1,4 @@
1;;; multifile.el --- Operations on multiple files -*- lexical-binding: t; -*- 1;;; fileloop.el --- Operations on multiple files -*- lexical-binding: t; -*-
2 2
3;; Copyright (C) 2018-2019 Free Software Foundation, Inc. 3;; Copyright (C) 2018-2019 Free Software Foundation, Inc.
4 4
@@ -24,11 +24,11 @@
24;; version of etags.el. 24;; version of etags.el.
25 25
26;; TODO: 26;; TODO:
27;; - Maybe it would make sense to replace the multifile--* vars with a single 27;; - Maybe it would make sense to replace the fileloop--* vars with a single
28;; global var holding a struct, and then stash those structs into a history 28;; global var holding a struct, and then stash those structs into a history
29;; of past operations, so you can perform a multifile-search while in the 29;; of past operations, so you can perform a fileloop-search while in the
30;; middle of a multifile-replace and later go back to that 30;; middle of a fileloop-replace and later go back to that
31;; multifile-replace. 31;; fileloop-replace.
32;; - Make multi-isearch work on top of this library (might require changes 32;; - Make multi-isearch work on top of this library (might require changes
33;; to this library, of course). 33;; to this library, of course).
34 34
@@ -36,12 +36,12 @@
36 36
37(require 'generator) 37(require 'generator)
38 38
39(defgroup multifile nil 39(defgroup fileloop nil
40 "Operations on multiple files." 40 "Operations on multiple files."
41 :group 'tools) 41 :group 'tools)
42 42
43(defcustom multifile-revert-buffers 'silent 43(defcustom fileloop-revert-buffers 'silent
44 "Whether to revert files during multifile operation. 44 "Whether to revert files during fileloop operation.
45 `silent' means to only do it if `revert-without-query' is applicable; 45 `silent' means to only do it if `revert-without-query' is applicable;
46 t means to offer to do it for all applicable files; 46 t means to offer to do it for all applicable files;
47 nil means never to do it" 47 nil means never to do it"
@@ -49,17 +49,17 @@
49 49
50;; FIXME: This already exists in GNU ELPA's iterator.el. Maybe it should move 50;; FIXME: This already exists in GNU ELPA's iterator.el. Maybe it should move
51;; to generator.el? 51;; to generator.el?
52(iter-defun multifile--list-to-iterator (list) 52(iter-defun fileloop--list-to-iterator (list)
53 (while list (iter-yield (pop list)))) 53 (while list (iter-yield (pop list))))
54 54
55(defvar multifile--iterator iter-empty) 55(defvar fileloop--iterator iter-empty)
56(defvar multifile--scan-function 56(defvar fileloop--scan-function
57 (lambda () (user-error "No operation in progress"))) 57 (lambda () (user-error "No operation in progress")))
58(defvar multifile--operate-function #'ignore) 58(defvar fileloop--operate-function #'ignore)
59(defvar multifile--freshly-initialized nil) 59(defvar fileloop--freshly-initialized nil)
60 60
61;;;###autoload 61;;;###autoload
62(defun multifile-initialize (files scan-function operate-function) 62(defun fileloop-initialize (files scan-function operate-function)
63 "Initialize a new round of operation on several files. 63 "Initialize a new round of operation on several files.
64FILES can be either a list of file names, or an iterator (used with `iter-next') 64FILES can be either a list of file names, or an iterator (used with `iter-next')
65which returns a file name at each step. 65which returns a file name at each step.
@@ -69,18 +69,18 @@ OPERATE-FUNCTION is a function called with no argument; it is expected
69to perform the operation on the current file buffer and when done 69to perform the operation on the current file buffer and when done
70should return non-nil to mean that we should immediately continue 70should return non-nil to mean that we should immediately continue
71operating on the next file and nil otherwise." 71operating on the next file and nil otherwise."
72 (setq multifile--iterator 72 (setq fileloop--iterator
73 (if (and (listp files) (not (functionp files))) 73 (if (and (listp files) (not (functionp files)))
74 (multifile--list-to-iterator files) 74 (fileloop--list-to-iterator files)
75 files)) 75 files))
76 (setq multifile--scan-function scan-function) 76 (setq fileloop--scan-function scan-function)
77 (setq multifile--operate-function operate-function) 77 (setq fileloop--operate-function operate-function)
78 (setq multifile--freshly-initialized t)) 78 (setq fileloop--freshly-initialized t))
79 79
80(defun multifile-next-file (&optional novisit) 80(defun fileloop-next-file (&optional novisit)
81 ;; FIXME: Should we provide an interactive command, like tags-next-file? 81 ;; FIXME: Should we provide an interactive command, like tags-next-file?
82 (let ((next (condition-case nil 82 (let ((next (condition-case nil
83 (iter-next multifile--iterator) 83 (iter-next fileloop--iterator)
84 (iter-end-of-sequence nil)))) 84 (iter-end-of-sequence nil))))
85 (unless next 85 (unless next
86 (and novisit 86 (and novisit
@@ -91,9 +91,9 @@ operating on the next file and nil otherwise."
91 (new (not buffer))) 91 (new (not buffer)))
92 ;; Optionally offer to revert buffers 92 ;; Optionally offer to revert buffers
93 ;; if the files have changed on disk. 93 ;; if the files have changed on disk.
94 (and buffer multifile-revert-buffers 94 (and buffer fileloop-revert-buffers
95 (not (verify-visited-file-modtime buffer)) 95 (not (verify-visited-file-modtime buffer))
96 (if (eq multifile-revert-buffers 'silent) 96 (if (eq fileloop-revert-buffers 'silent)
97 (and (not (buffer-modified-p buffer)) 97 (and (not (buffer-modified-p buffer))
98 (let ((revertible nil)) 98 (let ((revertible nil))
99 (dolist (re revert-without-query) 99 (dolist (re revert-without-query)
@@ -118,7 +118,7 @@ operating on the next file and nil otherwise."
118 (insert-file-contents new nil)) 118 (insert-file-contents new nil))
119 new))) 119 new)))
120 120
121(defun multifile-continue () 121(defun fileloop-continue ()
122 "Continue last multi-file operation." 122 "Continue last multi-file operation."
123 (interactive) 123 (interactive)
124 (let (new 124 (let (new
@@ -131,10 +131,10 @@ operating on the next file and nil otherwise."
131 (progn 131 (progn
132 ;; Scan files quickly for the first or next interesting one. 132 ;; Scan files quickly for the first or next interesting one.
133 ;; This starts at point in the current buffer. 133 ;; This starts at point in the current buffer.
134 (while (or multifile--freshly-initialized file-finished 134 (while (or fileloop--freshly-initialized file-finished
135 (save-restriction 135 (save-restriction
136 (widen) 136 (widen)
137 (not (funcall multifile--scan-function)))) 137 (not (funcall fileloop--scan-function))))
138 ;; If nothing was found in the previous file, and 138 ;; If nothing was found in the previous file, and
139 ;; that file isn't in a temp buffer, restore point to 139 ;; that file isn't in a temp buffer, restore point to
140 ;; where it was. 140 ;; where it was.
@@ -142,17 +142,17 @@ operating on the next file and nil otherwise."
142 (goto-char original-point)) 142 (goto-char original-point))
143 143
144 (setq file-finished nil) 144 (setq file-finished nil)
145 (setq new (multifile-next-file t)) 145 (setq new (fileloop-next-file t))
146 146
147 ;; If NEW is non-nil, we got a temp buffer, 147 ;; If NEW is non-nil, we got a temp buffer,
148 ;; and NEW is the file name. 148 ;; and NEW is the file name.
149 (when (or messaged 149 (when (or messaged
150 (and (not multifile--freshly-initialized) 150 (and (not fileloop--freshly-initialized)
151 (> baud-rate search-slow-speed) 151 (> baud-rate search-slow-speed)
152 (setq messaged t))) 152 (setq messaged t)))
153 (message "Scanning file %s..." (or new buffer-file-name))) 153 (message "Scanning file %s..." (or new buffer-file-name)))
154 154
155 (setq multifile--freshly-initialized nil) 155 (setq fileloop--freshly-initialized nil)
156 (setq original-point (if new nil (point))) 156 (setq original-point (if new nil (point)))
157 (goto-char (point-min))) 157 (goto-char (point-min)))
158 158
@@ -172,13 +172,13 @@ operating on the next file and nil otherwise."
172 ;; If value is non-nil, continue to scan the next file. 172 ;; If value is non-nil, continue to scan the next file.
173 (save-restriction 173 (save-restriction
174 (widen) 174 (widen)
175 (funcall multifile--operate-function))) 175 (funcall fileloop--operate-function)))
176 (setq file-finished t)))) 176 (setq file-finished t))))
177 177
178;;;###autoload 178;;;###autoload
179(defun multifile-initialize-search (regexp files case-fold) 179(defun fileloop-initialize-search (regexp files case-fold)
180 (let ((last-buffer (current-buffer))) 180 (let ((last-buffer (current-buffer)))
181 (multifile-initialize 181 (fileloop-initialize
182 files 182 files
183 (lambda () 183 (lambda ()
184 (let ((case-fold-search 184 (let ((case-fold-search
@@ -191,16 +191,16 @@ operating on the next file and nil otherwise."
191 nil)))) 191 nil))))
192 192
193;;;###autoload 193;;;###autoload
194(defun multifile-initialize-replace (from to files case-fold &optional delimited) 194(defun fileloop-initialize-replace (from to files case-fold &optional delimited)
195 "Initialize a new round of query&replace on several files. 195 "Initialize a new round of query&replace on several files.
196FROM is a regexp and TO is the replacement to use. 196FROM is a regexp and TO is the replacement to use.
197FILES describes the file, as in `multifile-initialize'. 197FILES describes the file, as in `fileloop-initialize'.
198CASE-FOLD can be t, nil, or `default', the latter one meaning to obey 198CASE-FOLD can be t, nil, or `default', the latter one meaning to obey
199the default setting of `case-fold-search'. 199the default setting of `case-fold-search'.
200DELIMITED if non-nil means replace only word-delimited matches." 200DELIMITED if non-nil means replace only word-delimited matches."
201 ;; FIXME: Not sure how the delimited-flag interacts with the regexp-flag in 201 ;; FIXME: Not sure how the delimited-flag interacts with the regexp-flag in
202 ;; `perform-replace', so I just try to mimic the old code. 202 ;; `perform-replace', so I just try to mimic the old code.
203 (multifile-initialize 203 (fileloop-initialize
204 files 204 files
205 (lambda () 205 (lambda ()
206 (let ((case-fold-search 206 (let ((case-fold-search
@@ -213,5 +213,5 @@ DELIMITED if non-nil means replace only word-delimited matches."
213 (lambda () 213 (lambda ()
214 (perform-replace from to t t delimited nil multi-query-replace-map)))) 214 (perform-replace from to t t delimited nil multi-query-replace-map))))
215 215
216(provide 'multifile) 216(provide 'fileloop)
217;;; multifile.el ends here 217;;; fileloop.el ends here
diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el
index 4c5e6a4dae0..b913b1bb362 100644
--- a/lisp/ldefs-boot.el
+++ b/lisp/ldefs-boot.el
@@ -11493,7 +11493,7 @@ argument is passed to `next-file', which see).
11493 11493
11494\(fn &optional FIRST-TIME)" t nil) 11494\(fn &optional FIRST-TIME)" t nil)
11495 11495
11496(make-obsolete 'tags-loop-continue 'multifile-continue '"27.1") 11496(make-obsolete 'tags-loop-continue 'fileloop-continue '"27.1")
11497 11497
11498(autoload 'tags-search "etags" "\ 11498(autoload 'tags-search "etags" "\
11499Search through all files listed in tags table for match for REGEXP. 11499Search through all files listed in tags table for match for REGEXP.
@@ -11512,7 +11512,7 @@ Do `query-replace-regexp' of FROM with TO on all files listed in tags table.
11512Third arg DELIMITED (prefix arg) means replace only word-delimited matches. 11512Third arg DELIMITED (prefix arg) means replace only word-delimited matches.
11513If you exit (\\[keyboard-quit], RET or q), you can resume the query replace 11513If you exit (\\[keyboard-quit], RET or q), you can resume the query replace
11514with the command \\[tags-loop-continue]. 11514with the command \\[tags-loop-continue].
11515For non-interactive use, superceded by `multifile-initialize-replace'. 11515For non-interactive use, superceded by `fileloop-initialize-replace'.
11516 11516
11517\(fn FROM TO &optional DELIMITED FILES)" t nil) 11517\(fn FROM TO &optional DELIMITED FILES)" t nil)
11518 11518
@@ -22298,10 +22298,10 @@ QUALITY can be:
22298 22298
22299;;;*** 22299;;;***
22300 22300
22301;;;### (autoloads nil "multifile" "multifile.el" (0 0 0 0)) 22301;;;### (autoloads nil "fileloop" "fileloop.el" (0 0 0 0))
22302;;; Generated autoloads from multifile.el 22302;;; Generated autoloads from fileloop.el
22303 22303
22304(autoload 'multifile-initialize "multifile" "\ 22304(autoload 'fileloop-initialize "fileloop" "\
22305Initialize a new round of operation on several files. 22305Initialize a new round of operation on several files.
22306FILES can be either a list of file names, or an iterator (used with `iter-next') 22306FILES can be either a list of file names, or an iterator (used with `iter-next')
22307which returns a file name at each step. 22307which returns a file name at each step.
@@ -22314,22 +22314,22 @@ operating on the next file and nil otherwise.
22314 22314
22315\(fn FILES SCAN-FUNCTION OPERATE-FUNCTION)" nil nil) 22315\(fn FILES SCAN-FUNCTION OPERATE-FUNCTION)" nil nil)
22316 22316
22317(autoload 'multifile-initialize-search "multifile" "\ 22317(autoload 'fileloop-initialize-search "fileloop" "\
22318 22318
22319 22319
22320\(fn REGEXP FILES CASE-FOLD)" nil nil) 22320\(fn REGEXP FILES CASE-FOLD)" nil nil)
22321 22321
22322(autoload 'multifile-initialize-replace "multifile" "\ 22322(autoload 'fileloop-initialize-replace "fileloop" "\
22323Initialize a new round of query&replace on several files. 22323Initialize a new round of query&replace on several files.
22324FROM is a regexp and TO is the replacement to use. 22324FROM is a regexp and TO is the replacement to use.
22325FILES describes the file, as in `multifile-initialize'. 22325FILES describes the file, as in `fileloop-initialize'.
22326CASE-FOLD can be t, nil, or `default', the latter one meaning to obey 22326CASE-FOLD can be t, nil, or `default', the latter one meaning to obey
22327the default setting of `case-fold-search'. 22327the default setting of `case-fold-search'.
22328DELIMITED if non-nil means replace only word-delimited matches. 22328DELIMITED if non-nil means replace only word-delimited matches.
22329 22329
22330\(fn FROM TO FILES CASE-FOLD &optional DELIMITED)" nil nil) 22330\(fn FROM TO FILES CASE-FOLD &optional DELIMITED)" nil nil)
22331 22331
22332(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "multifile" '("multifile-"))) 22332(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "fileloop" '("fileloop-")))
22333 22333
22334;;;*** 22334;;;***
22335 22335
@@ -26455,14 +26455,14 @@ recognized.
26455(autoload 'project-search "project" "\ 26455(autoload 'project-search "project" "\
26456Search for REGEXP in all the files of the project. 26456Search for REGEXP in all the files of the project.
26457Stops when a match is found. 26457Stops when a match is found.
26458To continue searching for next match, use command \\[multifile-continue]. 26458To continue searching for next match, use command \\[fileloop-continue].
26459 26459
26460\(fn REGEXP)" t nil) 26460\(fn REGEXP)" t nil)
26461 26461
26462(autoload 'project-query-replace "project" "\ 26462(autoload 'project-query-replace "project" "\
26463Search for REGEXP in all the files of the project. 26463Search for REGEXP in all the files of the project.
26464Stops when a match is found. 26464Stops when a match is found.
26465To continue searching for next match, use command \\[multifile-continue]. 26465To continue searching for next match, use command \\[fileloop-continue].
26466 26466
26467\(fn FROM TO)" t nil) 26467\(fn FROM TO)" t nil)
26468 26468
diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el
index 98135852d1a..4ff60ed9910 100644
--- a/lisp/menu-bar.el
+++ b/lisp/menu-bar.el
@@ -309,7 +309,7 @@
309 menu-bar-separator) 309 menu-bar-separator)
310 310
311 (bindings--define-key menu [tags-continue] 311 (bindings--define-key menu [tags-continue]
312 '(menu-item "Continue Tags Search" multifile-continue 312 '(menu-item "Continue Tags Search" fileloop-continue
313 :help "Continue last tags search operation")) 313 :help "Continue last tags search operation"))
314 (bindings--define-key menu [tags-srch] 314 (bindings--define-key menu [tags-srch]
315 '(menu-item "Search Tagged Files..." tags-search 315 '(menu-item "Search Tagged Files..." tags-search
@@ -358,7 +358,7 @@
358(defvar menu-bar-replace-menu 358(defvar menu-bar-replace-menu
359 (let ((menu (make-sparse-keymap "Replace"))) 359 (let ((menu (make-sparse-keymap "Replace")))
360 (bindings--define-key menu [tags-repl-continue] 360 (bindings--define-key menu [tags-repl-continue]
361 '(menu-item "Continue Replace" multifile-continue 361 '(menu-item "Continue Replace" fileloop-continue
362 :help "Continue last tags replace operation")) 362 :help "Continue last tags replace operation"))
363 (bindings--define-key menu [tags-repl] 363 (bindings--define-key menu [tags-repl]
364 '(menu-item "Replace in Tagged Files..." tags-query-replace 364 '(menu-item "Replace in Tagged Files..." tags-query-replace
diff --git a/lisp/progmodes/etags.el b/lisp/progmodes/etags.el
index 2994071b153..a2392328bac 100644
--- a/lisp/progmodes/etags.el
+++ b/lisp/progmodes/etags.el
@@ -36,7 +36,7 @@
36(require 'ring) 36(require 'ring)
37(require 'button) 37(require 'button)
38(require 'xref) 38(require 'xref)
39(require 'multifile) 39(require 'fileloop)
40 40
41;;;###autoload 41;;;###autoload
42(defvar tags-file-name nil 42(defvar tags-file-name nil
@@ -1693,12 +1693,12 @@ Point should be just after a string that matches TAG."
1693 (let ((bol (point))) 1693 (let ((bol (point)))
1694 (and (search-forward "\177" (line-end-position) t) 1694 (and (search-forward "\177" (line-end-position) t)
1695 (re-search-backward re bol t))))) 1695 (re-search-backward re bol t)))))
1696(define-obsolete-variable-alias 'tags-loop-revert-buffers 'multifile-revert-buffers "27.1") 1696(define-obsolete-variable-alias 'tags-loop-revert-buffers 'fileloop-revert-buffers "27.1")
1697 1697
1698;;;###autoload 1698;;;###autoload
1699(defalias 'next-file 'tags-next-file) 1699(defalias 'next-file 'tags-next-file)
1700(make-obsolete 'next-file 1700(make-obsolete 'next-file
1701 "use tags-next-file or multifile-initialize and multifile-next-file instead" "27.1") 1701 "use tags-next-file or fileloop-initialize and fileloop-next-file instead" "27.1")
1702;;;###autoload 1702;;;###autoload
1703(defun tags-next-file (&optional initialize novisit) 1703(defun tags-next-file (&optional initialize novisit)
1704 "Select next file among files in current tags table. 1704 "Select next file among files in current tags table.
@@ -1716,7 +1716,7 @@ if the file was newly read in, the value is the filename."
1716 (interactive (list (if current-prefix-arg t))) 1716 (interactive (list (if current-prefix-arg t)))
1717 (when initialize ;; Not the first run. 1717 (when initialize ;; Not the first run.
1718 (tags--compat-initialize initialize)) 1718 (tags--compat-initialize initialize))
1719 (multifile-next-file novisit) 1719 (fileloop-next-file novisit)
1720 (switch-to-buffer (current-buffer))) 1720 (switch-to-buffer (current-buffer)))
1721 1721
1722(defun tags--all-files () 1722(defun tags--all-files ()
@@ -1742,11 +1742,11 @@ if the file was newly read in, the value is the filename."
1742 (mapcar #'expand-file-name (tags-table-files))))) 1742 (mapcar #'expand-file-name (tags-table-files)))))
1743 files))) 1743 files)))
1744 1744
1745(make-obsolete-variable 'tags-loop-operate 'multifile-initialize "27.1") 1745(make-obsolete-variable 'tags-loop-operate 'fileloop-initialize "27.1")
1746(defvar tags-loop-operate nil 1746(defvar tags-loop-operate nil
1747 "Form for `tags-loop-continue' to eval to change one file.") 1747 "Form for `tags-loop-continue' to eval to change one file.")
1748 1748
1749(make-obsolete-variable 'tags-loop-scan 'multifile-initialize "27.1") 1749(make-obsolete-variable 'tags-loop-scan 'fileloop-initialize "27.1")
1750(defvar tags-loop-scan 1750(defvar tags-loop-scan
1751 '(user-error "%s" 1751 '(user-error "%s"
1752 (substitute-command-keys 1752 (substitute-command-keys
@@ -1775,7 +1775,7 @@ Bind `case-fold-search' during the evaluation, depending on the value of
1775 (eval files)))) 1775 (eval files))))
1776 1776
1777(defun tags--compat-initialize (initialize) 1777(defun tags--compat-initialize (initialize)
1778 (multifile-initialize 1778 (fileloop-initialize
1779 (tags--compat-files initialize) 1779 (tags--compat-files initialize)
1780 (if tags-loop-operate 1780 (if tags-loop-operate
1781 (lambda () (tags-loop-eval tags-loop-operate)) 1781 (lambda () (tags-loop-eval tags-loop-operate))
@@ -1792,11 +1792,11 @@ argument is passed to `next-file', which see)."
1792 ;; interesting (it returns non-nil if so) and `tags-loop-operate' is a form to 1792 ;; interesting (it returns non-nil if so) and `tags-loop-operate' is a form to
1793 ;; evaluate to operate on an interesting file. If the latter evaluates to 1793 ;; evaluate to operate on an interesting file. If the latter evaluates to
1794 ;; nil, we exit; otherwise we scan the next file. 1794 ;; nil, we exit; otherwise we scan the next file.
1795 (declare (obsolete multifile-continue "27.1")) 1795 (declare (obsolete fileloop-continue "27.1"))
1796 (interactive) 1796 (interactive)
1797 (when first-time ;; Backward compatibility. 1797 (when first-time ;; Backward compatibility.
1798 (tags--compat-initialize first-time)) 1798 (tags--compat-initialize first-time))
1799 (multifile-continue)) 1799 (fileloop-continue))
1800 1800
1801;; We use it to detect when the last loop was a tags-search. 1801;; We use it to detect when the last loop was a tags-search.
1802(defvar tags--last-search-operate-function nil) 1802(defvar tags--last-search-operate-function nil)
@@ -1813,18 +1813,18 @@ The search will be restricted to these files.
1813Also see the documentation of the `tags-file-name' variable." 1813Also see the documentation of the `tags-file-name' variable."
1814 (interactive "sTags search (regexp): ") 1814 (interactive "sTags search (regexp): ")
1815 (unless (and (equal regexp "") 1815 (unless (and (equal regexp "")
1816 ;; FIXME: If some other multifile operation took place, 1816 ;; FIXME: If some other fileloop operation took place,
1817 ;; rather than search for "", we should repeat the last search! 1817 ;; rather than search for "", we should repeat the last search!
1818 (eq multifile--operate-function 1818 (eq fileloop--operate-function
1819 tags--last-search-operate-function)) 1819 tags--last-search-operate-function))
1820 (multifile-initialize-search 1820 (fileloop-initialize-search
1821 regexp 1821 regexp
1822 (tags--compat-files (or files t)) 1822 (tags--compat-files (or files t))
1823 tags-case-fold-search) 1823 tags-case-fold-search)
1824 ;; Store it, so we can detect if some other multifile operation took 1824 ;; Store it, so we can detect if some other fileloop operation took
1825 ;; place since the last search! 1825 ;; place since the last search!
1826 (setq tags--last-search-operate-function multifile--operate-function)) 1826 (setq tags--last-search-operate-function fileloop--operate-function))
1827 (multifile-continue)) 1827 (fileloop-continue))
1828 1828
1829;;;###autoload 1829;;;###autoload
1830(defun tags-query-replace (from to &optional delimited files) 1830(defun tags-query-replace (from to &optional delimited files)
@@ -1832,15 +1832,15 @@ Also see the documentation of the `tags-file-name' variable."
1832Third arg DELIMITED (prefix arg) means replace only word-delimited matches. 1832Third arg DELIMITED (prefix arg) means replace only word-delimited matches.
1833If you exit (\\[keyboard-quit], RET or q), you can resume the query replace 1833If you exit (\\[keyboard-quit], RET or q), you can resume the query replace
1834with the command \\[tags-loop-continue]. 1834with the command \\[tags-loop-continue].
1835For non-interactive use, superceded by `multifile-initialize-replace'." 1835For non-interactive use, superceded by `fileloop-initialize-replace'."
1836 (declare (advertised-calling-convention (from to &optional delimited) "27.1")) 1836 (declare (advertised-calling-convention (from to &optional delimited) "27.1"))
1837 (interactive (query-replace-read-args "Tags query replace (regexp)" t t)) 1837 (interactive (query-replace-read-args "Tags query replace (regexp)" t t))
1838 (multifile-initialize-replace 1838 (fileloop-initialize-replace
1839 from to 1839 from to
1840 (tags--compat-files (or files t)) 1840 (tags--compat-files (or files t))
1841 (if (equal from (downcase from)) nil 'default) 1841 (if (equal from (downcase from)) nil 'default)
1842 delimited) 1842 delimited)
1843 (multifile-continue)) 1843 (fileloop-continue))
1844 1844
1845(defun tags-complete-tags-table-file (string predicate what) ; Doc string? 1845(defun tags-complete-tags-table-file (string predicate what) ; Doc string?
1846 (save-excursion 1846 (save-excursion
diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el
index 8648d0047d1..3906f6cb24b 100644
--- a/lisp/progmodes/project.el
+++ b/lisp/progmodes/project.el
@@ -511,30 +511,30 @@ recognized."
511 inherit-input-method))) 511 inherit-input-method)))
512 (concat common-parent-directory res))) 512 (concat common-parent-directory res)))
513 513
514(declare-function multifile-continue "multifile" ()) 514(declare-function fileloop-continue "fileloop" ())
515 515
516;;;###autoload 516;;;###autoload
517(defun project-search (regexp) 517(defun project-search (regexp)
518 "Search for REGEXP in all the files of the project. 518 "Search for REGEXP in all the files of the project.
519Stops when a match is found. 519Stops when a match is found.
520To continue searching for next match, use command \\[multifile-continue]." 520To continue searching for next match, use command \\[fileloop-continue]."
521 (interactive "sSearch (regexp): ") 521 (interactive "sSearch (regexp): ")
522 (multifile-initialize-search 522 (fileloop-initialize-search
523 regexp (project-files (project-current t)) 'default) 523 regexp (project-files (project-current t)) 'default)
524 (multifile-continue)) 524 (fileloop-continue))
525 525
526;;;###autoload 526;;;###autoload
527(defun project-query-replace (from to) 527(defun project-query-replace (from to)
528 "Search for REGEXP in all the files of the project. 528 "Search for REGEXP in all the files of the project.
529Stops when a match is found. 529Stops when a match is found.
530To continue searching for next match, use command \\[multifile-continue]." 530To continue searching for next match, use command \\[fileloop-continue]."
531 (interactive 531 (interactive
532 (pcase-let ((`(,from ,to) 532 (pcase-let ((`(,from ,to)
533 (query-replace-read-args "Query replace (regexp)" t t))) 533 (query-replace-read-args "Query replace (regexp)" t t)))
534 (list from to))) 534 (list from to)))
535 (multifile-initialize-replace 535 (fileloop-initialize-replace
536 from to (project-files (project-current t)) 'default) 536 from to (project-files (project-current t)) 'default)
537 (multifile-continue)) 537 (fileloop-continue))
538 538
539(provide 'project) 539(provide 'project)
540;;; project.el ends here 540;;; project.el ends here