annotate lisp/isearch.el @ 17846:c427501449a1

(display_text_line): Move the code to fill out the line with the newline's face to the end of the newline code. Add changes (commented out) to record ellipsis positions in charstarts.
author Richard M. Stallman <rms@gnu.org>
date Fri, 16 May 1997 07:32:59 +0000
parents 2fc1e3833259
children 354ae98947b5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2233
fb0ed5a1d0f3 Add standard library headers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2232
diff changeset
1 ;;; isearch.el --- incremental search minor mode.
2230
6314334d7c2b Add standard library headers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2055
diff changeset
2
17637
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
3 ;; Copyright (C) 1992, 93, 94, 95, 96, 1997 Free Software Foundation, Inc.
846
20674ae6bf52 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 792
diff changeset
4
2230
6314334d7c2b Add standard library headers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2055
diff changeset
5 ;; Author: Daniel LaLiberte <liberte@cs.uiuc.edu>
11969
fe63b4e6021a (isearch-edit-string): Don't bind isearch-other-end.
Karl Heuer <kwzh@gnu.org>
parents: 11643
diff changeset
6 ;; Maintainer: FSF
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
7
4839
4df93ff816c4 fix comment
David J. MacKenzie <djm@gnu.org>
parents: 4601
diff changeset
8 ;; This file is part of GNU Emacs.
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
9
6736
3e1323443b1a Fix copying conditions for current GPL version.
Richard M. Stallman <rms@gnu.org>
parents: 5649
diff changeset
10 ;; GNU Emacs is free software; you can redistribute it and/or modify
3e1323443b1a Fix copying conditions for current GPL version.
Richard M. Stallman <rms@gnu.org>
parents: 5649
diff changeset
11 ;; it under the terms of the GNU General Public License as published by
3e1323443b1a Fix copying conditions for current GPL version.
Richard M. Stallman <rms@gnu.org>
parents: 5649
diff changeset
12 ;; the Free Software Foundation; either version 2, or (at your option)
3e1323443b1a Fix copying conditions for current GPL version.
Richard M. Stallman <rms@gnu.org>
parents: 5649
diff changeset
13 ;; any later version.
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14
6736
3e1323443b1a Fix copying conditions for current GPL version.
Richard M. Stallman <rms@gnu.org>
parents: 5649
diff changeset
15 ;; GNU Emacs is distributed in the hope that it will be useful,
3e1323443b1a Fix copying conditions for current GPL version.
Richard M. Stallman <rms@gnu.org>
parents: 5649
diff changeset
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
3e1323443b1a Fix copying conditions for current GPL version.
Richard M. Stallman <rms@gnu.org>
parents: 5649
diff changeset
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3e1323443b1a Fix copying conditions for current GPL version.
Richard M. Stallman <rms@gnu.org>
parents: 5649
diff changeset
18 ;; GNU General Public License for more details.
3e1323443b1a Fix copying conditions for current GPL version.
Richard M. Stallman <rms@gnu.org>
parents: 5649
diff changeset
19
3e1323443b1a Fix copying conditions for current GPL version.
Richard M. Stallman <rms@gnu.org>
parents: 5649
diff changeset
20 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13991
diff changeset
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13991
diff changeset
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13991
diff changeset
23 ;; Boston, MA 02111-1307, USA.
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
24
2230
6314334d7c2b Add standard library headers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2055
diff changeset
25 ;;; Commentary:
6314334d7c2b Add standard library headers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2055
diff changeset
26
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
27 ;; Instructions
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
28
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
29 ;; For programmed use of isearch-mode, e.g. calling (isearch-forward),
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
30 ;; isearch-mode behaves modally and does not return until the search
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
31 ;; is completed. It uses a recursive-edit to behave this way. Note:
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
32 ;; gnus does it wrong: (call-interactively 'isearch-forward).
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
33
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
34 ;; The key bindings active within isearch-mode are defined below in
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
35 ;; `isearch-mode-map' which is given bindings close to the default
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
36 ;; characters of the original isearch.el. With `isearch-mode',
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
37 ;; however, you can bind multi-character keys and it should be easier
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
38 ;; to add new commands. One bug though: keys with meta-prefix cannot
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
39 ;; be longer than two chars. Also see minibuffer-local-isearch-map
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
40 ;; for bindings active during `isearch-edit-string'.
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
41
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
42 ;; Note to emacs version 19 users: isearch-mode should work even if
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
43 ;; you switch windows with the mouse, in which case isearch-mode is
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
44 ;; terminated automatically before the switch. This is true of lemacs
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
45 ;; too, with a few more cleanups I've neglected in this release.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
46 ;; No one has supplied patches for epoch yet.
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
47
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
48 ;; The search ring and completion commands automatically put you in
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
49 ;; the minibuffer to edit the string. This gives you a chance to
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
50 ;; modify the search string before executing the search. There are
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
51 ;; three commands to terminate the editing: C-s and C-r exit the
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
52 ;; minibuffer and search forward and reverse respectively, while C-m
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
53 ;; exits and does a nonincremental search.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
54
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
55 ;; Exiting immediately from isearch uses isearch-edit-string instead
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
56 ;; of nonincremental-search, if search-nonincremental-instead is non-nil.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
57 ;; The name of this option should probably be changed if we decide to
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
58 ;; keep the behavior. No point in forcing nonincremental search until
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
59 ;; the last possible moment.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
60
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
61 ;; TODO
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3526
diff changeset
62 ;; - Integrate the emacs 19 generalized command history.
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
63 ;; - Think about incorporating query-replace.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
64 ;; - Hooks and options for failed search.
792
45d748a65f24 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 725
diff changeset
65
2230
6314334d7c2b Add standard library headers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2055
diff changeset
66 ;;; Change Log:
6314334d7c2b Add standard library headers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2055
diff changeset
67
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13991
diff changeset
68 ;; Changes before those recorded in ChangeLog:
792
45d748a65f24 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 725
diff changeset
69
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13991
diff changeset
70 ;; Revision 1.4 92/09/14 16:26:02 liberte
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13991
diff changeset
71 ;; Added prefix args to isearch-forward, etc. to switch between
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13991
diff changeset
72 ;; string and regular expression searching.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13991
diff changeset
73 ;; Added some support for lemacs.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13991
diff changeset
74 ;; Added general isearch-highlight option - but only for lemacs so far.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13991
diff changeset
75 ;; Added support for frame switching in emacs 19.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13991
diff changeset
76 ;; Added word search option to isearch-edit-string.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13991
diff changeset
77 ;; Renamed isearch-quit to isearch-abort.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13991
diff changeset
78 ;; Numerous changes to comments and doc strings.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13991
diff changeset
79 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13991
diff changeset
80 ;; Revision 1.3 92/06/29 13:10:08 liberte
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13991
diff changeset
81 ;; Moved modal isearch-mode handling into isearch-mode.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13991
diff changeset
82 ;; Got rid of buffer-local isearch variables.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13991
diff changeset
83 ;; isearch-edit-string used by ring adjustments, completion, and
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13991
diff changeset
84 ;; nonincremental searching. C-s and C-r are additional exit commands.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13991
diff changeset
85 ;; Renamed all regex to regexp.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13991
diff changeset
86 ;; Got rid of found-start and found-point globals.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13991
diff changeset
87 ;; Generalized handling of upper-case chars.
792
45d748a65f24 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 725
diff changeset
88
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13991
diff changeset
89 ;; Revision 1.2 92/05/27 11:33:57 liberte
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13991
diff changeset
90 ;; Emacs version 19 has a search ring, which is supported here.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13991
diff changeset
91 ;; Other fixes found in the version 19 isearch are included here.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13991
diff changeset
92 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13991
diff changeset
93 ;; Also see variables search-caps-disable-folding,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13991
diff changeset
94 ;; search-nonincremental-instead, search-whitespace-regexp, and
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13991
diff changeset
95 ;; commands isearch-toggle-regexp, isearch-edit-string.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13991
diff changeset
96 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13991
diff changeset
97 ;; semi-modal isearching is supported.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13991
diff changeset
98
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13991
diff changeset
99 ;; Changes for 1.1
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13991
diff changeset
100 ;; 3/18/92 Fixed invalid-regexp.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13991
diff changeset
101 ;; 3/18/92 Fixed yanking in regexps.
792
45d748a65f24 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 725
diff changeset
102
2230
6314334d7c2b Add standard library headers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2055
diff changeset
103 ;;; Code:
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
104
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
105
9935
a36d24b4b365 (isearch-gnu-emacs-events): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 9934
diff changeset
106 ;;; Some additional options and constants.
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
107
17637
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
108 (defgroup isearch nil
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
109 "Incremental search minor mode."
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
110 :prefix "isearch-"
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
111 :prefix "search-"
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
112 :group 'matching)
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
113
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
114
17637
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
115 (defcustom search-exit-option t
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
116 "*Non-nil means random control characters terminate incremental search."
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
117 :type 'boolean
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
118 :group 'isearch)
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
119
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
120 (defcustom search-slow-window-lines 1
1143
0b4552590bb8 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1142
diff changeset
121 "*Number of lines in slow search display windows.
0b4552590bb8 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1142
diff changeset
122 These are the short windows used during incremental search on slow terminals.
0b4552590bb8 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1142
diff changeset
123 Negative means put the slow search window at the top (normally it's at bottom)
17637
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
124 and the value is minus the number of lines."
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
125 :type 'integer
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
126 :group 'isearch)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
127
17637
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
128 (defcustom search-slow-speed 1200
1143
0b4552590bb8 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1142
diff changeset
129 "*Highest terminal speed at which to use \"slow\" style incremental search.
0b4552590bb8 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1142
diff changeset
130 This is the style where a one-line window is created to show the line
17637
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
131 that the search has reached."
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
132 :type 'integer
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
133 :group 'isearch)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
134
17637
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
135 (defcustom search-upper-case 'not-yanks
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
136 "*If non-nil, upper case chars disable case fold searching.
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
137 That is, upper and lower case chars must match exactly.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
138 This applies no matter where the chars come from, but does not
1143
0b4552590bb8 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1142
diff changeset
139 apply to chars in regexps that are prefixed with `\\'.
17637
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
140 If this value is `not-yanks', yanked text is always downcased."
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
141 :type '(choice (const :tag "off" nil)
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
142 (const not-yanks)
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
143 (sexp :tag "on" :format "%t\n" t))
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
144 :group 'isearch)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
145
17637
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
146 (defcustom search-nonincremental-instead t
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
147 "*If non-nil, do a nonincremental search instead if exiting immediately.
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
148 Actually, `isearch-edit-string' is called to let you enter the search
17637
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
149 string, and RET terminates editing and does a nonincremental search."
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
150 :type 'boolean
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
151 :group 'isearch)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
152
17637
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
153 (defcustom search-whitespace-regexp "\\s-+"
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
154 "*If non-nil, regular expression to match a sequence of whitespace chars.
17637
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
155 You might want to use something like \"[ \\t\\r\\n]+\" instead."
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
156 :type 'regexp
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
157 :group 'isearch)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
158
17637
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
159 (defcustom search-highlight nil
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
160 "*Non-nil means incremental search highlights the current match."
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
161 :type 'boolean
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
162 :group 'isearch)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
163
16990
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
164 (defvar search-invisible nil
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
165 "*Non-nil means incremental search can match text hidden by an overlay.
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
166 \(This applies when using `noutline.el'.)")
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
167
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
168 (defvar isearch-mode-hook nil
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
169 "Function(s) to call after starting up an incremental search.")
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
170
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
171 (defvar isearch-mode-end-hook nil
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
172 "Function(s) to call after terminating an incremental search.")
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
173
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
174 ;;; Search ring.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
175
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
176 (defvar search-ring nil
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
177 "List of search string sequences.")
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
178 (defvar regexp-search-ring nil
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
179 "List of regular expression search string sequences.")
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
180
17637
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
181 (defcustom search-ring-max 16
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
182 "*Maximum length of search ring before oldest elements are thrown away."
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
183 :type 'integer
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
184 :group 'isearch)
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
185 (defcustom regexp-search-ring-max 16
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
186 "*Maximum length of regexp search ring before oldest elements are thrown away."
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
187 :type 'integer
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
188 :group 'isearch)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
189
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
190 (defvar search-ring-yank-pointer nil
1146
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
191 "Index in `search-ring' of last string reused.
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
192 nil if none yet.")
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
193 (defvar regexp-search-ring-yank-pointer nil
1146
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
194 "Index in `regexp-search-ring' of last string reused.
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
195 nil if none yet.")
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
196
17637
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
197 (defcustom search-ring-update nil
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
198 "*Non-nil if advancing or retreating in the search ring should cause search.
17637
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
199 Default value, nil, means edit the string instead."
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
200 :type 'boolean
b63c3782cb4c Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17139
diff changeset
201 :group 'isearch)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
202
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
203 ;;; Define isearch-mode keymap.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
204
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
205 (defvar isearch-mode-map nil
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
206 "Keymap for isearch-mode.")
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
207
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
208 (or isearch-mode-map
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
209 (let* ((i 0)
1143
0b4552590bb8 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1142
diff changeset
210 (map (make-keymap)))
2857
00029a6ad94c (isearch-mode-map): Extend the dense keymap to 256 chars.
Richard M. Stallman <rms@gnu.org>
parents: 2849
diff changeset
211 (or (vectorp (nth 1 map))
17781
1da61113c0c9 (isearch-mode-map): Treat Latin-1, Latin-2 an Latin-3
Richard M. Stallman <rms@gnu.org>
parents: 17637
diff changeset
212 (char-table-p (nth 1 map))
2857
00029a6ad94c (isearch-mode-map): Extend the dense keymap to 256 chars.
Richard M. Stallman <rms@gnu.org>
parents: 2849
diff changeset
213 (error "The initialization of isearch-mode-map must be updated"))
17794
2fc1e3833259 (isearch-process-search-char): Use multibyte
Richard M. Stallman <rms@gnu.org>
parents: 17781
diff changeset
214 ;; Make Latin-1, Latin-2, Latin-3 and Latin-4 characters
17781
1da61113c0c9 (isearch-mode-map): Treat Latin-1, Latin-2 an Latin-3
Richard M. Stallman <rms@gnu.org>
parents: 17637
diff changeset
215 ;; search for themselves.
17794
2fc1e3833259 (isearch-process-search-char): Use multibyte
Richard M. Stallman <rms@gnu.org>
parents: 17781
diff changeset
216 (aset (nth 1 map) (make-char 'latin-iso8859-1) 'isearch-printing-char)
2fc1e3833259 (isearch-process-search-char): Use multibyte
Richard M. Stallman <rms@gnu.org>
parents: 17781
diff changeset
217 (aset (nth 1 map) (make-char 'latin-iso8859-2) 'isearch-printing-char)
2fc1e3833259 (isearch-process-search-char): Use multibyte
Richard M. Stallman <rms@gnu.org>
parents: 17781
diff changeset
218 (aset (nth 1 map) (make-char 'latin-iso8859-3) 'isearch-printing-char)
2fc1e3833259 (isearch-process-search-char): Use multibyte
Richard M. Stallman <rms@gnu.org>
parents: 17781
diff changeset
219 (aset (nth 1 map) (make-char 'latin-iso8859-4) 'isearch-printing-char)
1458
ef32d654351e (isearch-mode-map): Make the top-level keymap dense.
Richard M. Stallman <rms@gnu.org>
parents: 1380
diff changeset
220 ;; Make function keys, etc, exit the search.
ef32d654351e (isearch-mode-map): Make the top-level keymap dense.
Richard M. Stallman <rms@gnu.org>
parents: 1380
diff changeset
221 (define-key map [t] 'isearch-other-control-char)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
222 ;; Control chars, by default, end isearch mode transparently.
1458
ef32d654351e (isearch-mode-map): Make the top-level keymap dense.
Richard M. Stallman <rms@gnu.org>
parents: 1380
diff changeset
223 ;; We need these explicit definitions because, in a dense keymap,
ef32d654351e (isearch-mode-map): Make the top-level keymap dense.
Richard M. Stallman <rms@gnu.org>
parents: 1380
diff changeset
224 ;; the binding for t does not affect characters.
ef32d654351e (isearch-mode-map): Make the top-level keymap dense.
Richard M. Stallman <rms@gnu.org>
parents: 1380
diff changeset
225 ;; We use a dense keymap to save space.
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
226 (while (< i ?\ )
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
227 (define-key map (make-string 1 i) 'isearch-other-control-char)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
228 (setq i (1+ i)))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
229
2889
debc28aaae2c (isearch-mode-map): Use vector, not string, to bind printing characters.
Richard M. Stallman <rms@gnu.org>
parents: 2857
diff changeset
230 ;; Printing chars extend the search string by default.
1458
ef32d654351e (isearch-mode-map): Make the top-level keymap dense.
Richard M. Stallman <rms@gnu.org>
parents: 1380
diff changeset
231 (setq i ?\ )
2788
30919bba8508 (isearch-mode-map): Handle any length vector in keymap.
Richard M. Stallman <rms@gnu.org>
parents: 2572
diff changeset
232 (while (< i (length (nth 1 map)))
2889
debc28aaae2c (isearch-mode-map): Use vector, not string, to bind printing characters.
Richard M. Stallman <rms@gnu.org>
parents: 2857
diff changeset
233 (define-key map (vector i) 'isearch-printing-char)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
234 (setq i (1+ i)))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
235
10166
2cc7d710cf56 (isearch-mode-map): Move the code to set up the meta submap earlier in
Richard M. Stallman <rms@gnu.org>
parents: 10117
diff changeset
236 ;; To handle local bindings with meta char prefix keys, define
2cc7d710cf56 (isearch-mode-map): Move the code to set up the meta submap earlier in
Richard M. Stallman <rms@gnu.org>
parents: 10117
diff changeset
237 ;; another full keymap. This must be done for any other prefix
2cc7d710cf56 (isearch-mode-map): Move the code to set up the meta submap earlier in
Richard M. Stallman <rms@gnu.org>
parents: 10117
diff changeset
238 ;; keys as well, one full keymap per char of the prefix key. It
2cc7d710cf56 (isearch-mode-map): Move the code to set up the meta submap earlier in
Richard M. Stallman <rms@gnu.org>
parents: 10117
diff changeset
239 ;; would be simpler to disable the global keymap, and/or have a
2cc7d710cf56 (isearch-mode-map): Move the code to set up the meta submap earlier in
Richard M. Stallman <rms@gnu.org>
parents: 10117
diff changeset
240 ;; default local key binding for any key not otherwise bound.
2cc7d710cf56 (isearch-mode-map): Move the code to set up the meta submap earlier in
Richard M. Stallman <rms@gnu.org>
parents: 10117
diff changeset
241 (let ((meta-map (make-sparse-keymap)))
2cc7d710cf56 (isearch-mode-map): Move the code to set up the meta submap earlier in
Richard M. Stallman <rms@gnu.org>
parents: 10117
diff changeset
242 (define-key map (char-to-string meta-prefix-char) meta-map)
2cc7d710cf56 (isearch-mode-map): Move the code to set up the meta submap earlier in
Richard M. Stallman <rms@gnu.org>
parents: 10117
diff changeset
243 (define-key map [escape] meta-map))
2cc7d710cf56 (isearch-mode-map): Move the code to set up the meta submap earlier in
Richard M. Stallman <rms@gnu.org>
parents: 10117
diff changeset
244 (define-key map (vector meta-prefix-char t) 'isearch-other-meta-char)
2cc7d710cf56 (isearch-mode-map): Move the code to set up the meta submap earlier in
Richard M. Stallman <rms@gnu.org>
parents: 10117
diff changeset
245
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
246 ;; Several non-printing chars change the searching behavior.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
247 (define-key map "\C-s" 'isearch-repeat-forward)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
248 (define-key map "\C-r" 'isearch-repeat-backward)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
249 (define-key map "\177" 'isearch-delete-char)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
250 (define-key map "\C-g" 'isearch-abort)
10166
2cc7d710cf56 (isearch-mode-map): Move the code to set up the meta submap earlier in
Richard M. Stallman <rms@gnu.org>
parents: 10117
diff changeset
251 ;; This assumes \e is the meta-prefix-char.
2cc7d710cf56 (isearch-mode-map): Move the code to set up the meta submap earlier in
Richard M. Stallman <rms@gnu.org>
parents: 10117
diff changeset
252 (or (= ?\e meta-prefix-char)
2cc7d710cf56 (isearch-mode-map): Move the code to set up the meta submap earlier in
Richard M. Stallman <rms@gnu.org>
parents: 10117
diff changeset
253 (error "Inconsistency in isearch.el"))
10117
413a1fd0f7c4 (isearch-cancel): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9940
diff changeset
254 (define-key map "\e\e\e" 'isearch-cancel)
413a1fd0f7c4 (isearch-cancel): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9940
diff changeset
255 (define-key map [escape escape escape] 'isearch-cancel)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
256
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
257 (define-key map "\C-q" 'isearch-quote-char)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
258
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
259 (define-key map "\r" 'isearch-exit)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
260 (define-key map "\C-j" 'isearch-printing-char)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
261 (define-key map "\t" 'isearch-printing-char)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
262 (define-key map " " 'isearch-whitespace-chars)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
263
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
264 (define-key map "\C-w" 'isearch-yank-word)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
265 (define-key map "\C-y" 'isearch-yank-line)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
266
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
267 ;; Define keys for regexp chars * ? |.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
268 ;; Nothing special for + because it matches at least once.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
269 (define-key map "*" 'isearch-*-char)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
270 (define-key map "?" 'isearch-*-char)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
271 (define-key map "|" 'isearch-|-char)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
272
2425
fd15462e52a1 (isearch-mode-map): Delete the binding for C-h.
Richard M. Stallman <rms@gnu.org>
parents: 2296
diff changeset
273 ;;; Turned off because I find I expect to get the global definition--rms.
fd15462e52a1 (isearch-mode-map): Delete the binding for C-h.
Richard M. Stallman <rms@gnu.org>
parents: 2296
diff changeset
274 ;;; ;; Instead bind C-h to special help command for isearch-mode.
fd15462e52a1 (isearch-mode-map): Delete the binding for C-h.
Richard M. Stallman <rms@gnu.org>
parents: 2296
diff changeset
275 ;;; (define-key map "\C-h" 'isearch-mode-help)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
276
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
277 (define-key map "\M-n" 'isearch-ring-advance)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
278 (define-key map "\M-p" 'isearch-ring-retreat)
4876
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
279 (define-key map "\M-y" 'isearch-yank-kill)
1557
816bfa185671 * isearch.el (isearch-frames-exist): This isn't what we want -
Jim Blandy <jimb@redhat.com>
parents: 1534
diff changeset
280
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
281 (define-key map "\M-\t" 'isearch-complete)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
282
12284
07a76f045154 (isearch-mode-map): Bind frame events to nil.
Karl Heuer <kwzh@gnu.org>
parents: 12265
diff changeset
283 ;; Pass frame events transparently so they won't exit the search.
07a76f045154 (isearch-mode-map): Bind frame events to nil.
Karl Heuer <kwzh@gnu.org>
parents: 12265
diff changeset
284 ;; In particular, if we have more than one display open, then a
07a76f045154 (isearch-mode-map): Bind frame events to nil.
Karl Heuer <kwzh@gnu.org>
parents: 12265
diff changeset
285 ;; switch-frame might be generated by someone typing at another keyboard.
07a76f045154 (isearch-mode-map): Bind frame events to nil.
Karl Heuer <kwzh@gnu.org>
parents: 12265
diff changeset
286 (define-key map [switch-frame] nil)
07a76f045154 (isearch-mode-map): Bind frame events to nil.
Karl Heuer <kwzh@gnu.org>
parents: 12265
diff changeset
287 (define-key map [delete-frame] nil)
07a76f045154 (isearch-mode-map): Bind frame events to nil.
Karl Heuer <kwzh@gnu.org>
parents: 12265
diff changeset
288 (define-key map [iconify-frame] nil)
07a76f045154 (isearch-mode-map): Bind frame events to nil.
Karl Heuer <kwzh@gnu.org>
parents: 12265
diff changeset
289 (define-key map [make-frame-visible] nil)
17006
8d4650e49e36 (isearch-mode-map): Define
Karl Heuer <kwzh@gnu.org>
parents: 16990
diff changeset
290 ;; For searching multilingual text.
8d4650e49e36 (isearch-mode-map): Define
Karl Heuer <kwzh@gnu.org>
parents: 16990
diff changeset
291 (define-key map "\C-\\" 'isearch-toggle-input-method)
8d4650e49e36 (isearch-mode-map): Define
Karl Heuer <kwzh@gnu.org>
parents: 16990
diff changeset
292 (define-key map "\C-^" 'isearch-toggle-specified-input-method)
12284
07a76f045154 (isearch-mode-map): Bind frame events to nil.
Karl Heuer <kwzh@gnu.org>
parents: 12265
diff changeset
293
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
294 (setq isearch-mode-map map)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
295 ))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
296
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
297 ;; Some bindings you may want to put in your isearch-mode-hook.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
298 ;; Suggest some alternates...
7294
4ff0c1e7c8e2 (isearch-case-fold-search): new possible value `yes'
Richard M. Stallman <rms@gnu.org>
parents: 6736
diff changeset
299 ;; (define-key isearch-mode-map "\C-t" 'isearch-toggle-case-fold)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
300 ;; (define-key isearch-mode-map "\C-t" 'isearch-toggle-regexp)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
301 ;; (define-key isearch-mode-map "\C-^" 'isearch-edit-string)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
302
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
303
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
304 (defvar minibuffer-local-isearch-map nil
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
305 "Keymap for editing isearch strings in the minibuffer.")
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
306
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
307 (or minibuffer-local-isearch-map
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
308 (let ((map (copy-keymap minibuffer-local-map)))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
309 (define-key map "\r" 'isearch-nonincremental-exit-minibuffer)
1184
5f4300ccc93f entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1169
diff changeset
310 (define-key map "\M-n" 'isearch-ring-advance-edit)
5f4300ccc93f entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1169
diff changeset
311 (define-key map "\M-p" 'isearch-ring-retreat-edit)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
312 (define-key map "\M-\t" 'isearch-complete-edit)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
313 (define-key map "\C-s" 'isearch-forward-exit-minibuffer)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
314 (define-key map "\C-r" 'isearch-reverse-exit-minibuffer)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
315 (setq minibuffer-local-isearch-map map)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
316 ))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
317
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
318 ;; Internal variables declared globally for byte-compiler.
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
319 ;; These are all set with setq while isearching
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
320 ;; and bound locally while editing the search string.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
321
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
322 (defvar isearch-forward nil) ; Searching in the forward direction.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
323 (defvar isearch-regexp nil) ; Searching for a regexp.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
324 (defvar isearch-word nil) ; Searching for words.
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
325
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
326 (defvar isearch-cmds nil) ; Stack of search status sets.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
327 (defvar isearch-string "") ; The current search string.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
328 (defvar isearch-message "") ; text-char-description version of isearch-string
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
329
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
330 (defvar isearch-success t) ; Searching is currently successful.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
331 (defvar isearch-invalid-regexp nil) ; Regexp not well formed.
5601
8353962cfd74 SPC is not special in regexp within brackets.
Richard M. Stallman <rms@gnu.org>
parents: 5554
diff changeset
332 (defvar isearch-within-brackets nil) ; Regexp has unclosed [.
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
333 (defvar isearch-other-end nil) ; Start (end) of match if forward (backward).
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
334 (defvar isearch-wrapped nil) ; Searching restarted from the top (bottom).
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
335 (defvar isearch-barrier 0)
13799
49b7cd70c43c (isearch-done): Use executing-kbd-macro.
Karl Heuer <kwzh@gnu.org>
parents: 13682
diff changeset
336 (defvar isearch-just-started nil)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
337
7294
4ff0c1e7c8e2 (isearch-case-fold-search): new possible value `yes'
Richard M. Stallman <rms@gnu.org>
parents: 6736
diff changeset
338 ; case-fold-search while searching.
4ff0c1e7c8e2 (isearch-case-fold-search): new possible value `yes'
Richard M. Stallman <rms@gnu.org>
parents: 6736
diff changeset
339 ; either nil, t, or 'yes. 'yes means the same as t except that mixed
4ff0c1e7c8e2 (isearch-case-fold-search): new possible value `yes'
Richard M. Stallman <rms@gnu.org>
parents: 6736
diff changeset
340 ; case in the search string is ignored.
4ff0c1e7c8e2 (isearch-case-fold-search): new possible value `yes'
Richard M. Stallman <rms@gnu.org>
parents: 6736
diff changeset
341 (defvar isearch-case-fold-search nil)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
342
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
343 (defvar isearch-adjusted nil)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
344 (defvar isearch-slow-terminal-mode nil)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
345 ;;; If t, using a small window.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
346 (defvar isearch-small-window nil)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
347 (defvar isearch-opoint 0)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
348 ;;; The window configuration active at the beginning of the search.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
349 (defvar isearch-window-configuration nil)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
350
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
351 ;; Flag to indicate a yank occurred, so don't move the cursor.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
352 (defvar isearch-yank-flag nil)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
353
17006
8d4650e49e36 (isearch-mode-map): Define
Karl Heuer <kwzh@gnu.org>
parents: 16990
diff changeset
354 ;; Flag to indicate that we are searching multibyte characaters.
8d4650e49e36 (isearch-mode-map): Define
Karl Heuer <kwzh@gnu.org>
parents: 16990
diff changeset
355 (defvar isearch-multibyte-characters-flag nil)
8d4650e49e36 (isearch-mode-map): Define
Karl Heuer <kwzh@gnu.org>
parents: 16990
diff changeset
356
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
357 ;;; A function to be called after each input character is processed.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
358 ;;; (It is not called after characters that exit the search.)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
359 ;;; It is only set from an optional argument to `isearch-mode'.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
360 (defvar isearch-op-fun nil)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
361
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
362 ;;; Is isearch-mode in a recursive edit for modal searching.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
363 (defvar isearch-recursive-edit nil)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
364
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
365 ;;; Should isearch be terminated after doing one search?
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
366 (defvar isearch-nonincremental nil)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
367
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
368 ;; New value of isearch-forward after isearch-edit-string.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
369 (defvar isearch-new-forward nil)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
370
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
371
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
372 ;; Minor-mode-alist changes - kind of redundant with the
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
373 ;; echo area, but if isearching in multiple windows, it can be useful.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
374
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
375 (or (assq 'isearch-mode minor-mode-alist)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
376 (nconc minor-mode-alist
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
377 (list '(isearch-mode isearch-mode))))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
378
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
379 (defvar isearch-mode nil) ;; Name of the minor mode, if non-nil.
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
380 (make-variable-buffer-local 'isearch-mode)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
381
1143
0b4552590bb8 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1142
diff changeset
382 (define-key global-map "\C-s" 'isearch-forward)
0b4552590bb8 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1142
diff changeset
383 (define-key esc-map "\C-s" 'isearch-forward-regexp)
0b4552590bb8 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1142
diff changeset
384 (define-key global-map "\C-r" 'isearch-backward)
0b4552590bb8 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1142
diff changeset
385 (define-key esc-map "\C-r" 'isearch-backward-regexp)
0b4552590bb8 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1142
diff changeset
386
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
387 ;;; Entry points to isearch-mode.
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
388 ;;; These four functions should replace those in loaddefs.el
2572
8784bb8514b0 Replaced all fsets with defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2533
diff changeset
389 ;;; An alternative is to defalias isearch-forward etc to isearch-mode,
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
390 ;;; and look at this-command to set the options accordingly.
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
391
1883
b707809f29bb (isearch-backward-regexp):
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
392 (defun isearch-forward (&optional regexp-p no-recursive-edit)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
393 "\
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
394 Do incremental search forward.
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
395 With a prefix argument, do an incremental regular expression search instead.
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
396 \\<isearch-mode-map>
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
397 As you type characters, they add to the search string and are found.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
398 The following non-printing keys are bound in `isearch-mode-map'.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
399
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
400 Type \\[isearch-delete-char] to cancel characters from end of search string.
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
401 Type \\[isearch-exit] to exit, leaving point at location found.
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
402 Type LFD (C-j) to match end of line.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
403 Type \\[isearch-repeat-forward] to search again forward,\
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
404 \\[isearch-repeat-backward] to search again backward.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
405 Type \\[isearch-yank-word] to yank word from buffer onto end of search\
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
406 string and search for it.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
407 Type \\[isearch-yank-line] to yank rest of line onto end of search string\
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
408 and search for it.
16495
30c0ee43cc13 (isearch-forward): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16288
diff changeset
409 Type \\[isearch-yank-kill] to yank the last string of killed text.
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
410 Type \\[isearch-quote-char] to quote control character to search for it.
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
411 \\[isearch-abort] while searching or when search has failed cancels input\
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
412 back to what has
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
413 been found successfully.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
414 \\[isearch-abort] when search is successful aborts and moves point to\
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
415 starting point.
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
416
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
417 Also supported is a search ring of the previous 16 search strings.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
418 Type \\[isearch-ring-advance] to search for the next item in the search ring.
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
419 Type \\[isearch-ring-retreat] to search for the previous item in the search\
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
420 ring.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
421 Type \\[isearch-complete] to complete the search string using the search ring.
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
422
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
423 The above keys, bound in `isearch-mode-map', are often controlled by
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
424 options; do M-x apropos on search-.* to find them.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
425 Other control and meta characters terminate the search
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
426 and are then executed normally (depending on `search-exit-option').
13112
7c5e73b8aa04 (isearch-forward): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 12824
diff changeset
427 Likewise for function keys and mouse button events.
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
428
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
429 If this function is called non-interactively, it does not return to
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
430 the calling function until the search is done."
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
431
1883
b707809f29bb (isearch-backward-regexp):
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
432 (interactive "P\np")
1885
9e79ffe97d5b Fix minor bugs in previous change.
Richard M. Stallman <rms@gnu.org>
parents: 1883
diff changeset
433 (isearch-mode t (not (null regexp-p)) nil (not no-recursive-edit)))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
434
1883
b707809f29bb (isearch-backward-regexp):
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
435 (defun isearch-forward-regexp (&optional not-regexp no-recursive-edit)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
436 "\
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
437 Do incremental search forward for regular expression.
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
438 With a prefix argument, do a regular string search instead.
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
439 Like ordinary incremental search except that your input
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
440 is treated as a regexp. See \\[isearch-forward] for more info."
1883
b707809f29bb (isearch-backward-regexp):
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
441 (interactive "P\np")
1885
9e79ffe97d5b Fix minor bugs in previous change.
Richard M. Stallman <rms@gnu.org>
parents: 1883
diff changeset
442 (isearch-mode t (null not-regexp) nil (not no-recursive-edit)))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
443
1883
b707809f29bb (isearch-backward-regexp):
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
444 (defun isearch-backward (&optional regexp-p no-recursive-edit)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
445 "\
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
446 Do incremental search backward.
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
447 With a prefix argument, do a regular expression search instead.
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
448 See \\[isearch-forward] for more information."
1883
b707809f29bb (isearch-backward-regexp):
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
449 (interactive "P\np")
1885
9e79ffe97d5b Fix minor bugs in previous change.
Richard M. Stallman <rms@gnu.org>
parents: 1883
diff changeset
450 (isearch-mode nil (not (null regexp-p)) nil (not no-recursive-edit)))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
451
1883
b707809f29bb (isearch-backward-regexp):
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
452 (defun isearch-backward-regexp (&optional not-regexp no-recursive-edit)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
453 "\
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
454 Do incremental search backward for regular expression.
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
455 With a prefix argument, do a regular string search instead.
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
456 Like ordinary incremental search except that your input
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
457 is treated as a regexp. See \\[isearch-forward] for more info."
1883
b707809f29bb (isearch-backward-regexp):
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
458 (interactive "P\np")
1885
9e79ffe97d5b Fix minor bugs in previous change.
Richard M. Stallman <rms@gnu.org>
parents: 1883
diff changeset
459 (isearch-mode nil (null not-regexp) nil (not no-recursive-edit)))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
460
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
461
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
462 (defun isearch-mode-help ()
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
463 (interactive)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
464 (describe-function 'isearch-forward)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
465 (isearch-update))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
466
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
467
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
468 ;; isearch-mode only sets up incremental search for the minor mode.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
469 ;; All the work is done by the isearch-mode commands.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
470
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
471 ;; Not used yet:
16687
049c87a96dca Change defconsts to defvars.
Richard M. Stallman <rms@gnu.org>
parents: 16635
diff changeset
472 ;;(defvar isearch-commands '(isearch-forward isearch-backward
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
473 ;; isearch-forward-regexp isearch-backward-regexp)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
474 ;; "List of commands for which isearch-mode does not recursive-edit.")
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
475
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
476
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
477 (defun isearch-mode (forward &optional regexp op-fun recursive-edit word-p)
11643
5f7440c4c0de (isearch-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11579
diff changeset
478 "Start isearch minor mode. Called by `isearch-forward', etc.
5f7440c4c0de (isearch-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11579
diff changeset
479
5f7440c4c0de (isearch-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11579
diff changeset
480 \\{isearch-mode-map}"
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
481
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
482 ;; Initialize global vars.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
483 (setq isearch-forward forward
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
484 isearch-regexp regexp
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
485 isearch-word word-p
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
486 isearch-op-fun op-fun
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
487 isearch-case-fold-search case-fold-search
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
488 isearch-string ""
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
489 isearch-message ""
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
490 isearch-cmds nil
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
491 isearch-success t
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
492 isearch-wrapped nil
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
493 isearch-barrier (point)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
494 isearch-adjusted nil
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
495 isearch-yank-flag nil
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
496 isearch-invalid-regexp nil
5601
8353962cfd74 SPC is not special in regexp within brackets.
Richard M. Stallman <rms@gnu.org>
parents: 5554
diff changeset
497 isearch-within-brackets nil
9940
4a06fd6dcbff (isearch-other-meta-char): Delete debugging code.
Richard M. Stallman <rms@gnu.org>
parents: 9935
diff changeset
498 isearch-slow-terminal-mode (and (<= baud-rate search-slow-speed)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
499 (> (window-height)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
500 (* 4 search-slow-window-lines)))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
501 isearch-other-end nil
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
502 isearch-small-window nil
13799
49b7cd70c43c (isearch-done): Use executing-kbd-macro.
Karl Heuer <kwzh@gnu.org>
parents: 13682
diff changeset
503 isearch-just-started t
17006
8d4650e49e36 (isearch-mode-map): Define
Karl Heuer <kwzh@gnu.org>
parents: 16990
diff changeset
504 isearch-multibyte-characters-flag nil
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
505
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
506 isearch-opoint (point)
1146
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
507 search-ring-yank-pointer nil
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
508 regexp-search-ring-yank-pointer nil)
13799
49b7cd70c43c (isearch-done): Use executing-kbd-macro.
Karl Heuer <kwzh@gnu.org>
parents: 13682
diff changeset
509 (looking-at "")
5554
0ac0776c23af (isearch-mode): If not slow, clear isearch-window-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 5411
diff changeset
510 (setq isearch-window-configuration
0ac0776c23af (isearch-mode): If not slow, clear isearch-window-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 5411
diff changeset
511 (if isearch-slow-terminal-mode (current-window-configuration) nil))
3476
6c6d1c6afb57 (isearch-mode): Set isearch-window-configuration only if in slow mode.
Richard M. Stallman <rms@gnu.org>
parents: 3385
diff changeset
512
16620
c3a095290ec4 (isearch-mode): Maybe make minibuffer frame visible and/or raise it.
Richard M. Stallman <rms@gnu.org>
parents: 16566
diff changeset
513 ;; Maybe make minibuffer frame visible and/or raise it.
c3a095290ec4 (isearch-mode): Maybe make minibuffer frame visible and/or raise it.
Richard M. Stallman <rms@gnu.org>
parents: 16566
diff changeset
514 (let ((frame (window-frame (minibuffer-window))))
c3a095290ec4 (isearch-mode): Maybe make minibuffer frame visible and/or raise it.
Richard M. Stallman <rms@gnu.org>
parents: 16566
diff changeset
515 (if (not (memq (frame-live-p frame) '(nil t)))
c3a095290ec4 (isearch-mode): Maybe make minibuffer frame visible and/or raise it.
Richard M. Stallman <rms@gnu.org>
parents: 16566
diff changeset
516 (progn
c3a095290ec4 (isearch-mode): Maybe make minibuffer frame visible and/or raise it.
Richard M. Stallman <rms@gnu.org>
parents: 16566
diff changeset
517 (make-frame-visible frame)
c3a095290ec4 (isearch-mode): Maybe make minibuffer frame visible and/or raise it.
Richard M. Stallman <rms@gnu.org>
parents: 16566
diff changeset
518 (if minibuffer-auto-raise
c3a095290ec4 (isearch-mode): Maybe make minibuffer frame visible and/or raise it.
Richard M. Stallman <rms@gnu.org>
parents: 16566
diff changeset
519 (raise-frame frame)))))
c3a095290ec4 (isearch-mode): Maybe make minibuffer frame visible and/or raise it.
Richard M. Stallman <rms@gnu.org>
parents: 16566
diff changeset
520
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
521 (setq isearch-mode " Isearch") ;; forward? regexp?
11579
28e4495a9e8f (isearch-mode, isearch-done): Use force-mode-line-update.
Karl Heuer <kwzh@gnu.org>
parents: 11526
diff changeset
522 (force-mode-line-update)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
523
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
524 (isearch-push-state)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
525
12265
1d2296cfa1e3 (isearch-mode): Use overriding-terminal-local-map, not overriding-local-map.
Karl Heuer <kwzh@gnu.org>
parents: 12106
diff changeset
526 (setq overriding-terminal-local-map isearch-mode-map)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
527 (isearch-update)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
528 (run-hooks 'isearch-mode-hook)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
529
14939
c0e8ab5d23fc (isearch-mode): Use add-hook for mouse-leave-buffer-hook.
Richard M. Stallman <rms@gnu.org>
parents: 14288
diff changeset
530 (add-hook 'mouse-leave-buffer-hook 'isearch-done)
10257
d530ba7eb471 (isearch-mode): Set mouse-leave-buffer-hook.
Richard M. Stallman <rms@gnu.org>
parents: 10183
diff changeset
531
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
532 ;; isearch-mode can be made modal (in the sense of not returning to
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
533 ;; the calling function until searching is completed) by entering
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
534 ;; a recursive-edit and exiting it when done isearching.
3385
1ea5ec97ae18 (isearch-mode): If enter recursive-edit,
Richard M. Stallman <rms@gnu.org>
parents: 3250
diff changeset
535 (if recursive-edit
1ea5ec97ae18 (isearch-mode): If enter recursive-edit,
Richard M. Stallman <rms@gnu.org>
parents: 3250
diff changeset
536 (let ((isearch-recursive-edit t))
1ea5ec97ae18 (isearch-mode): If enter recursive-edit,
Richard M. Stallman <rms@gnu.org>
parents: 3250
diff changeset
537 (recursive-edit)))
8663
3f7bd8c32c9a (isearch-edit-string): In the isearch-recursive-edit case,
Richard M. Stallman <rms@gnu.org>
parents: 8455
diff changeset
538 isearch-success)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
539
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
540
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
541 ;; Some high level utilities. Others below.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
542
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
543 (defun isearch-update ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
544 ;; Called after each command to update the display.
9935
a36d24b4b365 (isearch-gnu-emacs-events): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 9934
diff changeset
545 (if (null unread-command-events)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
546 (progn
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
547 (if (not (input-pending-p))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
548 (isearch-message))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
549 (if (and isearch-slow-terminal-mode
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
550 (not (or isearch-small-window
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
551 (pos-visible-in-window-p))))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
552 (let ((found-point (point)))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
553 (setq isearch-small-window t)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
554 (move-to-window-line 0)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
555 (let ((window-min-height 1))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
556 (split-window nil (if (< search-slow-window-lines 0)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
557 (1+ (- search-slow-window-lines))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
558 (- (window-height)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
559 (1+ search-slow-window-lines)))))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
560 (if (< search-slow-window-lines 0)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
561 (progn (vertical-motion (- 1 search-slow-window-lines))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
562 (set-window-start (next-window) (point))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
563 (set-window-hscroll (next-window)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
564 (window-hscroll))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
565 (set-window-hscroll (selected-window) 0))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
566 (other-window 1))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
567 (goto-char found-point)))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
568 (if isearch-other-end
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
569 (if (< isearch-other-end (point)) ; isearch-forward?
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
570 (isearch-highlight isearch-other-end (point))
5328
a1450ffc50b7 (isearch-update): If isearch-other-end is nil,
Richard M. Stallman <rms@gnu.org>
parents: 5277
diff changeset
571 (isearch-highlight (point) isearch-other-end))
a1450ffc50b7 (isearch-update): If isearch-other-end is nil,
Richard M. Stallman <rms@gnu.org>
parents: 5277
diff changeset
572 (isearch-dehighlight nil))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
573 ))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
574 (setq ;; quit-flag nil not for isearch-mode
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
575 isearch-adjusted nil
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
576 isearch-yank-flag nil)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
577 )
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
578
8663
3f7bd8c32c9a (isearch-edit-string): In the isearch-recursive-edit case,
Richard M. Stallman <rms@gnu.org>
parents: 8455
diff changeset
579 (defun isearch-done (&optional nopush edit)
14939
c0e8ab5d23fc (isearch-mode): Use add-hook for mouse-leave-buffer-hook.
Richard M. Stallman <rms@gnu.org>
parents: 14288
diff changeset
580 (remove-hook 'mouse-leave-buffer-hook 'isearch-done)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
581 ;; Called by all commands that terminate isearch-mode.
1184
5f4300ccc93f entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1169
diff changeset
582 ;; If NOPUSH is non-nil, we don't push the string on the search ring.
12265
1d2296cfa1e3 (isearch-mode): Use overriding-terminal-local-map, not overriding-local-map.
Karl Heuer <kwzh@gnu.org>
parents: 12106
diff changeset
583 (setq overriding-terminal-local-map nil)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
584 ;; (setq pre-command-hook isearch-old-pre-command-hook) ; for lemacs
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
585 (isearch-dehighlight t)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
586 (let ((found-start (window-start (selected-window)))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
587 (found-point (point)))
3476
6c6d1c6afb57 (isearch-mode): Set isearch-window-configuration only if in slow mode.
Richard M. Stallman <rms@gnu.org>
parents: 3385
diff changeset
588 (if isearch-window-configuration
6c6d1c6afb57 (isearch-mode): Set isearch-window-configuration only if in slow mode.
Richard M. Stallman <rms@gnu.org>
parents: 3385
diff changeset
589 (set-window-configuration isearch-window-configuration))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
590
4379
36f6f4b28dde (isearch-done): Move point (for small window)
Richard M. Stallman <rms@gnu.org>
parents: 4095
diff changeset
591 (if isearch-small-window
36f6f4b28dde (isearch-done): Move point (for small window)
Richard M. Stallman <rms@gnu.org>
parents: 4095
diff changeset
592 (goto-char found-point)
36f6f4b28dde (isearch-done): Move point (for small window)
Richard M. Stallman <rms@gnu.org>
parents: 4095
diff changeset
593 ;; Exiting the save-window-excursion clobbers window-start; restore it.
10183
7e28ad5e1042 (isearch-done): Don't print msg about mark if we don't set it.
Richard M. Stallman <rms@gnu.org>
parents: 10166
diff changeset
594 (set-window-start (selected-window) found-start t))
4379
36f6f4b28dde (isearch-done): Move point (for small window)
Richard M. Stallman <rms@gnu.org>
parents: 4095
diff changeset
595
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
596 ;; If there was movement, mark the starting position.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
597 ;; Maybe should test difference between and set mark iff > threshold.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
598 (if (/= (point) isearch-opoint)
10183
7e28ad5e1042 (isearch-done): Don't print msg about mark if we don't set it.
Richard M. Stallman <rms@gnu.org>
parents: 10166
diff changeset
599 (or (and transient-mark-mode mark-active)
7e28ad5e1042 (isearch-done): Don't print msg about mark if we don't set it.
Richard M. Stallman <rms@gnu.org>
parents: 10166
diff changeset
600 (progn
7e28ad5e1042 (isearch-done): Don't print msg about mark if we don't set it.
Richard M. Stallman <rms@gnu.org>
parents: 10166
diff changeset
601 (push-mark isearch-opoint t)
13682
108ac303b3e5 (isearch-edit-string): Consider the case when
Richard M. Stallman <rms@gnu.org>
parents: 13254
diff changeset
602 (or executing-kbd-macro (> (minibuffer-depth) 0)
10183
7e28ad5e1042 (isearch-done): Don't print msg about mark if we don't set it.
Richard M. Stallman <rms@gnu.org>
parents: 10166
diff changeset
603 (message "Mark saved where search started"))))))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
604
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
605 (setq isearch-mode nil)
11579
28e4495a9e8f (isearch-mode, isearch-done): Use force-mode-line-update.
Karl Heuer <kwzh@gnu.org>
parents: 11526
diff changeset
606 (force-mode-line-update)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
607
1184
5f4300ccc93f entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1169
diff changeset
608 (if (and (> (length isearch-string) 0) (not nopush))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
609 ;; Update the ring data.
11100
2ad1ba0ac825 (isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 11061
diff changeset
610 (isearch-update-ring isearch-string isearch-regexp))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
611
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
612 (run-hooks 'isearch-mode-end-hook)
8663
3f7bd8c32c9a (isearch-edit-string): In the isearch-recursive-edit case,
Richard M. Stallman <rms@gnu.org>
parents: 8455
diff changeset
613 (and (not edit) isearch-recursive-edit (exit-recursive-edit)))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
614
11100
2ad1ba0ac825 (isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 11061
diff changeset
615 (defun isearch-update-ring (string &optional regexp)
2ad1ba0ac825 (isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 11061
diff changeset
616 "Add STRING to the beginning of the search ring.
2ad1ba0ac825 (isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 11061
diff changeset
617 REGEXP says which ring to use."
2ad1ba0ac825 (isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 11061
diff changeset
618 (if regexp
2ad1ba0ac825 (isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 11061
diff changeset
619 (if (or (null regexp-search-ring)
11526
885c533e786e (isearch-update-ring): Use STRING arg, not isearch-ring.
Richard M. Stallman <rms@gnu.org>
parents: 11443
diff changeset
620 (not (string= string (car regexp-search-ring))))
11100
2ad1ba0ac825 (isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 11061
diff changeset
621 (progn
2ad1ba0ac825 (isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 11061
diff changeset
622 (setq regexp-search-ring
11526
885c533e786e (isearch-update-ring): Use STRING arg, not isearch-ring.
Richard M. Stallman <rms@gnu.org>
parents: 11443
diff changeset
623 (cons string regexp-search-ring))
11100
2ad1ba0ac825 (isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 11061
diff changeset
624 (if (> (length regexp-search-ring) regexp-search-ring-max)
2ad1ba0ac825 (isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 11061
diff changeset
625 (setcdr (nthcdr (1- search-ring-max) regexp-search-ring)
2ad1ba0ac825 (isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 11061
diff changeset
626 nil))))
2ad1ba0ac825 (isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 11061
diff changeset
627 (if (or (null search-ring)
11526
885c533e786e (isearch-update-ring): Use STRING arg, not isearch-ring.
Richard M. Stallman <rms@gnu.org>
parents: 11443
diff changeset
628 (not (string= string (car search-ring))))
11100
2ad1ba0ac825 (isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 11061
diff changeset
629 (progn
11526
885c533e786e (isearch-update-ring): Use STRING arg, not isearch-ring.
Richard M. Stallman <rms@gnu.org>
parents: 11443
diff changeset
630 (setq search-ring (cons string search-ring))
11100
2ad1ba0ac825 (isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 11061
diff changeset
631 (if (> (length search-ring) search-ring-max)
2ad1ba0ac825 (isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 11061
diff changeset
632 (setcdr (nthcdr (1- search-ring-max) search-ring) nil))))))
2ad1ba0ac825 (isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 11061
diff changeset
633
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
634 ;;; Switching buffers should first terminate isearch-mode.
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3526
diff changeset
635 ;;; This is done quite differently for each variant of emacs.
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
636 ;;; For lemacs, see Exiting in lemacs below
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
637
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
638 ;; For Emacs 19, the frame switch event is handled.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
639 (defun isearch-switch-frame-handler ()
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
640 (interactive) ;; Is this necessary?
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
641 ;; First terminate isearch-mode.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
642 (isearch-done)
2296
91fe00141e95 * isearch.el (isearch-switch-frame-handler): Call
Jim Blandy <jimb@redhat.com>
parents: 2233
diff changeset
643 (handle-switch-frame (car (cdr (isearch-last-command-char)))))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
644
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
645
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
646 ;; Commands active while inside of the isearch minor mode.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
647
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
648 (defun isearch-exit ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
649 "Exit search normally.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
650 However, if this is the first command after starting incremental
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
651 search and `search-nonincremental-instead' is non-nil, do a
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
652 nonincremental search instead via `isearch-edit-string'."
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
653 (interactive)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
654 (if (and search-nonincremental-instead
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
655 (= 0 (length isearch-string)))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
656 (let ((isearch-nonincremental t))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
657 (isearch-edit-string)))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
658 (isearch-done))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
659
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
660
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
661 (defun isearch-edit-string ()
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
662 "Edit the search string in the minibuffer.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
663 The following additional command keys are active while editing.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
664 \\<minibuffer-local-isearch-map>
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
665 \\[exit-minibuffer] to resume incremental searching with the edited string.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
666 \\[isearch-nonincremental-exit-minibuffer] to do one nonincremental search.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
667 \\[isearch-forward-exit-minibuffer] to resume isearching forward.
7378
8d05fd49a9ed (isearch-edit-string): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 7298
diff changeset
668 \\[isearch-reverse-exit-minibuffer] to resume isearching backward.
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
669 \\[isearch-ring-advance-edit] to replace the search string with the next item in the search ring.
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3526
diff changeset
670 \\[isearch-ring-retreat-edit] to replace the search string with the previous item in the search ring.
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
671 \\[isearch-complete-edit] to complete the search string using the search ring.
7378
8d05fd49a9ed (isearch-edit-string): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 7298
diff changeset
672 \\<isearch-mode-map>
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
673 If first char entered is \\[isearch-yank-word], then do word search instead."
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
674
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
675 ;; This code is very hairy for several reasons, explained in the code.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
676 ;; Mainly, isearch-mode must be terminated while editing and then restarted.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
677 ;; If there were a way to catch any change of buffer from the minibuffer,
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
678 ;; this could be simplified greatly.
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3526
diff changeset
679 ;; Editing doesn't back up the search point. Should it?
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
680 (interactive)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
681 (condition-case err
16737
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
682 (progn
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
683 (let ((isearch-nonincremental isearch-nonincremental)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
684
16737
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
685 ;; Locally bind all isearch global variables to protect them
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
686 ;; from recursive isearching.
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
687 ;; isearch-string -message and -forward are not bound
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
688 ;; so they may be changed. Instead, save the values.
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
689 (isearch-new-string isearch-string)
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
690 (isearch-new-message isearch-message)
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
691 (isearch-new-forward isearch-forward)
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
692 (isearch-new-word isearch-word)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
693
16737
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
694 (isearch-regexp isearch-regexp)
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
695 (isearch-op-fun isearch-op-fun)
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
696 (isearch-cmds isearch-cmds)
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
697 (isearch-success isearch-success)
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
698 (isearch-wrapped isearch-wrapped)
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
699 (isearch-barrier isearch-barrier)
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
700 (isearch-adjusted isearch-adjusted)
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
701 (isearch-yank-flag isearch-yank-flag)
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
702 (isearch-invalid-regexp isearch-invalid-regexp)
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
703 (isearch-within-brackets isearch-within-brackets)
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
704 ;;; Don't bind this. We want isearch-search, below, to set it.
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
705 ;;; And the old value won't matter after that.
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
706 ;;; (isearch-other-end isearch-other-end)
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
707 ;;; Perhaps some of these other variables should be bound for a
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
708 ;;; shorter period, ending before the next isearch-search.
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
709 ;;; But there doesn't seem to be a real bug, so let's not risk it now.
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
710 (isearch-opoint isearch-opoint)
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
711 (isearch-slow-terminal-mode isearch-slow-terminal-mode)
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
712 (isearch-small-window isearch-small-window)
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
713 (isearch-recursive-edit isearch-recursive-edit)
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
714 ;; Save current configuration so we can restore it here.
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
715 (isearch-window-configuration (current-window-configuration))
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
716 )
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
717
16737
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
718 ;; Actually terminate isearching until editing is done.
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
719 ;; This is so that the user can do anything without failure,
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
720 ;; like switch buffers and start another isearch, and return.
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
721 (condition-case err
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
722 (isearch-done t t)
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
723 (exit nil)) ; was recursive editing
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
724
16737
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
725 (isearch-message) ;; for read-char
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
726 (unwind-protect
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
727 (let* (;; Why does following read-char echo?
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
728 ;;(echo-keystrokes 0) ;; not needed with above message
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
729 (e (let ((cursor-in-echo-area t))
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
730 (read-event)))
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
731 ;; Binding minibuffer-history-symbol to nil is a work-around
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
732 ;; for some incompatibility with gmhist.
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
733 (minibuffer-history-symbol)
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
734 (message-log-max nil))
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
735 ;; If the first character the user types when we prompt them
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
736 ;; for a string is the yank-word character, then go into
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
737 ;; word-search mode. Otherwise unread that character and
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
738 ;; read a key the normal way.
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
739 ;; Word search does not apply (yet) to regexp searches,
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
740 ;; no check is made here.
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
741 (message (isearch-message-prefix nil nil t))
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
742 (if (eq 'isearch-yank-word
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
743 (lookup-key isearch-mode-map (vector e)))
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
744 (setq isearch-word t;; so message-prefix is right
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
745 isearch-new-word t)
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
746 (cancel-kbd-macro-events)
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
747 (isearch-unread e))
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
748 (setq cursor-in-echo-area nil)
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
749 (setq isearch-new-string
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
750 (let (junk-ring)
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
751 (read-from-minibuffer
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
752 (isearch-message-prefix nil nil isearch-nonincremental)
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
753 isearch-string
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
754 minibuffer-local-isearch-map nil
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
755 'junk-ring))
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
756 isearch-new-message
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
757 (mapconcat 'isearch-text-char-description
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
758 isearch-new-string "")))
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
759 ;; Always resume isearching by restarting it.
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
760 (isearch-mode isearch-forward
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
761 isearch-regexp
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
762 isearch-op-fun
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
763 nil
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
764 isearch-word)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
765
16737
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
766 ;; Copy new local values to isearch globals
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
767 (setq isearch-string isearch-new-string
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
768 isearch-message isearch-new-message
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
769 isearch-forward isearch-new-forward
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
770 isearch-word isearch-new-word))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
771
16737
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
772 ;; Empty isearch-string means use default.
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
773 (if (= 0 (length isearch-string))
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
774 (setq isearch-string (or (car (if isearch-regexp
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
775 regexp-search-ring
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
776 search-ring))
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
777 ""))
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
778 ;; This used to set the last search string,
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
779 ;; but I think it is not right to do that here.
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
780 ;; Only the string actually used should be saved.
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
781 ))
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
782
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
783 ;; Push the state as of before this C-s.
f93f805e86da (isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents: 16711
diff changeset
784 (isearch-push-state)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
785
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
786 ;; Reinvoke the pending search.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
787 (isearch-search)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
788 (isearch-update)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
789 (if isearch-nonincremental
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
790 (progn
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
791 ;; (sit-for 1) ;; needed if isearch-done does: (message "")
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
792 (isearch-done))))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
793
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
794 (quit ; handle abort-recursive-edit
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
795 (isearch-abort) ;; outside of let to restore outside global values
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
796 )))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
797
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
798 (defun isearch-nonincremental-exit-minibuffer ()
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
799 (interactive)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
800 (setq isearch-nonincremental t)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
801 (exit-minibuffer))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
802
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
803 (defun isearch-forward-exit-minibuffer ()
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
804 (interactive)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
805 (setq isearch-new-forward t)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
806 (exit-minibuffer))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
807
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
808 (defun isearch-reverse-exit-minibuffer ()
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
809 (interactive)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
810 (setq isearch-new-forward nil)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
811 (exit-minibuffer))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
812
10117
413a1fd0f7c4 (isearch-cancel): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9940
diff changeset
813 (defun isearch-cancel ()
413a1fd0f7c4 (isearch-cancel): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9940
diff changeset
814 "Terminate the search and go back to the starting point."
413a1fd0f7c4 (isearch-cancel): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9940
diff changeset
815 (interactive)
413a1fd0f7c4 (isearch-cancel): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9940
diff changeset
816 (goto-char isearch-opoint)
413a1fd0f7c4 (isearch-cancel): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9940
diff changeset
817 (isearch-done t)
413a1fd0f7c4 (isearch-cancel): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9940
diff changeset
818 (signal 'quit nil)) ; and pass on quit signal
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
819
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
820 (defun isearch-abort ()
13991
0297cd54b530 (isearch-abort, isearch-no-upper-case-p): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 13799
diff changeset
821 "Abort incremental search mode if searching is successful, signaling quit.
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
822 Otherwise, revert to previous successful search and continue searching.
13991
0297cd54b530 (isearch-abort, isearch-no-upper-case-p): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 13799
diff changeset
823 Use `isearch-exit' to quit without signaling."
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
824 (interactive)
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3526
diff changeset
825 ;; (ding) signal instead below, if quitting
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
826 (discard-input)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
827 (if isearch-success
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
828 ;; If search is successful, move back to starting point
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
829 ;; and really do quit.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
830 (progn (goto-char isearch-opoint)
11046
a9045ed63e20 (isearch-abort): Set isearch-success to nil.
Richard M. Stallman <rms@gnu.org>
parents: 10397
diff changeset
831 (setq isearch-success nil)
1184
5f4300ccc93f entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1169
diff changeset
832 (isearch-done t) ; exit isearch
1146
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
833 (signal 'quit nil)) ; and pass on quit signal
11061
2f41090c58b3 (isearch-abort): Treat "incomplete regexp"
Richard M. Stallman <rms@gnu.org>
parents: 11046
diff changeset
834 ;; If search is failing, or has an incomplete regexp,
2f41090c58b3 (isearch-abort): Treat "incomplete regexp"
Richard M. Stallman <rms@gnu.org>
parents: 11046
diff changeset
835 ;; rub out until it is once more successful.
2f41090c58b3 (isearch-abort): Treat "incomplete regexp"
Richard M. Stallman <rms@gnu.org>
parents: 11046
diff changeset
836 (while (or (not isearch-success) isearch-invalid-regexp)
2f41090c58b3 (isearch-abort): Treat "incomplete regexp"
Richard M. Stallman <rms@gnu.org>
parents: 11046
diff changeset
837 (isearch-pop-state))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
838 (isearch-update)))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
839
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
840 (defun isearch-repeat (direction)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
841 ;; Utility for isearch-repeat-forward and -backward.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
842 (if (eq isearch-forward (eq direction 'forward))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
843 ;; C-s in forward or C-r in reverse.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
844 (if (equal isearch-string "")
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
845 ;; If search string is empty, use last one.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
846 (setq isearch-string
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
847 (or (if isearch-regexp
1146
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
848 (car regexp-search-ring)
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
849 (car search-ring))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
850 "")
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
851 isearch-message
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
852 (mapconcat 'isearch-text-char-description
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
853 isearch-string ""))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
854 ;; If already have what to search for, repeat it.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
855 (or isearch-success
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
856 (progn
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
857 (goto-char (if isearch-forward (point-min) (point-max)))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
858 (setq isearch-wrapped t))))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
859 ;; C-s in reverse or C-r in forward, change direction.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
860 (setq isearch-forward (not isearch-forward)))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
861
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
862 (setq isearch-barrier (point)) ; For subsequent \| if regexp.
5411
c002b55b9cac (isearch-repeat): If we matched a null string and there's
Richard M. Stallman <rms@gnu.org>
parents: 5344
diff changeset
863
c002b55b9cac (isearch-repeat): If we matched a null string and there's
Richard M. Stallman <rms@gnu.org>
parents: 5344
diff changeset
864 (if (equal isearch-string "")
c002b55b9cac (isearch-repeat): If we matched a null string and there's
Richard M. Stallman <rms@gnu.org>
parents: 5344
diff changeset
865 (setq isearch-success t)
13799
49b7cd70c43c (isearch-done): Use executing-kbd-macro.
Karl Heuer <kwzh@gnu.org>
parents: 13682
diff changeset
866 (if (and isearch-success (equal (match-end 0) (match-beginning 0))
49b7cd70c43c (isearch-done): Use executing-kbd-macro.
Karl Heuer <kwzh@gnu.org>
parents: 13682
diff changeset
867 (not isearch-just-started))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
868 ;; If repeating a search that found
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
869 ;; an empty string, ensure we advance.
5411
c002b55b9cac (isearch-repeat): If we matched a null string and there's
Richard M. Stallman <rms@gnu.org>
parents: 5344
diff changeset
870 (if (if isearch-forward (eobp) (bobp))
c002b55b9cac (isearch-repeat): If we matched a null string and there's
Richard M. Stallman <rms@gnu.org>
parents: 5344
diff changeset
871 ;; If there's nowhere to advance to, fail (and wrap next time).
c002b55b9cac (isearch-repeat): If we matched a null string and there's
Richard M. Stallman <rms@gnu.org>
parents: 5344
diff changeset
872 (progn
c002b55b9cac (isearch-repeat): If we matched a null string and there's
Richard M. Stallman <rms@gnu.org>
parents: 5344
diff changeset
873 (setq isearch-success nil)
c002b55b9cac (isearch-repeat): If we matched a null string and there's
Richard M. Stallman <rms@gnu.org>
parents: 5344
diff changeset
874 (ding))
c002b55b9cac (isearch-repeat): If we matched a null string and there's
Richard M. Stallman <rms@gnu.org>
parents: 5344
diff changeset
875 (forward-char (if isearch-forward 1 -1))
c002b55b9cac (isearch-repeat): If we matched a null string and there's
Richard M. Stallman <rms@gnu.org>
parents: 5344
diff changeset
876 (isearch-search))
c002b55b9cac (isearch-repeat): If we matched a null string and there's
Richard M. Stallman <rms@gnu.org>
parents: 5344
diff changeset
877 (isearch-search)))
c002b55b9cac (isearch-repeat): If we matched a null string and there's
Richard M. Stallman <rms@gnu.org>
parents: 5344
diff changeset
878
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
879 (isearch-push-state)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
880 (isearch-update))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
881
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
882 (defun isearch-repeat-forward ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
883 "Repeat incremental search forwards."
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
884 (interactive)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
885 (isearch-repeat 'forward))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
886
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
887 (defun isearch-repeat-backward ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
888 "Repeat incremental search backwards."
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
889 (interactive)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
890 (isearch-repeat 'backward))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
891
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
892 (defun isearch-toggle-regexp ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
893 "Toggle regexp searching on or off."
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
894 ;; The status stack is left unchanged.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
895 (interactive)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
896 (setq isearch-regexp (not isearch-regexp))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
897 (if isearch-regexp (setq isearch-word nil))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
898 (isearch-update))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
899
7294
4ff0c1e7c8e2 (isearch-case-fold-search): new possible value `yes'
Richard M. Stallman <rms@gnu.org>
parents: 6736
diff changeset
900 (defun isearch-toggle-case-fold ()
4ff0c1e7c8e2 (isearch-case-fold-search): new possible value `yes'
Richard M. Stallman <rms@gnu.org>
parents: 6736
diff changeset
901 "Toggle case folding in searching on or off."
4ff0c1e7c8e2 (isearch-case-fold-search): new possible value `yes'
Richard M. Stallman <rms@gnu.org>
parents: 6736
diff changeset
902 (interactive)
4ff0c1e7c8e2 (isearch-case-fold-search): new possible value `yes'
Richard M. Stallman <rms@gnu.org>
parents: 6736
diff changeset
903 (setq isearch-case-fold-search
4ff0c1e7c8e2 (isearch-case-fold-search): new possible value `yes'
Richard M. Stallman <rms@gnu.org>
parents: 6736
diff changeset
904 (if isearch-case-fold-search nil 'yes))
10397
8fe0c72ba336 (isearch-edit-string): Disable message logging.
Karl Heuer <kwzh@gnu.org>
parents: 10257
diff changeset
905 (let ((message-log-max nil))
8fe0c72ba336 (isearch-edit-string): Disable message logging.
Karl Heuer <kwzh@gnu.org>
parents: 10257
diff changeset
906 (message "%s%s [case %ssensitive]"
8fe0c72ba336 (isearch-edit-string): Disable message logging.
Karl Heuer <kwzh@gnu.org>
parents: 10257
diff changeset
907 (isearch-message-prefix nil nil isearch-nonincremental)
8fe0c72ba336 (isearch-edit-string): Disable message logging.
Karl Heuer <kwzh@gnu.org>
parents: 10257
diff changeset
908 isearch-message
8fe0c72ba336 (isearch-edit-string): Disable message logging.
Karl Heuer <kwzh@gnu.org>
parents: 10257
diff changeset
909 (if isearch-case-fold-search "in" "")))
7294
4ff0c1e7c8e2 (isearch-case-fold-search): new possible value `yes'
Richard M. Stallman <rms@gnu.org>
parents: 6736
diff changeset
910 (setq isearch-adjusted t)
4ff0c1e7c8e2 (isearch-case-fold-search): new possible value `yes'
Richard M. Stallman <rms@gnu.org>
parents: 6736
diff changeset
911 (sit-for 1)
4ff0c1e7c8e2 (isearch-case-fold-search): new possible value `yes'
Richard M. Stallman <rms@gnu.org>
parents: 6736
diff changeset
912 (isearch-update))
4ff0c1e7c8e2 (isearch-case-fold-search): new possible value `yes'
Richard M. Stallman <rms@gnu.org>
parents: 6736
diff changeset
913
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
914 (defun isearch-delete-char ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
915 "Discard last input item and move point back.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
916 If no previous match was done, just beep."
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
917 (interactive)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
918 (if (null (cdr isearch-cmds))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
919 (ding)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
920 (isearch-pop-state))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
921 (isearch-update))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
922
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
923
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
924 (defun isearch-yank (chunk)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
925 ;; Helper for isearch-yank-word and isearch-yank-line
17139
37acf21ce6f6 (isearch-yank): Handle case when CHUNK is `x-sel'.
Karl Heuer <kwzh@gnu.org>
parents: 17006
diff changeset
926 ;; CHUNK should be word, line, kill, or x-sel.
4876
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
927 (let ((string (cond
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
928 ((eq chunk 'kill)
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
929 (current-kill 0))
17139
37acf21ce6f6 (isearch-yank): Handle case when CHUNK is `x-sel'.
Karl Heuer <kwzh@gnu.org>
parents: 17006
diff changeset
930 ((eq chunk 'x-sel)
37acf21ce6f6 (isearch-yank): Handle case when CHUNK is `x-sel'.
Karl Heuer <kwzh@gnu.org>
parents: 17006
diff changeset
931 (x-get-selection))
4876
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
932 (t
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
933 (save-excursion
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
934 (and (not isearch-forward) isearch-other-end
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
935 (goto-char isearch-other-end))
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
936 (buffer-substring
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
937 (point)
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
938 (save-excursion
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
939 (cond
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
940 ((eq chunk 'word)
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
941 (forward-word 1))
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
942 ((eq chunk 'line)
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
943 (end-of-line)))
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
944 (point))))))))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
945 ;; Downcase the string if not supposed to case-fold yanked strings.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
946 (if (and isearch-case-fold-search
1143
0b4552590bb8 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1142
diff changeset
947 (eq 'not-yanks search-upper-case))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
948 (setq string (downcase string)))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
949 (if isearch-regexp (setq string (regexp-quote string)))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
950 (setq isearch-string (concat isearch-string string)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
951 isearch-message
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
952 (concat isearch-message
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
953 (mapconcat 'isearch-text-char-description
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
954 string ""))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
955 ;; Don't move cursor in reverse search.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
956 isearch-yank-flag t))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
957 (isearch-search-and-update))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
958
4876
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
959 (defun isearch-yank-kill ()
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
960 "Pull string from kill ring into search string."
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
961 (interactive)
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
962 (isearch-yank 'kill))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
963
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
964 (defun isearch-yank-word ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
965 "Pull next word from buffer into search string."
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
966 (interactive)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
967 (isearch-yank 'word))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
968
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
969 (defun isearch-yank-line ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
970 "Pull rest of line from buffer into search string."
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
971 (interactive)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
972 (isearch-yank 'line))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
973
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
974
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
975 (defun isearch-search-and-update ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
976 ;; Do the search and update the display.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
977 (if (and (not isearch-success)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
978 ;; unsuccessful regexp search may become
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
979 ;; successful by addition of characters which
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
980 ;; make isearch-string valid
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
981 (not isearch-regexp))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
982 nil
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
983 ;; In reverse search, adding stuff at
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
984 ;; the end may cause zero or many more chars to be
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
985 ;; matched, in the string following point.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
986 ;; Allow all those possibilities without moving point as
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
987 ;; long as the match does not extend past search origin.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
988 (if (and (not isearch-forward) (not isearch-adjusted)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
989 (condition-case ()
13799
49b7cd70c43c (isearch-done): Use executing-kbd-macro.
Karl Heuer <kwzh@gnu.org>
parents: 13682
diff changeset
990 (let ((case-fold-search isearch-case-fold-search))
49b7cd70c43c (isearch-done): Use executing-kbd-macro.
Karl Heuer <kwzh@gnu.org>
parents: 13682
diff changeset
991 (looking-at (if isearch-regexp isearch-string
49b7cd70c43c (isearch-done): Use executing-kbd-macro.
Karl Heuer <kwzh@gnu.org>
parents: 13682
diff changeset
992 (regexp-quote isearch-string))))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
993 (error nil))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
994 (or isearch-yank-flag
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
995 (<= (match-end 0)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
996 (min isearch-opoint isearch-barrier))))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
997 (setq isearch-success t
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
998 isearch-invalid-regexp nil
5601
8353962cfd74 SPC is not special in regexp within brackets.
Richard M. Stallman <rms@gnu.org>
parents: 5554
diff changeset
999 isearch-within-brackets nil
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1000 isearch-other-end (match-end 0))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1001 ;; Not regexp, not reverse, or no match at point.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1002 (if (and isearch-other-end (not isearch-adjusted))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1003 (goto-char (if isearch-forward isearch-other-end
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1004 (min isearch-opoint
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1005 isearch-barrier
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1006 (1+ isearch-other-end)))))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1007 (isearch-search)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1008 ))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1009 (isearch-push-state)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1010 (if isearch-op-fun (funcall isearch-op-fun))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1011 (isearch-update))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1012
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1013
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1014 ;; *, ?, and | chars can make a regexp more liberal.
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1015 ;; They can make a regexp match sooner or make it succeed instead of failing.
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1016 ;; So go back to place last successful search started
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1017 ;; or to the last ^S/^R (barrier), whichever is nearer.
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1018 ;; + needs no special handling because the string must match at least once.
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1019
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1020 (defun isearch-*-char ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1021 "Handle * and ? specially in regexps."
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1022 (interactive)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1023 (if isearch-regexp
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1024
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1025 (progn
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1026 (setq isearch-adjusted t)
16045
a4c14fa6cb9d (isearch-*-char): Use the isearch-other-end as new
Richard M. Stallman <rms@gnu.org>
parents: 15906
diff changeset
1027 ;; Get the isearch-other-end from before the last search.
a4c14fa6cb9d (isearch-*-char): Use the isearch-other-end as new
Richard M. Stallman <rms@gnu.org>
parents: 15906
diff changeset
1028 ;; We want to start from there,
a4c14fa6cb9d (isearch-*-char): Use the isearch-other-end as new
Richard M. Stallman <rms@gnu.org>
parents: 15906
diff changeset
1029 ;; so that we don't retreat farther than that.
a4c14fa6cb9d (isearch-*-char): Use the isearch-other-end as new
Richard M. Stallman <rms@gnu.org>
parents: 15906
diff changeset
1030 ;; (car isearch-cmds) is after last search;
a4c14fa6cb9d (isearch-*-char): Use the isearch-other-end as new
Richard M. Stallman <rms@gnu.org>
parents: 15906
diff changeset
1031 ;; (car (cdr isearch-cmds)) is from before it.
a4c14fa6cb9d (isearch-*-char): Use the isearch-other-end as new
Richard M. Stallman <rms@gnu.org>
parents: 15906
diff changeset
1032 (let ((cs (nth 5 (car (cdr isearch-cmds)))))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1033 (setq cs (or cs isearch-barrier))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1034 (goto-char
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1035 (if isearch-forward
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1036 (max cs isearch-barrier)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1037 (min cs isearch-barrier))))))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1038 (isearch-process-search-char (isearch-last-command-char)))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1039
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1040
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1041 (defun isearch-|-char ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1042 "If in regexp search, jump to the barrier."
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1043 (interactive)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1044 (if isearch-regexp
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1045 (progn
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1046 (setq isearch-adjusted t)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1047 (goto-char isearch-barrier)))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1048 (isearch-process-search-char (isearch-last-command-char)))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1049
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1050
2572
8784bb8514b0 Replaced all fsets with defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2533
diff changeset
1051 (defalias 'isearch-other-control-char 'isearch-other-meta-char)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1052
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1053 (defun isearch-other-meta-char ()
2031
f2dbfd43a1c5 (isearch-unread): Handle multiple args.
Richard M. Stallman <rms@gnu.org>
parents: 1885
diff changeset
1054 "Exit the search normally and reread this key sequence.
1184
5f4300ccc93f entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1169
diff changeset
1055 But only if `search-exit-option' is non-nil, the default.
5f4300ccc93f entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1169
diff changeset
1056 If it is the symbol `edit', the search string is edited in the minibuffer
5f4300ccc93f entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1169
diff changeset
1057 and the meta character is unread so that it applies to editing the string."
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1058 (interactive)
12106
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1059 (let* ((key (this-command-keys))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1060 (main-event (aref key 0))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1061 (keylist (listify-key-sequence key)))
12716
cadb9c7a1501 (isearch-mode-map): Don't bind tab, return, kp-N, etc.
Richard M. Stallman <rms@gnu.org>
parents: 12284
diff changeset
1062 (cond ((and (= (length key) 1)
12824
9302372b1ec1 (isearch-other-meta-char): Avoid bug checking whether
Richard M. Stallman <rms@gnu.org>
parents: 12716
diff changeset
1063 (let ((lookup (lookup-key function-key-map key)))
14288
dbb66b58d8f4 * isearch.el (isearch-other-meta-char): Avoid error if lookup in
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1064 (not (or (null lookup) (integerp lookup)
dbb66b58d8f4 * isearch.el (isearch-other-meta-char): Avoid error if lookup in
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1065 (keymapp lookup)))))
12716
cadb9c7a1501 (isearch-mode-map): Don't bind tab, return, kp-N, etc.
Richard M. Stallman <rms@gnu.org>
parents: 12284
diff changeset
1066 ;; Handle a function key that translates into something else.
cadb9c7a1501 (isearch-mode-map): Don't bind tab, return, kp-N, etc.
Richard M. Stallman <rms@gnu.org>
parents: 12284
diff changeset
1067 ;; If the key has a global definition too,
cadb9c7a1501 (isearch-mode-map): Don't bind tab, return, kp-N, etc.
Richard M. Stallman <rms@gnu.org>
parents: 12284
diff changeset
1068 ;; exit and unread the key itself, so its global definition runs.
cadb9c7a1501 (isearch-mode-map): Don't bind tab, return, kp-N, etc.
Richard M. Stallman <rms@gnu.org>
parents: 12284
diff changeset
1069 ;; Otherwise, unread the translation,
cadb9c7a1501 (isearch-mode-map): Don't bind tab, return, kp-N, etc.
Richard M. Stallman <rms@gnu.org>
parents: 12284
diff changeset
1070 ;; so that the translated key takes effect within isearch.
12824
9302372b1ec1 (isearch-other-meta-char): Avoid bug checking whether
Richard M. Stallman <rms@gnu.org>
parents: 12716
diff changeset
1071 (cancel-kbd-macro-events)
12716
cadb9c7a1501 (isearch-mode-map): Don't bind tab, return, kp-N, etc.
Richard M. Stallman <rms@gnu.org>
parents: 12284
diff changeset
1072 (if (lookup-key global-map key)
cadb9c7a1501 (isearch-mode-map): Don't bind tab, return, kp-N, etc.
Richard M. Stallman <rms@gnu.org>
parents: 12284
diff changeset
1073 (progn
cadb9c7a1501 (isearch-mode-map): Don't bind tab, return, kp-N, etc.
Richard M. Stallman <rms@gnu.org>
parents: 12284
diff changeset
1074 (isearch-done)
cadb9c7a1501 (isearch-mode-map): Don't bind tab, return, kp-N, etc.
Richard M. Stallman <rms@gnu.org>
parents: 12284
diff changeset
1075 (apply 'isearch-unread keylist))
cadb9c7a1501 (isearch-mode-map): Don't bind tab, return, kp-N, etc.
Richard M. Stallman <rms@gnu.org>
parents: 12284
diff changeset
1076 (apply 'isearch-unread
cadb9c7a1501 (isearch-mode-map): Don't bind tab, return, kp-N, etc.
Richard M. Stallman <rms@gnu.org>
parents: 12284
diff changeset
1077 (listify-key-sequence (lookup-key function-key-map key)))))
cadb9c7a1501 (isearch-mode-map): Don't bind tab, return, kp-N, etc.
Richard M. Stallman <rms@gnu.org>
parents: 12284
diff changeset
1078 (
12106
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1079 ;; Handle an undefined shifted control character
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1080 ;; by downshifting it if that makes it defined.
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1081 ;; (As read-key-sequence would normally do,
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1082 ;; if we didn't have a default definition.)
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1083 (let ((mods (event-modifiers main-event)))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1084 (and (integerp main-event)
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1085 (memq 'shift mods)
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1086 (memq 'control mods)
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1087 (lookup-key isearch-mode-map
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1088 (let ((copy (copy-sequence key)))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1089 (aset copy 0
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1090 (- main-event (- ?\C-\S-a ?\C-a)))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1091 copy)
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1092 nil)))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1093 (setcar keylist (- main-event (- ?\C-\S-a ?\C-a)))
12824
9302372b1ec1 (isearch-other-meta-char): Avoid bug checking whether
Richard M. Stallman <rms@gnu.org>
parents: 12716
diff changeset
1094 (cancel-kbd-macro-events)
12106
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1095 (apply 'isearch-unread keylist))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1096 ((eq search-exit-option 'edit)
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1097 (apply 'isearch-unread keylist)
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1098 (isearch-edit-string))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1099 (search-exit-option
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1100 (let (window)
12824
9302372b1ec1 (isearch-other-meta-char): Avoid bug checking whether
Richard M. Stallman <rms@gnu.org>
parents: 12716
diff changeset
1101 (cancel-kbd-macro-events)
12106
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1102 (apply 'isearch-unread keylist)
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1103 ;; Properly handle scroll-bar and mode-line clicks
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1104 ;; for which a dummy prefix event was generated as (aref key 0).
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1105 (and (> (length key) 1)
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1106 (symbolp (aref key 0))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1107 (listp (aref key 1))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1108 (not (numberp (posn-point (event-start (aref key 1)))))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1109 ;; Convert the event back into its raw form,
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1110 ;; with the dummy prefix implicit in the mouse event,
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1111 ;; so it will get split up once again.
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1112 (progn (setq unread-command-events
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1113 (cdr unread-command-events))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1114 (setq main-event (car unread-command-events))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1115 (setcar (cdr (event-start main-event))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1116 (car (nth 1 (event-start main-event))))))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1117 ;; If we got a mouse click, maybe it was read with the buffer
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1118 ;; it was clicked on. If so, that buffer, not the current one,
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1119 ;; is in isearch mode. So end the search in that buffer.
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1120 (if (and (listp main-event)
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1121 (setq window (posn-window (event-start main-event)))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1122 (windowp window))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1123 (save-excursion
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1124 (set-buffer (window-buffer window))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1125 (isearch-done))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1126 (isearch-done))))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1127 (t;; otherwise nil
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1128 (isearch-process-search-string key key)))))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1129
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1130 (defun isearch-quote-char ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1131 "Quote special characters for incremental search."
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1132 (interactive)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1133 (isearch-process-search-char (read-quoted-char (isearch-message t))))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1134
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1135 (defun isearch-return-char ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1136 "Convert return into newline for incremental search.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1137 Obsolete."
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1138 (interactive)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1139 (isearch-process-search-char ?\n))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1140
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1141 (defun isearch-printing-char ()
2533
2e1c2b44df3a Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 2426
diff changeset
1142 "Add this ordinary printing character to the search string and search."
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1143 (interactive)
17006
8d4650e49e36 (isearch-mode-map): Define
Karl Heuer <kwzh@gnu.org>
parents: 16990
diff changeset
1144 (if isearch-multibyte-characters-flag
8d4650e49e36 (isearch-mode-map): Define
Karl Heuer <kwzh@gnu.org>
parents: 16990
diff changeset
1145 (isearch-process-search-multibyte-characters (isearch-last-command-char))
8d4650e49e36 (isearch-mode-map): Define
Karl Heuer <kwzh@gnu.org>
parents: 16990
diff changeset
1146 (isearch-process-search-char (isearch-last-command-char))))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1147
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1148 (defun isearch-whitespace-chars ()
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1149 "Match all whitespace chars, if in regexp mode.
2533
2e1c2b44df3a Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 2426
diff changeset
1150 If you want to search for just a space, type C-q SPC."
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1151 (interactive)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1152 (if isearch-regexp
15858
946a4fb104ef (isearch-whitespace-chars): If isearch-invalid-regexp, insert just a space.
Richard M. Stallman <rms@gnu.org>
parents: 14939
diff changeset
1153 (if (and search-whitespace-regexp (not isearch-within-brackets)
946a4fb104ef (isearch-whitespace-chars): If isearch-invalid-regexp, insert just a space.
Richard M. Stallman <rms@gnu.org>
parents: 14939
diff changeset
1154 (not isearch-invalid-regexp))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1155 (isearch-process-search-string search-whitespace-regexp " ")
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1156 (isearch-printing-char))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1157 (progn
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3526
diff changeset
1158 ;; This way of doing word search doesn't correctly extend current search.
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1159 ;; (setq isearch-word t)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1160 ;; (setq isearch-adjusted t)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1161 ;; (goto-char isearch-barrier)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1162 (isearch-printing-char))))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1163
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1164 (defun isearch-process-search-char (char)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1165 ;; Append the char to the search string, update the message and re-search.
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1166 (isearch-process-search-string
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1167 (isearch-char-to-string char)
17794
2fc1e3833259 (isearch-process-search-char): Use multibyte
Richard M. Stallman <rms@gnu.org>
parents: 17781
diff changeset
1168 (if (>= char 0200)
2fc1e3833259 (isearch-process-search-char): Use multibyte
Richard M. Stallman <rms@gnu.org>
parents: 17781
diff changeset
1169 (char-to-string char)
2fc1e3833259 (isearch-process-search-char): Use multibyte
Richard M. Stallman <rms@gnu.org>
parents: 17781
diff changeset
1170 (isearch-text-char-description char))))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1171
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1172 (defun isearch-process-search-string (string message)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1173 (setq isearch-string (concat isearch-string string)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1174 isearch-message (concat isearch-message message))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1175 (isearch-search-and-update))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1176
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1177
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1178 ;; Search Ring
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1179
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1180 (defun isearch-ring-adjust1 (advance)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1181 ;; Helper for isearch-ring-adjust
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1182 (let* ((ring (if isearch-regexp regexp-search-ring search-ring))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1183 (length (length ring))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1184 (yank-pointer-name (if isearch-regexp
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1185 'regexp-search-ring-yank-pointer
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1186 'search-ring-yank-pointer))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1187 (yank-pointer (eval yank-pointer-name)))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1188 (if (zerop length)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1189 ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1190 (set yank-pointer-name
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1191 (setq yank-pointer
4512
ed1f6abba5c5 (isearch-ring-adjust1, isearch-ring-advance-edit): Replace `%' by `mod' and simplify.
Paul Eggert <eggert@twinsun.com>
parents: 4379
diff changeset
1192 (mod (+ (or yank-pointer 0)
ed1f6abba5c5 (isearch-ring-adjust1, isearch-ring-advance-edit): Replace `%' by `mod' and simplify.
Paul Eggert <eggert@twinsun.com>
parents: 4379
diff changeset
1193 (if advance -1 1))
ed1f6abba5c5 (isearch-ring-adjust1, isearch-ring-advance-edit): Replace `%' by `mod' and simplify.
Paul Eggert <eggert@twinsun.com>
parents: 4379
diff changeset
1194 length)))
1146
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1195 (setq isearch-string (nth yank-pointer ring)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1196 isearch-message (mapconcat 'isearch-text-char-description
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1197 isearch-string "")))))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1198
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1199 (defun isearch-ring-adjust (advance)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1200 ;; Helper for isearch-ring-advance and isearch-ring-retreat
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1201 (isearch-ring-adjust1 advance)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1202 (if search-ring-update
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1203 (progn
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1204 (isearch-search)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1205 (isearch-update))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1206 (isearch-edit-string)
16711
890b229ea0c7 (isearch-ring-adjust): Don't pop the state at the start.
Richard M. Stallman <rms@gnu.org>
parents: 16687
diff changeset
1207 )
890b229ea0c7 (isearch-ring-adjust): Don't pop the state at the start.
Richard M. Stallman <rms@gnu.org>
parents: 16687
diff changeset
1208 (isearch-push-state))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1209
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1210 (defun isearch-ring-advance ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1211 "Advance to the next search string in the ring."
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1212 ;; This could be more general to handle a prefix arg, but who would use it.
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1213 (interactive)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1214 (isearch-ring-adjust 'advance))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1215
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1216 (defun isearch-ring-retreat ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1217 "Retreat to the previous search string in the ring."
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1218 (interactive)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1219 (isearch-ring-adjust nil))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1220
1146
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1221 (defun isearch-ring-advance-edit (n)
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1222 "Insert the next element of the search history into the minibuffer."
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1223 (interactive "p")
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1224 (let* ((yank-pointer-name (if isearch-regexp
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1225 'regexp-search-ring-yank-pointer
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1226 'search-ring-yank-pointer))
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1227 (yank-pointer (eval yank-pointer-name))
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1228 (ring (if isearch-regexp regexp-search-ring search-ring))
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1229 (length (length ring)))
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1230 (if (zerop length)
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1231 ()
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1232 (set yank-pointer-name
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1233 (setq yank-pointer
4512
ed1f6abba5c5 (isearch-ring-adjust1, isearch-ring-advance-edit): Replace `%' by `mod' and simplify.
Paul Eggert <eggert@twinsun.com>
parents: 4379
diff changeset
1234 (mod (- (or yank-pointer 0) n)
ed1f6abba5c5 (isearch-ring-adjust1, isearch-ring-advance-edit): Replace `%' by `mod' and simplify.
Paul Eggert <eggert@twinsun.com>
parents: 4379
diff changeset
1235 length)))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1236
1146
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1237 (erase-buffer)
1184
5f4300ccc93f entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1169
diff changeset
1238 (insert (nth yank-pointer ring))
1380
a7003e65eb66 (isearch-ring-advance-edit): Delete spurious `)'.
Richard M. Stallman <rms@gnu.org>
parents: 1184
diff changeset
1239 (goto-char (point-max)))))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1240
1146
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1241 (defun isearch-ring-retreat-edit (n)
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1242 "Inserts the previous element of the search history into the minibuffer."
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1243 (interactive "p")
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1244 (isearch-ring-advance-edit (- n)))
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1245
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1246 ;;(defun isearch-ring-adjust-edit (advance)
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1247 ;; "Use the next or previous search string in the ring while in minibuffer."
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1248 ;; (isearch-ring-adjust1 advance)
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1249 ;; (erase-buffer)
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1250 ;; (insert isearch-string))
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1251
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1252 ;;(defun isearch-ring-advance-edit ()
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1253 ;; (interactive)
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1254 ;; (isearch-ring-adjust-edit 'advance))
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1255
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1256 ;;(defun isearch-ring-retreat-edit ()
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1257 ;; "Retreat to the previous search string in the ring while in the minibuffer."
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1258 ;; (interactive)
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1259 ;; (isearch-ring-adjust-edit nil))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1260
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1261
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1262 (defun isearch-complete1 ()
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1263 ;; Helper for isearch-complete and isearch-complete-edit
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1264 ;; Return t if completion OK, nil if no completion exists.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1265 (let* ((ring (if isearch-regexp regexp-search-ring search-ring))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1266 (alist (mapcar (function (lambda (string) (list string))) ring))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1267 (completion-ignore-case case-fold-search)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1268 (completion (try-completion isearch-string alist)))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1269 (cond
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1270 ((eq completion t)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1271 ;; isearch-string stays the same
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1272 t)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1273 ((or completion ; not nil, must be a string
13991
0297cd54b530 (isearch-abort, isearch-no-upper-case-p): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 13799
diff changeset
1274 (= 0 (length isearch-string))) ; shouldn't have to say this
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1275 (if (equal completion isearch-string) ;; no extension?
16566
45e694f5babe (isearch-complete1): If no completion,
Richard M. Stallman <rms@gnu.org>
parents: 16495
diff changeset
1276 (progn
45e694f5babe (isearch-complete1): If no completion,
Richard M. Stallman <rms@gnu.org>
parents: 16495
diff changeset
1277 (if completion-auto-help
45e694f5babe (isearch-complete1): If no completion,
Richard M. Stallman <rms@gnu.org>
parents: 16495
diff changeset
1278 (with-output-to-temp-buffer "*Isearch completions*"
45e694f5babe (isearch-complete1): If no completion,
Richard M. Stallman <rms@gnu.org>
parents: 16495
diff changeset
1279 (display-completion-list
45e694f5babe (isearch-complete1): If no completion,
Richard M. Stallman <rms@gnu.org>
parents: 16495
diff changeset
1280 (all-completions isearch-string alist))))
45e694f5babe (isearch-complete1): If no completion,
Richard M. Stallman <rms@gnu.org>
parents: 16495
diff changeset
1281 t)
45e694f5babe (isearch-complete1): If no completion,
Richard M. Stallman <rms@gnu.org>
parents: 16495
diff changeset
1282 (and completion
45e694f5babe (isearch-complete1): If no completion,
Richard M. Stallman <rms@gnu.org>
parents: 16495
diff changeset
1283 (setq isearch-string completion))))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1284 (t
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1285 (message "No completion") ; waits a second if in minibuffer
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1286 nil))))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1287
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1288 (defun isearch-complete ()
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1289 "Complete the search string from the strings on the search ring.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1290 The completed string is then editable in the minibuffer.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1291 If there is no completion possible, say so and continue searching."
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1292 (interactive)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1293 (if (isearch-complete1)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1294 (isearch-edit-string)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1295 ;; else
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1296 (sit-for 1)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1297 (isearch-update)))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1298
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1299 (defun isearch-complete-edit ()
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1300 "Same as `isearch-complete' except in the minibuffer."
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1301 (interactive)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1302 (setq isearch-string (buffer-string))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1303 (if (isearch-complete1)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1304 (progn
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1305 (erase-buffer)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1306 (insert isearch-string))))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1307
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1308
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1309 ;; The search status stack (and isearch window-local variables, not used).
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1310 ;; Need a structure for this.
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1311
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1312 (defun isearch-top-state ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1313 (let ((cmd (car isearch-cmds)))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1314 (setq isearch-string (car cmd)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1315 isearch-message (car (cdr cmd))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1316 isearch-success (nth 3 cmd)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1317 isearch-forward (nth 4 cmd)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1318 isearch-other-end (nth 5 cmd)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1319 isearch-word (nth 6 cmd)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1320 isearch-invalid-regexp (nth 7 cmd)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1321 isearch-wrapped (nth 8 cmd)
5601
8353962cfd74 SPC is not special in regexp within brackets.
Richard M. Stallman <rms@gnu.org>
parents: 5554
diff changeset
1322 isearch-barrier (nth 9 cmd)
5637
b0d6fc7f5e65 (isearch-push-state): Save isearch-case-fold-search.
Richard M. Stallman <rms@gnu.org>
parents: 5615
diff changeset
1323 isearch-within-brackets (nth 10 cmd)
b0d6fc7f5e65 (isearch-push-state): Save isearch-case-fold-search.
Richard M. Stallman <rms@gnu.org>
parents: 5615
diff changeset
1324 isearch-case-fold-search (nth 11 cmd))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1325 (goto-char (car (cdr (cdr cmd))))))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1326
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1327 (defun isearch-pop-state ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1328 (setq isearch-cmds (cdr isearch-cmds))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1329 (isearch-top-state)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1330 )
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1331
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1332 (defun isearch-push-state ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1333 (setq isearch-cmds
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1334 (cons (list isearch-string isearch-message (point)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1335 isearch-success isearch-forward isearch-other-end
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1336 isearch-word
5601
8353962cfd74 SPC is not special in regexp within brackets.
Richard M. Stallman <rms@gnu.org>
parents: 5554
diff changeset
1337 isearch-invalid-regexp isearch-wrapped isearch-barrier
5637
b0d6fc7f5e65 (isearch-push-state): Save isearch-case-fold-search.
Richard M. Stallman <rms@gnu.org>
parents: 5615
diff changeset
1338 isearch-within-brackets isearch-case-fold-search)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1339 isearch-cmds)))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1340
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1341
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1342 ;; Message string
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1343
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1344 (defun isearch-message (&optional c-q-hack ellipsis)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1345 ;; Generate and print the message string.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1346 (let ((cursor-in-echo-area ellipsis)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1347 (m (concat
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1348 (isearch-message-prefix c-q-hack ellipsis isearch-nonincremental)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1349 isearch-message
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1350 (isearch-message-suffix c-q-hack ellipsis)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1351 )))
10397
8fe0c72ba336 (isearch-edit-string): Disable message logging.
Karl Heuer <kwzh@gnu.org>
parents: 10257
diff changeset
1352 (if c-q-hack
8fe0c72ba336 (isearch-edit-string): Disable message logging.
Karl Heuer <kwzh@gnu.org>
parents: 10257
diff changeset
1353 m
8fe0c72ba336 (isearch-edit-string): Disable message logging.
Karl Heuer <kwzh@gnu.org>
parents: 10257
diff changeset
1354 (let ((message-log-max nil))
8fe0c72ba336 (isearch-edit-string): Disable message logging.
Karl Heuer <kwzh@gnu.org>
parents: 10257
diff changeset
1355 (message "%s" m)))))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1356
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1357 (defun isearch-message-prefix (&optional c-q-hack ellipsis nonincremental)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1358 ;; If about to search, and previous search regexp was invalid,
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1359 ;; check that it still is. If it is valid now,
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1360 ;; let the message we display while searching say that it is valid.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1361 (and isearch-invalid-regexp ellipsis
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1362 (condition-case ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1363 (progn (re-search-forward isearch-string (point) t)
7378
8d05fd49a9ed (isearch-edit-string): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 7298
diff changeset
1364 (setq isearch-invalid-regexp nil
8d05fd49a9ed (isearch-edit-string): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 7298
diff changeset
1365 isearch-within-brackets nil))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1366 (error nil)))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1367 ;; If currently failing, display no ellipsis.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1368 (or isearch-success (setq ellipsis nil))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1369 (let ((m (concat (if isearch-success "" "failing ")
13254
7ed0775e99af (isearch-message-prefix):
Richard M. Stallman <rms@gnu.org>
parents: 13112
diff changeset
1370 (if (and isearch-wrapped
7ed0775e99af (isearch-message-prefix):
Richard M. Stallman <rms@gnu.org>
parents: 13112
diff changeset
1371 (if isearch-forward
7ed0775e99af (isearch-message-prefix):
Richard M. Stallman <rms@gnu.org>
parents: 13112
diff changeset
1372 (> (point) isearch-opoint)
7ed0775e99af (isearch-message-prefix):
Richard M. Stallman <rms@gnu.org>
parents: 13112
diff changeset
1373 (< (point) isearch-opoint)))
7ed0775e99af (isearch-message-prefix):
Richard M. Stallman <rms@gnu.org>
parents: 13112
diff changeset
1374 "over")
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1375 (if isearch-wrapped "wrapped ")
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1376 (if isearch-word "word " "")
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1377 (if isearch-regexp "regexp " "")
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1378 (if nonincremental "search" "I-search")
17006
8d4650e49e36 (isearch-mode-map): Define
Karl Heuer <kwzh@gnu.org>
parents: 16990
diff changeset
1379 (if isearch-forward "" " backward")
8d4650e49e36 (isearch-mode-map): Define
Karl Heuer <kwzh@gnu.org>
parents: 16990
diff changeset
1380 (if isearch-multibyte-characters-flag
8d4650e49e36 (isearch-mode-map): Define
Karl Heuer <kwzh@gnu.org>
parents: 16990
diff changeset
1381 (concat " [" default-input-method-title "]: ")
8d4650e49e36 (isearch-mode-map): Define
Karl Heuer <kwzh@gnu.org>
parents: 16990
diff changeset
1382 ": ")
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1383 )))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1384 (aset m 0 (upcase (aref m 0)))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1385 m))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1386
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1387
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1388 (defun isearch-message-suffix (&optional c-q-hack ellipsis)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1389 (concat (if c-q-hack "^Q" "")
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1390 (if isearch-invalid-regexp
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1391 (concat " [" isearch-invalid-regexp "]")
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1392 "")))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1393
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1394
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1395 ;;; Searching
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1396
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1397 (defun isearch-search ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1398 ;; Do the search with the current search string.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1399 (isearch-message nil t)
7294
4ff0c1e7c8e2 (isearch-case-fold-search): new possible value `yes'
Richard M. Stallman <rms@gnu.org>
parents: 6736
diff changeset
1400 (if (and (eq isearch-case-fold-search t) search-upper-case)
3526
ac5c322cea84 (search-upper-case): Make `no-yanks' the default.
Richard M. Stallman <rms@gnu.org>
parents: 3476
diff changeset
1401 (setq isearch-case-fold-search
ac5c322cea84 (search-upper-case): Make `no-yanks' the default.
Richard M. Stallman <rms@gnu.org>
parents: 3476
diff changeset
1402 (isearch-no-upper-case-p isearch-string isearch-regexp)))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1403 (condition-case lossage
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1404 (let ((inhibit-quit nil)
16990
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1405 (case-fold-search isearch-case-fold-search)
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1406 (retry t))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1407 (if isearch-regexp (setq isearch-invalid-regexp nil))
5601
8353962cfd74 SPC is not special in regexp within brackets.
Richard M. Stallman <rms@gnu.org>
parents: 5554
diff changeset
1408 (setq isearch-within-brackets nil)
16990
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1409 (while retry
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1410 (setq isearch-success
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1411 (funcall
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1412 (cond (isearch-word
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1413 (if isearch-forward
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1414 'word-search-forward 'word-search-backward))
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1415 (isearch-regexp
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1416 (if isearch-forward
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1417 're-search-forward 're-search-backward))
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1418 (t
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1419 (if isearch-forward 'search-forward 'search-backward)))
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1420 isearch-string nil t))
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1421 ;; Clear RETRY unless we matched some invisible text
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1422 ;; and we aren't supposed to do that.
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1423 (if (or search-invisible
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1424 (not isearch-success)
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1425 (bobp) (eobp)
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1426 (= (match-beginning 0) (match-end 0))
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1427 (not (isearch-range-invisible
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1428 (match-beginning 0) (match-end 0))))
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1429 (setq retry nil)))
13799
49b7cd70c43c (isearch-done): Use executing-kbd-macro.
Karl Heuer <kwzh@gnu.org>
parents: 13682
diff changeset
1430 (setq isearch-just-started nil)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1431 (if isearch-success
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1432 (setq isearch-other-end
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1433 (if isearch-forward (match-beginning 0) (match-end 0)))))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1434
5196
87d3df5d0e4e Undo last change.
Roland McGrath <roland@gnu.org>
parents: 5195
diff changeset
1435 (quit (isearch-unread ?\C-g)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1436 (setq isearch-success nil))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1437
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1438 (invalid-regexp
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1439 (setq isearch-invalid-regexp (car (cdr lossage)))
5601
8353962cfd74 SPC is not special in regexp within brackets.
Richard M. Stallman <rms@gnu.org>
parents: 5554
diff changeset
1440 (setq isearch-within-brackets (string-match "\\`Unmatched \\["
8353962cfd74 SPC is not special in regexp within brackets.
Richard M. Stallman <rms@gnu.org>
parents: 5554
diff changeset
1441 isearch-invalid-regexp))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1442 (if (string-match
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1443 "\\`Premature \\|\\`Unmatched \\|\\`Invalid "
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1444 isearch-invalid-regexp)
1534
dd292c7ef749 (isearch-search): Handle all sorts of errors from regexp search.
Richard M. Stallman <rms@gnu.org>
parents: 1480
diff changeset
1445 (setq isearch-invalid-regexp "incomplete input")))
dd292c7ef749 (isearch-search): Handle all sorts of errors from regexp search.
Richard M. Stallman <rms@gnu.org>
parents: 1480
diff changeset
1446 (error
dd292c7ef749 (isearch-search): Handle all sorts of errors from regexp search.
Richard M. Stallman <rms@gnu.org>
parents: 1480
diff changeset
1447 ;; stack overflow in regexp search.
dd292c7ef749 (isearch-search): Handle all sorts of errors from regexp search.
Richard M. Stallman <rms@gnu.org>
parents: 1480
diff changeset
1448 (setq isearch-invalid-regexp (car (cdr lossage)))))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1449
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1450 (if isearch-success
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1451 nil
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1452 ;; Ding if failed this time after succeeding last time.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1453 (and (nth 3 (car isearch-cmds))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1454 (ding))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1455 (goto-char (nth 2 (car isearch-cmds)))))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1456
16990
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1457 (defun isearch-range-invisible (beg end)
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1458 "Return t if all the bext from BEG to END is invisible."
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1459 (and (/= beg end)
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1460 ;; Check that invisibility runs up to END.
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1461 (save-excursion
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1462 (goto-char beg)
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1463 ;; If the following character is currently invisible,
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1464 ;; skip all characters with that same `invisible' property value.
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1465 ;; Do that over and over.
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1466 (while (and (< (point) end)
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1467 (let ((prop
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1468 (get-char-property (point) 'invisible)))
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1469 (if (eq buffer-invisibility-spec t)
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1470 prop
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1471 (or (memq prop buffer-invisibility-spec)
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1472 (assq prop buffer-invisibility-spec)))))
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1473 (if (get-text-property (point) 'invisible)
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1474 (goto-char (next-single-property-change (point) 'invisible
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1475 nil end))
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1476 (goto-char (next-overlay-change (point)))))
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1477 ;; See if invisibility reaches up thru END.
a2fc2ef460e3 (isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents: 16737
diff changeset
1478 (>= (point) end))))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1479
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1480
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1481 ;;; Highlighting
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1482
3526
ac5c322cea84 (search-upper-case): Make `no-yanks' the default.
Richard M. Stallman <rms@gnu.org>
parents: 3476
diff changeset
1483 (defvar isearch-overlay nil)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1484
3526
ac5c322cea84 (search-upper-case): Make `no-yanks' the default.
Richard M. Stallman <rms@gnu.org>
parents: 3476
diff changeset
1485 (defun isearch-highlight (beg end)
5649
016c15cf28a7 (isearch-highlight): Do nothing if not window-system.
Richard M. Stallman <rms@gnu.org>
parents: 5637
diff changeset
1486 (if (or (null search-highlight) (null window-system))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1487 nil
3526
ac5c322cea84 (search-upper-case): Make `no-yanks' the default.
Richard M. Stallman <rms@gnu.org>
parents: 3476
diff changeset
1488 (or isearch-overlay (setq isearch-overlay (make-overlay beg end)))
ac5c322cea84 (search-upper-case): Make `no-yanks' the default.
Richard M. Stallman <rms@gnu.org>
parents: 3476
diff changeset
1489 (move-overlay isearch-overlay beg end (current-buffer))
3717
620f551ac276 (isearch-highlight): If no face `isearch', use `region'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1490 (overlay-put isearch-overlay 'face
620f551ac276 (isearch-highlight): If no face `isearch', use `region'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1491 (if (internal-find-face 'isearch nil)
620f551ac276 (isearch-highlight): If no face `isearch', use `region'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1492 'isearch 'region))))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1493
3526
ac5c322cea84 (search-upper-case): Make `no-yanks' the default.
Richard M. Stallman <rms@gnu.org>
parents: 3476
diff changeset
1494 (defun isearch-dehighlight (totally)
ac5c322cea84 (search-upper-case): Make `no-yanks' the default.
Richard M. Stallman <rms@gnu.org>
parents: 3476
diff changeset
1495 (if isearch-overlay
ac5c322cea84 (search-upper-case): Make `no-yanks' the default.
Richard M. Stallman <rms@gnu.org>
parents: 3476
diff changeset
1496 (delete-overlay isearch-overlay)))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1497
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1498 ;;; General utilities
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1499
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1500
3526
ac5c322cea84 (search-upper-case): Make `no-yanks' the default.
Richard M. Stallman <rms@gnu.org>
parents: 3476
diff changeset
1501 (defun isearch-no-upper-case-p (string regexp-flag)
ac5c322cea84 (search-upper-case): Make `no-yanks' the default.
Richard M. Stallman <rms@gnu.org>
parents: 3476
diff changeset
1502 "Return t if there are no upper case chars in STRING.
13991
0297cd54b530 (isearch-abort, isearch-no-upper-case-p): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 13799
diff changeset
1503 If REGEXP-FLAG is non-nil, disregard letters preceded by `\\' (but not `\\\\')
3526
ac5c322cea84 (search-upper-case): Make `no-yanks' the default.
Richard M. Stallman <rms@gnu.org>
parents: 3476
diff changeset
1504 since they have special meaning in a regexp."
16635
1b774e82752f (isearch-no-upper-case-p): Use downcase
Richard M. Stallman <rms@gnu.org>
parents: 16620
diff changeset
1505 (let (quote-flag (i 0) (len (length string)) found)
1b774e82752f (isearch-no-upper-case-p): Use downcase
Richard M. Stallman <rms@gnu.org>
parents: 16620
diff changeset
1506 (while (and (not found) (< i len))
1b774e82752f (isearch-no-upper-case-p): Use downcase
Richard M. Stallman <rms@gnu.org>
parents: 16620
diff changeset
1507 (let ((char (aref string i)))
1b774e82752f (isearch-no-upper-case-p): Use downcase
Richard M. Stallman <rms@gnu.org>
parents: 16620
diff changeset
1508 (if (and regexp-flag (eq char ?\\))
1b774e82752f (isearch-no-upper-case-p): Use downcase
Richard M. Stallman <rms@gnu.org>
parents: 16620
diff changeset
1509 (setq quote-flag (not quote-flag))
1b774e82752f (isearch-no-upper-case-p): Use downcase
Richard M. Stallman <rms@gnu.org>
parents: 16620
diff changeset
1510 (if (and (not quote-flag) (not (eq char (downcase char))))
1b774e82752f (isearch-no-upper-case-p): Use downcase
Richard M. Stallman <rms@gnu.org>
parents: 16620
diff changeset
1511 (setq found t))))
1b774e82752f (isearch-no-upper-case-p): Use downcase
Richard M. Stallman <rms@gnu.org>
parents: 16620
diff changeset
1512 (setq i (1+ i)))
1b774e82752f (isearch-no-upper-case-p): Use downcase
Richard M. Stallman <rms@gnu.org>
parents: 16620
diff changeset
1513 (not found)))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1514
3526
ac5c322cea84 (search-upper-case): Make `no-yanks' the default.
Richard M. Stallman <rms@gnu.org>
parents: 3476
diff changeset
1515 ;; Portability functions to support various Emacs versions.
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1516
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1517 (defun isearch-char-to-string (c)
9940
4a06fd6dcbff (isearch-other-meta-char): Delete debugging code.
Richard M. Stallman <rms@gnu.org>
parents: 9935
diff changeset
1518 (make-string 1 c))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1519
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1520 (defun isearch-text-char-description (c)
5277
9e91acab81e9 (isearch-text-char-description): Treat TAB as ctl char.
Richard M. Stallman <rms@gnu.org>
parents: 5196
diff changeset
1521 (if (and (integerp c) (or (< c ?\ ) (= c ?\^?)))
9e91acab81e9 (isearch-text-char-description): Treat TAB as ctl char.
Richard M. Stallman <rms@gnu.org>
parents: 5196
diff changeset
1522 (text-char-description c)
9e91acab81e9 (isearch-text-char-description): Treat TAB as ctl char.
Richard M. Stallman <rms@gnu.org>
parents: 5196
diff changeset
1523 (isearch-char-to-string c)))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1524
9934
4c3ab9b8d1a9 (isearch-unread): Always use unread-command-events.
Richard M. Stallman <rms@gnu.org>
parents: 9768
diff changeset
1525 ;; General function to unread characters or events.
13799
49b7cd70c43c (isearch-done): Use executing-kbd-macro.
Karl Heuer <kwzh@gnu.org>
parents: 13682
diff changeset
1526 ;; Also insert them in a keyboard macro being defined.
2031
f2dbfd43a1c5 (isearch-unread): Handle multiple args.
Richard M. Stallman <rms@gnu.org>
parents: 1885
diff changeset
1527 (defun isearch-unread (&rest char-or-events)
13799
49b7cd70c43c (isearch-done): Use executing-kbd-macro.
Karl Heuer <kwzh@gnu.org>
parents: 13682
diff changeset
1528 (mapcar 'store-kbd-macro-event char-or-events)
9934
4c3ab9b8d1a9 (isearch-unread): Always use unread-command-events.
Richard M. Stallman <rms@gnu.org>
parents: 9768
diff changeset
1529 (setq unread-command-events
4c3ab9b8d1a9 (isearch-unread): Always use unread-command-events.
Richard M. Stallman <rms@gnu.org>
parents: 9768
diff changeset
1530 (append char-or-events unread-command-events)))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1531
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1532 (defun isearch-last-command-char ()
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1533 ;; General function to return the last command character.
9935
a36d24b4b365 (isearch-gnu-emacs-events): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 9934
diff changeset
1534 last-command-char)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1535
2230
6314334d7c2b Add standard library headers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2055
diff changeset
1536 ;;; isearch.el ends here