]> code.delx.au - gnu-emacs/blobdiff - lisp/misearch.el
* lisp/emacs-lisp/seq.el: New file.
[gnu-emacs] / lisp / misearch.el
index 0c4cd4ea323c386886c97c9401c257c1e741b3d9..4b003b9b19db93c7fd628ad6eb647a73347f8de1 100644 (file)
@@ -1,6 +1,6 @@
 ;;; misearch.el --- isearch extensions for multi-buffer search
 
 ;;; misearch.el --- isearch extensions for multi-buffer search
 
-;; Copyright (C) 2007-2013 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2014 Free Software Foundation, Inc.
 
 ;; Author: Juri Linkov <juri@jurta.org>
 ;; Keywords: matching
 
 ;; Author: Juri Linkov <juri@jurta.org>
 ;; Keywords: matching
@@ -91,6 +91,11 @@ Isearch starts.")
   "The buffer where the search is currently searching.
 The value is nil when the search still is in the initial buffer.")
 
   "The buffer where the search is currently searching.
 The value is nil when the search still is in the initial buffer.")
 
+;;;###autoload
+(defvar multi-isearch-buffer-list nil)
+;;;###autoload
+(defvar multi-isearch-file-list nil)
+
 (defvar multi-isearch-orig-search-fun nil)
 (defvar multi-isearch-orig-wrap nil)
 (defvar multi-isearch-orig-push-state nil)
 (defvar multi-isearch-orig-search-fun nil)
 (defvar multi-isearch-orig-wrap nil)
 (defvar multi-isearch-orig-push-state nil)
