annotate lisp/misearch.el @ 98182:19ec1646fe6c

The Rmail/mbox merge has been abandoned in favor of a restart using the current rmail.el file. A comprehensive list of changes will be supplied when pmail.el is morphed back into rmail.el The current status is that pmail.el supports basic Rmail navigation (no summary support) and shows the current message in a special buffer using buffer-swap-text. No decoding is done yet. That is the next step.
author Paul Reilly <pmr@pajato.com>
date Mon, 15 Sep 2008 20:56:53 +0000
parents 2e007ba78796
children ee29f2a93b76
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
96950
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
1 ;;; misearch.el --- isearch extensions for multi-buffer search
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
2
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
3 ;; Copyright (C) 2007, 2008 Free Software Foundation, Inc.
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
4
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
5 ;; Author: Juri Linkov <juri@jurta.org>
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
6 ;; Keywords: matching
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
7
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
8 ;; This file is part of GNU Emacs.
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
9
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
10 ;; GNU Emacs is free software: you can redistribute it and/or modify
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
11 ;; it under the terms of the GNU General Public License as published by
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
12 ;; the Free Software Foundation, either version 3 of the License, or
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
13 ;; (at your option) any later version.
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
14
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
15 ;; GNU Emacs is distributed in the hope that it will be useful,
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
18 ;; GNU General Public License for more details.
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
19
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
20 ;; You should have received a copy of the GNU General Public License
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
21 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
22
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
23 ;;; Commentary:
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
24
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
25 ;; This file adds more dimensions to the search space. It implements
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
26 ;; various features that extend isearch. One of them is an ability to
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
27 ;; search through multiple buffers.
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
28
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
29 ;;; Code:
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
30
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
31 ;;; Search multiple buffers
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
32
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
33 ;;;###autoload (add-hook 'isearch-mode-hook 'multi-isearch-setup)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
34
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
35 (defgroup multi-isearch nil
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
36 "Using isearch to search through multiple buffers."
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
37 :version "23.1"
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
38 :group 'isearch)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
39
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
40 (defcustom multi-isearch-search t
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
41 "Non-nil enables searching multiple related buffers, in certain modes."
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
42 :type 'boolean
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
43 :version "23.1"
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
44 :group 'multi-isearch)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
45
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
46 (defcustom multi-isearch-pause t
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
47 "A choice defining where to pause the search.
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
48 If the value is nil, don't pause before going to the next buffer.
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
49 If the value is `initial', pause only after a failing search in the
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
50 initial buffer.
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
51 If t, pause in all buffers that contain the search string."
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
52 :type '(choice
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
53 (const :tag "Don't pause" nil)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
54 (const :tag "Only in initial buffer" initial)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
55 (const :tag "All buffers" t))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
56 :version "23.1"
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
57 :group 'multi-isearch)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
58
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
59 ;;;###autoload
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
60 (defvar multi-isearch-next-buffer-function nil
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
61 "Function to call to get the next buffer to search.
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
62
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
63 When this variable is set to a function that returns a buffer, then
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
64 after typing another \\[isearch-forward] or \\[isearch-backward] \
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
65 at a failing search, the search goes
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
66 to the next buffer in the series and continues searching for the
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
67 next occurrence.
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
68
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
69 The first argument of this function is the current buffer where the
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
70 search is currently searching. It defines the base buffer relative to
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
71 which this function should find the next buffer. When the isearch
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
72 direction is backward (when `isearch-forward' is nil), this function
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
73 should return the previous buffer to search. If the second argument of
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
74 this function WRAP is non-nil, then it should return the first buffer
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
75 in the series; and for the backward search, it should return the last
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
76 buffer in the series.")
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
77
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
78 ;;;###autoload
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
79 (defvar multi-isearch-next-buffer-current-function nil
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
80 "The currently active function to get the next buffer to search.
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
81 Initialized from `multi-isearch-next-buffer-function' when
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
82 Isearch starts.")
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
83
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
84 ;;;###autoload
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
85 (defvar multi-isearch-current-buffer nil
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
86 "The buffer where the search is currently searching.
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
87 The value is nil when the search still is in the initial buffer.")
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
88
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
89 (defvar multi-isearch-orig-search-fun nil)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
90 (defvar multi-isearch-orig-wrap nil)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
91 (defvar multi-isearch-orig-push-state nil)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
92
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
93
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
94 ;;;###autoload
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
95 (defun multi-isearch-setup ()
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
96 "Set up isearch to search multiple buffers.
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
97 Intended to be added to `isearch-mode-hook'."
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
98 (when (and multi-isearch-search
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
99 multi-isearch-next-buffer-function)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
100 (setq multi-isearch-current-buffer nil
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
101 multi-isearch-next-buffer-current-function
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
102 multi-isearch-next-buffer-function
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
103 multi-isearch-orig-search-fun
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
104 (default-value 'isearch-search-fun-function)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
105 multi-isearch-orig-wrap
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
106 (default-value 'isearch-wrap-function)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
107 multi-isearch-orig-push-state
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
108 (default-value 'isearch-push-state-function))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
109 (setq-default isearch-search-fun-function 'multi-isearch-search-fun
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
110 isearch-wrap-function 'multi-isearch-wrap
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
111 isearch-push-state-function 'multi-isearch-push-state)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
112 (add-hook 'isearch-mode-end-hook 'multi-isearch-end)))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
113
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
114 (defun multi-isearch-end ()
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
115 "Clean up the multi-buffer search after terminating isearch."
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
116 (setq multi-isearch-current-buffer nil
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
117 multi-isearch-next-buffer-current-function nil)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
118 (setq-default isearch-search-fun-function multi-isearch-orig-search-fun
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
119 isearch-wrap-function multi-isearch-orig-wrap
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
120 isearch-push-state-function multi-isearch-orig-push-state)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
121 (remove-hook 'isearch-mode-end-hook 'multi-isearch-end))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
122
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
123 (defun multi-isearch-search-fun ()
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
124 "Return the proper search function, for isearch in multiple buffers."
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
125 (lambda (string bound noerror)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
126 (let ((search-fun
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
127 ;; Use standard functions to search within one buffer
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
128 (cond
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
129 (isearch-word
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
130 (if isearch-forward 'word-search-forward 'word-search-backward))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
131 (isearch-regexp
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
132 (if isearch-forward 're-search-forward 're-search-backward))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
133 (t
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
134 (if isearch-forward 'search-forward 'search-backward))))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
135 found buffer)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
136 (or
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
137 ;; 1. First try searching in the initial buffer
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
138 (let ((res (funcall search-fun string bound noerror)))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
139 ;; Reset wrapping for all-buffers pause after successful search
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
140 (if (and res (eq multi-isearch-pause t))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
141 (setq multi-isearch-current-buffer nil))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
142 res)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
143 ;; 2. If the above search fails, start visiting next/prev buffers
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
144 ;; successively, and search the string in them. Do this only
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
145 ;; when bound is nil (i.e. not while lazy-highlighting search
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
146 ;; strings in the current buffer).
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
147 (when (and (not bound) multi-isearch-search)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
148 ;; If no-pause or there was one attempt to leave the current buffer
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
149 (if (or (null multi-isearch-pause)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
150 (and multi-isearch-pause multi-isearch-current-buffer))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
151 (condition-case nil
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
152 (progn
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
153 (while (not found)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
154 ;; Find the next buffer to search
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
155 (setq buffer (funcall multi-isearch-next-buffer-current-function
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
156 buffer))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
157 (with-current-buffer buffer
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
158 (goto-char (if isearch-forward (point-min) (point-max)))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
159 (setq isearch-barrier (point) isearch-opoint (point))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
160 ;; After visiting the next/prev buffer search the
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
161 ;; string in it again, until the function in
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
162 ;; multi-isearch-next-buffer-current-function raises
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
163 ;; an error at the beginning/end of the buffer sequence.
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
164 (setq found (funcall search-fun string bound noerror))))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
165 ;; Set buffer for isearch-search-string to switch
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
166 (if buffer (setq multi-isearch-current-buffer buffer))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
167 ;; Return point of the new search result
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
168 found)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
169 ;; Return nil when multi-isearch-next-buffer-current-function fails
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
170 (error nil))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
171 (signal 'search-failed (list string "Repeat for next buffer"))))))))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
172
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
173 (defun multi-isearch-wrap ()
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
174 "Wrap the multiple buffers search when search is failed.
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
175 Switch buffer to the first buffer for a forward search,
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
176 or to the last buffer for a backward search.
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
177 Set `multi-isearch-current-buffer' to the current buffer to display
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
178 the isearch suffix message [initial buffer] only when isearch leaves
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
179 the initial buffer."
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
180 (if (or (null multi-isearch-pause)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
181 (and multi-isearch-pause multi-isearch-current-buffer))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
182 (progn
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
183 (switch-to-buffer
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
184 (setq multi-isearch-current-buffer
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
185 (funcall multi-isearch-next-buffer-current-function
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
186 (current-buffer) t)))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
187 (goto-char (if isearch-forward (point-min) (point-max))))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
188 (setq multi-isearch-current-buffer (current-buffer))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
189 (setq isearch-wrapped nil)))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
190
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
191 (defun multi-isearch-push-state ()
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
192 "Save a function restoring the state of multiple buffers search.
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
193 Save the current buffer to the additional state parameter in the
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
194 search status stack."
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
195 `(lambda (cmd)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
196 (multi-isearch-pop-state cmd ,(current-buffer))))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
197
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
198 (defun multi-isearch-pop-state (cmd buffer)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
199 "Restore the multiple buffers search state.
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
200 Switch to the buffer restored from the search status stack."
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
201 (unless (equal buffer (current-buffer))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
202 (switch-to-buffer (setq multi-isearch-current-buffer buffer))))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
203
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
204
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
205 ;;; Global multi-buffer search invocations
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
206
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
207 (defvar multi-isearch-buffer-list nil)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
208
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
209 (defun multi-isearch-next-buffer-from-list (&optional buffer wrap)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
210 "Return the next buffer in the series of ChangeLog file buffers.
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
211 This function is used for multiple buffers isearch.
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
212 A sequence of buffers is formed by ChangeLog files with decreasing
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
213 numeric file name suffixes in the directory of the initial ChangeLog
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
214 file were isearch was started."
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
215 (let ((buffers (if isearch-forward
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
216 multi-isearch-buffer-list
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
217 (reverse multi-isearch-buffer-list))))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
218 (if wrap
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
219 (car buffers)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
220 (cadr (member (or buffer (current-buffer)) buffers)))))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
221
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
222 ;;;###autoload
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
223 (defun multi-isearch-buffers (buffers)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
224 "Start multi-buffer Isearch on a list of BUFFERS."
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
225 (let ((multi-isearch-next-buffer-function
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
226 'multi-isearch-next-buffer-from-list)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
227 (multi-isearch-buffer-list buffers))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
228 (switch-to-buffer (car buffers))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
229 (goto-char (if isearch-forward (point-min) (point-max)))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
230 (isearch-forward)))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
231
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
232 ;;;###autoload
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
233 (defun multi-isearch-buffers-regexp (buffers)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
234 "Start multi-buffer regexp Isearch on a list of BUFFERS."
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
235 (let ((multi-isearch-next-buffer-function
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
236 'multi-isearch-next-buffer-from-list)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
237 (multi-isearch-buffer-list buffers))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
238 (switch-to-buffer (car buffers))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
239 (goto-char (if isearch-forward (point-min) (point-max)))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
240 (isearch-forward-regexp)))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
241
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
242
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
243 ;;; Global multi-file search invocations
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
244
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
245 (defvar multi-isearch-file-list nil)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
246
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
247 (defun multi-isearch-next-file-buffer-from-list (&optional buffer wrap)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
248 "Return the next buffer in the series of ChangeLog file buffers.
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
249 This function is used for multiple buffers isearch.
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
250 A sequence of buffers is formed by ChangeLog files with decreasing
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
251 numeric file name suffixes in the directory of the initial ChangeLog
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
252 file were isearch was started."
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
253 (let ((files (if isearch-forward
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
254 multi-isearch-file-list
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
255 (reverse multi-isearch-file-list))))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
256 (find-file-noselect
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
257 (if wrap
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
258 (car files)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
259 (cadr (member (buffer-file-name buffer) files))))))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
260
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
261 ;;;###autoload
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
262 (defun multi-isearch-files (files)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
263 "Start multi-buffer Isearch on a list of FILES."
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
264 (let ((multi-isearch-next-buffer-function
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
265 'multi-isearch-next-file-buffer-from-list)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
266 (multi-isearch-file-list files))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
267 (find-file (car files))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
268 (goto-char (if isearch-forward (point-min) (point-max)))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
269 (isearch-forward)))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
270
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
271 ;;;###autoload
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
272 (defun multi-isearch-files-regexp (files)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
273 "Start multi-buffer regexp Isearch on a list of FILES."
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
274 (let ((multi-isearch-next-buffer-function
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
275 'multi-isearch-next-file-buffer-from-list)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
276 (multi-isearch-file-list files))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
277 (find-file (car files))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
278 (goto-char (if isearch-forward (point-min) (point-max)))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
279 (isearch-forward-regexp)))
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
280
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
281
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
282 (provide 'multi-isearch)
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
283
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
284 ;; arch-tag: a6d38ffa-4d14-4e39-8ac6-46af9d6a6773
2e007ba78796 Initial revision for a new file with most content from isearch-multi.el.
Juri Linkov <juri@jurta.org>
parents:
diff changeset
285 ;;; misearch.el ends here