aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJuri Linkov2009-11-30 19:42:16 +0000
committerJuri Linkov2009-11-30 19:42:16 +0000
commitc585bf3275d8204c67eb0a3dd52dd2bd3af8ed5f (patch)
treed3ffe2d7c6b4ed125e4eb51822da738aef9bac84
parent0a7457335a6a48162517a80230820135608bacd3 (diff)
downloademacs-c585bf3275d8204c67eb0a3dd52dd2bd3af8ed5f.tar.gz
emacs-c585bf3275d8204c67eb0a3dd52dd2bd3af8ed5f.zip
(multi-isearch-read-buffers)
(multi-isearch-read-matching-buffers): New functions. (multi-isearch-buffers, multi-isearch-buffers-regexp): Use them in the `interactive' spec. Doc fix. (multi-isearch-read-files, multi-isearch-read-matching-files): New functions. (multi-isearch-files, multi-isearch-files-regexp): Use them in the `interactive' spec. Doc fix. (Bug#4725)
-rw-r--r--etc/NEWS8
-rw-r--r--lisp/ChangeLog11
-rw-r--r--lisp/misearch.el93
3 files changed, 108 insertions, 4 deletions
diff --git a/etc/NEWS b/etc/NEWS
index 1c75a115a80..da58ebebaac 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -304,6 +304,14 @@ Command*'.
304and `comint-history-isearch-backward-regexp' (bound to M-r) start Isearch 304and `comint-history-isearch-backward-regexp' (bound to M-r) start Isearch
305in the input history regardless of the value of `comint-history-isearch'. 305in the input history regardless of the value of `comint-history-isearch'.
306 306
307*** Interactively `multi-isearch-buffers' and `multi-isearch-buffers-regexp'
308read buffer names to search, one by one, ended with RET. With a prefix
309argument, they ask for a regexp, and search in buffers whose names match
310the specified regexp. Interactively `multi-isearch-files' and
311`multi-isearch-files-regexp' read file names to search, one by one,
312ended with RET. With a prefix argument, they ask for a wildcard, and
313search in file buffers whose file names match the specified wildcard.
314
307+++ 315+++
308*** Autorevert Tail mode now works also for remote files. 316*** Autorevert Tail mode now works also for remote files.
309 317
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index e901802b6c0..e8d3afbc36c 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,5 +1,16 @@
12009-11-30 Juri Linkov <juri@jurta.org> 12009-11-30 Juri Linkov <juri@jurta.org>
2 2
3 * misearch.el (multi-isearch-read-buffers)
4 (multi-isearch-read-matching-buffers): New functions.
5 (multi-isearch-buffers, multi-isearch-buffers-regexp):
6 Use them in the `interactive' spec. Doc fix.
7 (multi-isearch-read-files, multi-isearch-read-matching-files):
8 New functions.
9 (multi-isearch-files, multi-isearch-files-regexp):
10 Use them in the `interactive' spec. Doc fix. (Bug#4725)
11
122009-11-30 Juri Linkov <juri@jurta.org>
13
3 * doc-view.el (doc-view-continuous): 14 * doc-view.el (doc-view-continuous):
4 Rename from `doc-view-continuous-mode'. 15 Rename from `doc-view-continuous-mode'.
5 (doc-view-menu): Move "Toggle display" to the top. 16 (doc-view-menu): Move "Toggle display" to the top.
diff --git a/lisp/misearch.el b/lisp/misearch.el
index c2a5b344c69..cfdd5efa49e 100644
--- a/lisp/misearch.el
+++ b/lisp/misearch.el
@@ -224,9 +224,46 @@ set in `multi-isearch-buffers' or `multi-isearch-buffers-regexp'."
224 (car buffers) 224 (car buffers)
225 (cadr (member (or buffer (current-buffer)) buffers))))) 225 (cadr (member (or buffer (current-buffer)) buffers)))))
226 226
227(defun multi-isearch-read-buffers ()
228 "Return a list of buffers specified interactively, one by one."
229 ;; Most code from `multi-occur'.
230 (let* ((bufs (list (read-buffer "First buffer to search: "
231 (current-buffer) t)))
232 (buf nil)
233 (ido-ignore-item-temp-list bufs))
234 (while (not (string-equal
235 (setq buf (read-buffer
236 (if (eq read-buffer-function 'ido-read-buffer)
237 "Next buffer to search (C-j to end): "
238 "Next buffer to search (RET to end): ")
239 nil t))
240 ""))
241 (add-to-list 'bufs buf)
242 (setq ido-ignore-item-temp-list bufs))
243 (nreverse (mapcar #'get-buffer bufs))))
244
245(defun multi-isearch-read-matching-buffers ()
246 "Return a list of buffers whose names match specified regexp."
247 ;; Most code from `multi-occur-in-matching-buffers'
248 ;; and `kill-matching-buffers'.
249 (let ((bufregexp
250 (read-regexp "Search in buffers whose names match regexp")))
251 (when bufregexp
252 (delq nil (mapcar (lambda (buf)
253 (when (string-match bufregexp (buffer-name buf))
254 buf))
255 (buffer-list))))))
256
227;;;###autoload 257;;;###autoload
228(defun multi-isearch-buffers (buffers) 258(defun multi-isearch-buffers (buffers)
229 "Start multi-buffer Isearch on a list of BUFFERS." 259 "Start multi-buffer Isearch on a list of BUFFERS.
260Interactively read buffer names to search, one by one, ended with RET.
261With a prefix argument, ask for a regexp, and search in buffers
262whose names match the specified regexp."
263 (interactive
264 (list (if current-prefix-arg
265 (multi-isearch-read-matching-buffers)
266 (multi-isearch-read-buffers))))
230 (let ((multi-isearch-next-buffer-function 267 (let ((multi-isearch-next-buffer-function
231 'multi-isearch-next-buffer-from-list) 268 'multi-isearch-next-buffer-from-list)
232 (multi-isearch-buffer-list buffers)) 269 (multi-isearch-buffer-list buffers))
@@ -236,7 +273,14 @@ set in `multi-isearch-buffers' or `multi-isearch-buffers-regexp'."
236 273
237;;;###autoload 274;;;###autoload
238(defun multi-isearch-buffers-regexp (buffers) 275(defun multi-isearch-buffers-regexp (buffers)
239 "Start multi-buffer regexp Isearch on a list of BUFFERS." 276 "Start multi-buffer regexp Isearch on a list of BUFFERS.
277Interactively read buffer names to search, one by one, ended with RET.
278With a prefix argument, ask for a regexp, and search in buffers
279whose names match the specified regexp."
280 (interactive
281 (list (if current-prefix-arg
282 (multi-isearch-read-matching-buffers)
283 (multi-isearch-read-buffers))))
240 (let ((multi-isearch-next-buffer-function 284 (let ((multi-isearch-next-buffer-function
241 'multi-isearch-next-buffer-from-list) 285 'multi-isearch-next-buffer-from-list)
242 (multi-isearch-buffer-list buffers)) 286 (multi-isearch-buffer-list buffers))
@@ -264,9 +308,43 @@ Every next/previous file in the defined sequence is visited by
264 (car files) 308 (car files)
265 (cadr (member (buffer-file-name buffer) files)))))) 309 (cadr (member (buffer-file-name buffer) files))))))
266 310
311(defun multi-isearch-read-files ()
312 "Return a list of files specified interactively, one by one."
313 ;; Most code from `multi-occur'.
314 (let* ((files (list (read-file-name "First file to search: "
315 default-directory
316 buffer-file-name)))
317 (file nil))
318 (while (not (string-equal
319 (setq file (read-file-name
320 "Next file to search (RET to end): "
321 default-directory
322 default-directory))
323 default-directory))
324 (add-to-list 'files file))
325 (nreverse files)))
326
327(defun multi-isearch-read-matching-files ()
328 "Return a list of files whose names match specified wildcard."
329 ;; Most wildcard code from `find-file-noselect'.
330 (let ((filename (read-regexp "Search in files whose names match wildcard")))
331 (when (and filename
332 (not (string-match "\\`/:" filename))
333 (string-match "[[*?]" filename))
334 (condition-case nil
335 (file-expand-wildcards filename t)
336 (error (list filename))))))
337
267;;;###autoload 338;;;###autoload
268(defun multi-isearch-files (files) 339(defun multi-isearch-files (files)
269 "Start multi-buffer Isearch on a list of FILES." 340 "Start multi-buffer Isearch on a list of FILES.
341Interactively read file names to search, one by one, ended with RET.
342With a prefix argument, ask for a wildcard, and search in file buffers
343whose file names match the specified wildcard."
344 (interactive
345 (list (if current-prefix-arg
346 (multi-isearch-read-matching-files)
347 (multi-isearch-read-files))))
270 (let ((multi-isearch-next-buffer-function 348 (let ((multi-isearch-next-buffer-function
271 'multi-isearch-next-file-buffer-from-list) 349 'multi-isearch-next-file-buffer-from-list)
272 (multi-isearch-file-list files)) 350 (multi-isearch-file-list files))
@@ -276,7 +354,14 @@ Every next/previous file in the defined sequence is visited by
276 354
277;;;###autoload 355;;;###autoload
278(defun multi-isearch-files-regexp (files) 356(defun multi-isearch-files-regexp (files)
279 "Start multi-buffer regexp Isearch on a list of FILES." 357 "Start multi-buffer regexp Isearch on a list of FILES.
358Interactively read file names to search, one by one, ended with RET.
359With a prefix argument, ask for a wildcard, and search in file buffers
360whose file names match the specified wildcard."
361 (interactive
362 (list (if current-prefix-arg
363 (multi-isearch-read-matching-files)
364 (multi-isearch-read-files))))
280 (let ((multi-isearch-next-buffer-function 365 (let ((multi-isearch-next-buffer-function
281 'multi-isearch-next-file-buffer-from-list) 366 'multi-isearch-next-file-buffer-from-list)
282 (multi-isearch-file-list files)) 367 (multi-isearch-file-list files))