@@ -119,7 +124,9 @@ Intended to be added to `isearch-mode-hook'."
 (defun multi-isearch-end ()
   "Clean up the multi-buffer search after terminating isearch."
   (setq multi-isearch-current-buffer nil
 (defun multi-isearch-end ()
   "Clean up the multi-buffer search after terminating isearch."
   (setq multi-isearch-current-buffer nil
-       multi-isearch-next-buffer-current-function nil)
+       multi-isearch-next-buffer-current-function nil
+       multi-isearch-buffer-list nil
+       multi-isearch-file-list nil)
   (setq-default isearch-search-fun-function multi-isearch-orig-search-fun
                isearch-wrap-function       multi-isearch-orig-wrap
                isearch-push-state-function multi-isearch-orig-push-state)
   (setq-default isearch-search-fun-function multi-isearch-orig-search-fun
                isearch-wrap-function       multi-isearch-orig-wrap
                isearch-push-state-function multi-isearch-orig-push-state)
@@ -204,8 +211,6 @@ Switch to the buffer restored from the search status stack."
 \f
 ;;; Global multi-buffer search invocations
 
 \f
 ;;; Global multi-buffer search invocations
 
-(defvar multi-isearch-buffer-list nil)
-
 (defun multi-isearch-next-buffer-from-list (&optional buffer wrap)
   "Return the next buffer in the series of buffers.
 This function is used for multiple buffers Isearch.  A sequence of
 (defun multi-isearch-next-buffer-from-list (&optional buffer wrap)
   "Return the next buffer in the series of buffers.
 This function is used for multiple buffers Isearch.  A sequence of
@@ -239,7 +244,8 @@ set in `multi-isearch-buffers' or `multi-isearch-buffers-regexp'."
     (nreverse bufs)))
 
 (defun multi-isearch-read-matching-buffers ()
     (nreverse bufs)))
 
 (defun multi-isearch-read-matching-buffers ()
-  "Return a list of buffers whose names match specified regexp."
+  "Return a list of buffers whose names match specified regexp.
+Uses `read-regexp' to read the regexp."
   ;; Most code from `multi-occur-in-matching-buffers'
   ;; and `kill-matching-buffers'.
   (let ((bufregexp
   ;; Most code from `multi-occur-in-matching-buffers'
   ;; and `kill-matching-buffers'.
   (let ((bufregexp
@@ -262,11 +268,11 @@ whose names match the specified regexp."
             (multi-isearch-read-matching-buffers)
           (multi-isearch-read-buffers))))
   (let ((multi-isearch-next-buffer-function
             (multi-isearch-read-matching-buffers)
           (multi-isearch-read-buffers))))
   (let ((multi-isearch-next-buffer-function
-        'multi-isearch-next-buffer-from-list)
-       (multi-isearch-buffer-list (mapcar #'get-buffer buffers)))
+        'multi-isearch-next-buffer-from-list))
+    (setq multi-isearch-buffer-list (mapcar #'get-buffer buffers))
     (switch-to-buffer (car multi-isearch-buffer-list))
     (goto-char (if isearch-forward (point-min) (point-max)))
     (switch-to-buffer (car multi-isearch-buffer-list))
     (goto-char (if isearch-forward (point-min) (point-max)))
-    (isearch-forward)))
+    (isearch-forward nil t)))
 
 ;;;###autoload
 (defun multi-isearch-buffers-regexp (buffers)
 
 ;;;###autoload
 (defun multi-isearch-buffers-regexp (buffers)
@@ -280,17 +286,15 @@ whose names match the specified regexp."
             (multi-isearch-read-matching-buffers)
           (multi-isearch-read-buffers))))
   (let ((multi-isearch-next-buffer-function
             (multi-isearch-read-matching-buffers)
           (multi-isearch-read-buffers))))
   (let ((multi-isearch-next-buffer-function
-        'multi-isearch-next-buffer-from-list)
-       (multi-isearch-buffer-list (mapcar #'get-buffer buffers)))
+        'multi-isearch-next-buffer-from-list))
+    (setq multi-isearch-buffer-list (mapcar #'get-buffer buffers))
     (switch-to-buffer (car multi-isearch-buffer-list))
     (goto-char (if isearch-forward (point-min) (point-max)))
     (switch-to-buffer (car multi-isearch-buffer-list))
     (goto-char (if isearch-forward (point-min) (point-max)))
-    (isearch-forward-regexp)))
+    (isearch-forward-regexp nil t)))
 
 \f
 ;;; Global multi-file search invocations
 
 
 \f
 ;;; Global multi-file search invocations
 
-(defvar multi-isearch-file-list nil)
-
 (defun multi-isearch-next-file-buffer-from-list (&optional buffer wrap)
   "Return the next buffer in the series of file buffers.
 This function is used for multiple file buffers Isearch.  A sequence
 (defun multi-isearch-next-file-buffer-from-list (&optional buffer wrap)
   "Return the next buffer in the series of file buffers.
 This function is used for multiple file buffers Isearch.  A sequence
@@ -322,8 +326,10 @@ Every next/previous file in the defined sequence is visited by
       (add-to-list 'files file))
     (nreverse files)))
 
       (add-to-list 'files file))
     (nreverse files)))
 
+;; A regexp is not the same thing as a file glob - does this matter?
 (defun multi-isearch-read-matching-files ()
 (defun multi-isearch-read-matching-files ()
-  "Return a list of files whose names match specified wildcard."
+  "Return a list of files whose names match specified wildcard.
+Uses `read-regexp' to read the wildcard."
   ;; Most wildcard code from `find-file-noselect'.
   (let ((filename (read-regexp "Search in files whose names match wildcard")))
     (when (and filename
   ;; Most wildcard code from `find-file-noselect'.
   (let ((filename (read-regexp "Search in files whose names match wildcard")))
     (when (and filename
@@ -346,11 +352,11 @@ whose file names match the specified wildcard."
             (multi-isearch-read-matching-files)
           (multi-isearch-read-files))))
   (let ((multi-isearch-next-buffer-function
             (multi-isearch-read-matching-files)
           (multi-isearch-read-files))))
   (let ((multi-isearch-next-buffer-function
-        'multi-isearch-next-file-buffer-from-list)
-       (multi-isearch-file-list (mapcar #'expand-file-name files)))
+        'multi-isearch-next-file-buffer-from-list))
+    (setq multi-isearch-file-list (mapcar #'expand-file-name files))
     (find-file (car multi-isearch-file-list))
     (goto-char (if isearch-forward (point-min) (point-max)))
     (find-file (car multi-isearch-file-list))
     (goto-char (if isearch-forward (point-min) (point-max)))
-    (isearch-forward)))
+    (isearch-forward nil t)))
 
 ;;;###autoload
 (defun multi-isearch-files-regexp (files)
 
 ;;;###autoload
 (defun multi-isearch-files-regexp (files)
@@ -365,11 +371,11 @@ whose file names match the specified wildcard."
             (multi-isearch-read-matching-files)
           (multi-isearch-read-files))))
   (let ((multi-isearch-next-buffer-function
             (multi-isearch-read-matching-files)
           (multi-isearch-read-files))))
   (let ((multi-isearch-next-buffer-function
-        'multi-isearch-next-file-buffer-from-list)
-       (multi-isearch-file-list (mapcar #'expand-file-name files)))
+        'multi-isearch-next-file-buffer-from-list))
+    (setq multi-isearch-file-list (mapcar #'expand-file-name files))
     (find-file (car multi-isearch-file-list))
     (goto-char (if isearch-forward (point-min) (point-max)))
     (find-file (car multi-isearch-file-list))
     (goto-char (if isearch-forward (point-min) (point-max)))
-    (isearch-forward-regexp)))
+    (isearch-forward-regexp nil t)))
 
 \f
 (provide 'multi-isearch)
 
 \f
 (provide 'multi-isearch)