+ (cadr (member buffer buffers)))))
+
+(defun multi-isearch-read-buffers ()
+ "Return a list of buffers specified interactively, one by one."
+ ;; Most code from `multi-occur'.
+ (let* ((bufs (list (read-buffer "First buffer to search: "
+ (current-buffer) t)))
+ (buf nil)
+ (ido-ignore-item-temp-list bufs))
+ (while (not (string-equal
+ (setq buf (read-buffer
+ (if (eq read-buffer-function 'ido-read-buffer)
+ "Next buffer to search (C-j to end): "
+ "Next buffer to search (RET to end): ")
+ nil t))
+ ""))
+ (add-to-list 'bufs buf)
+ (setq ido-ignore-item-temp-list bufs))
+ (nreverse bufs)))
+
+(defun multi-isearch-read-matching-buffers ()
+ "Return a list of buffers whose names match specified regexp."
+ ;; Most code from `multi-occur-in-matching-buffers'
+ ;; and `kill-matching-buffers'.
+ (let ((bufregexp
+ (read-regexp "Search in buffers whose names match regexp")))
+ (when bufregexp
+ (delq nil (mapcar (lambda (buf)
+ (when (string-match bufregexp (buffer-name buf))
+ buf))
+ (buffer-list))))))