annotate lisp/isearch.el @ 15097:32c26cb9e078

(Fexpand_file_name, Ffile_name_absolute_p): Doc fixes. (Ffile_exists_p, Ffile_executable_p, Ffile_readable_p) (Ffile_writable_p, Ffile_directory_p, Ffile_regular_p) (Ffile_modes, Fset_file_modes, Ffile_newer_than_file_p) (expand_and_dir_to_file): Rename abspath to absname. (CORRECT_DIR_SEPS) [DOS_NT]: New macro. (IS_DRIVE) [DOS_NT]: Added separate definitions for DOS and NT. (Ffile_name_directory) [DOS_NT]: Simplify code to match change in getdefdir in msdos.c. Ignore embedded colons. Correct dir seps. (Ffile_name_nondirectory) [DOS_NT]: Ignore embedded colons. Correct IS_ANY_SEP to IS_DIRECTORY_SEP. (file_name_as_directory) [DOS_NT]: Correct dir seps. Correct IS_ANY_SEP to IS_DIRECTORY_SEP. (directory_file_name) [DOS_NT]: Correct dir seps. (Fmake_temp_name) [DOS_NT: Correct dir seps. (Fexpand_file_name) [mostly DOS_NT]: Remove relpath, tmp and defdir variables; init drive to 0. Correctly detect when default_directory is absolute. Be strict when looking for MSDOS drive specifier; defer calling getdefdir. Ignore drive specifier if name now has UNC prefix. Correctly recognise if name is not absolute when trying simple method to expand; return original string if possible. Skip dir sep after ~ or ~user. Use getpwnam instead of HOME for ~user on NT. Handle error return from getdefdir. Correctly detect if newdir is absolute before using default_directory. Handle case where newdir is not absolute - expand relative to current working dir if necessary (instead of calling getdisk later). Only keep UNC prefix if nm starts with dir sep. Replace kludgy handling of drive spec in newdir. Correct dir seps. (Fexpand_file_name) [!DOS_NT]: Fix incorrect expansion of "/foo/../bar" -> "//bar". (Fsubstitute_in_file_name) [DOS_NT]: Correct dir seps for NT as well. Merge equivalent #ifdef APOLLO and WINDOWSNT cases. Ignore embedded colons and be strict about drive specs. (Fcopy_file) [DOS_NT]: Do dev/inode check on NT. (Ffile_name_absolute_p) [DOS_NT]: Be strict about drive specs. (check_executable) [DOS_NT]: Test st_mode on NT. (Ffile_readable_p) [DOS_NT]: Use access instead of open on NT. (Ffile_modes) [DOS_NT]: Don't embelish st_mode value on NT. (Fread_file_name) [DOS_NT]: Correct dir seps in HOME. (syms_of_fileio): Add Vdirectory_sep_char.
author Richard M. Stallman <rms@gnu.org>
date Sat, 27 Apr 1996 01:14:17 +0000
parents c0e8ab5d23fc
children 946a4fb104ef
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
11235
e6bdaaa6ce1b Update copyright.
Karl Heuer <kwzh@gnu.org>
parents: 11100
diff changeset
3 ;; Copyright (C) 1992, 1993, 1994, 1995 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
1143
0b4552590bb8 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1142
diff changeset
108 (defconst search-exit-option t
1169
a40b54fcb2ff *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1162
diff changeset
109 "*Non-nil means random control characters terminate incremental search.")
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
110
1143
0b4552590bb8 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1142
diff changeset
111 (defvar search-slow-window-lines 1
0b4552590bb8 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1142
diff changeset
112 "*Number of lines in slow search display windows.
0b4552590bb8 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1142
diff changeset
113 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
114 Negative means put the slow search window at the top (normally it's at bottom)
0b4552590bb8 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1142
diff changeset
115 and the value is minus the number of lines.")
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
116
1143
0b4552590bb8 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1142
diff changeset
117 (defvar search-slow-speed 1200
0b4552590bb8 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1142
diff changeset
118 "*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
119 This is the style where a one-line window is created to show the line
0b4552590bb8 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1142
diff changeset
120 that the search has reached.")
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
121
3526
ac5c322cea84 (search-upper-case): Make `no-yanks' the default.
Richard M. Stallman <rms@gnu.org>
parents: 3476
diff changeset
122 (defvar search-upper-case 'not-yanks
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
123 "*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
124 That is, upper and lower case chars must match exactly.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
125 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
126 apply to chars in regexps that are prefixed with `\\'.
0b4552590bb8 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1142
diff changeset
127 If this value is `not-yanks', yanked text is always downcased.")
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
128
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
129 (defvar search-nonincremental-instead t
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
130 "*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
131 Actually, `isearch-edit-string' is called to let you enter the search
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
132 string, and RET terminates editing and does a nonincremental search.")
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
133
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
134 (defconst search-whitespace-regexp "\\s-+"
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
135 "*If non-nil, regular expression to match a sequence of whitespace chars.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
136 You might want to use something like \"[ \\t\\r\\n]+\" instead.")
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
137
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
138 (defvar search-highlight nil
3526
ac5c322cea84 (search-upper-case): Make `no-yanks' the default.
Richard M. Stallman <rms@gnu.org>
parents: 3476
diff changeset
139 "*Non-nil means incremental search highlights the current match.")
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
140
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
141 (defvar isearch-mode-hook nil
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
142 "Function(s) to call after starting up an incremental search.")
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
143
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
144 (defvar isearch-mode-end-hook nil
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
145 "Function(s) to call after terminating an incremental search.")
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
146
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
147 ;;; Search ring.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
148
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
149 (defvar search-ring nil
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
150 "List of search string sequences.")
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
151 (defvar regexp-search-ring nil
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
152 "List of regular expression search string sequences.")
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
153
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
154 (defconst search-ring-max 16
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
155 "*Maximum length of search ring before oldest elements are thrown away.")
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
156 (defconst regexp-search-ring-max 16
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
157 "*Maximum length of regexp search ring before oldest elements are thrown away.")
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
158
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
159 (defvar search-ring-yank-pointer nil
1146
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
160 "Index in `search-ring' of last string reused.
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
161 nil if none yet.")
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
162 (defvar regexp-search-ring-yank-pointer nil
1146
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
163 "Index in `regexp-search-ring' of last string reused.
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
164 nil if none yet.")
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
165
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
166 (defvar search-ring-update nil
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
167 "*Non-nil if advancing or retreating in the search ring should cause search.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
168 Default value, nil, means edit the string instead.")
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
169
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
170 ;;; Define isearch-mode keymap.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
171
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
172 (defvar isearch-mode-map nil
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
173 "Keymap for isearch-mode.")
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
174
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
175 (or isearch-mode-map
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
176 (let* ((i 0)
1143
0b4552590bb8 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1142
diff changeset
177 (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
178 (or (vectorp (nth 1 map))
00029a6ad94c (isearch-mode-map): Extend the dense keymap to 256 chars.
Richard M. Stallman <rms@gnu.org>
parents: 2849
diff changeset
179 (error "The initialization of isearch-mode-map must be updated"))
00029a6ad94c (isearch-mode-map): Extend the dense keymap to 256 chars.
Richard M. Stallman <rms@gnu.org>
parents: 2849
diff changeset
180 ;; Give this map a vector 256 long, for dense binding
00029a6ad94c (isearch-mode-map): Extend the dense keymap to 256 chars.
Richard M. Stallman <rms@gnu.org>
parents: 2849
diff changeset
181 ;; of a larger range of ordinary characters.
00029a6ad94c (isearch-mode-map): Extend the dense keymap to 256 chars.
Richard M. Stallman <rms@gnu.org>
parents: 2849
diff changeset
182 (setcar (cdr map) (make-vector 256 nil))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
183
1458
ef32d654351e (isearch-mode-map): Make the top-level keymap dense.
Richard M. Stallman <rms@gnu.org>
parents: 1380
diff changeset
184 ;; 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
185 (define-key map [t] 'isearch-other-control-char)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
186 ;; 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
187 ;; 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
188 ;; 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
189 ;; We use a dense keymap to save space.
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
190 (while (< i ?\ )
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
191 (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
192 (setq i (1+ i)))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
193
2889
debc28aaae2c (isearch-mode-map): Use vector, not string, to bind printing characters.
Richard M. Stallman <rms@gnu.org>
parents: 2857
diff changeset
194 ;; 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
195 (setq i ?\ )
2788
30919bba8508 (isearch-mode-map): Handle any length vector in keymap.
Richard M. Stallman <rms@gnu.org>
parents: 2572
diff changeset
196 (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
197 (define-key map (vector i) 'isearch-printing-char)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
198 (setq i (1+ i)))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
199
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
200 ;; 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
201 ;; 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
202 ;; 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
203 ;; 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
204 ;; 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
205 (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
206 (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
207 (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
208 (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
209
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
210 ;; Several non-printing chars change the searching behavior.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
211 (define-key map "\C-s" 'isearch-repeat-forward)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
212 (define-key map "\C-r" 'isearch-repeat-backward)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
213 (define-key map "\177" 'isearch-delete-char)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
214 (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
215 ;; 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
216 (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
217 (error "Inconsistency in isearch.el"))
10117
413a1fd0f7c4 (isearch-cancel): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9940
diff changeset
218 (define-key map "\e\e\e" 'isearch-cancel)
413a1fd0f7c4 (isearch-cancel): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9940
diff changeset
219 (define-key map [escape escape escape] 'isearch-cancel)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
220
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
221 (define-key map "\C-q" 'isearch-quote-char)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
222
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
223 (define-key map "\r" 'isearch-exit)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
224 (define-key map "\C-j" 'isearch-printing-char)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
225 (define-key map "\t" 'isearch-printing-char)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
226 (define-key map " " 'isearch-whitespace-chars)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
227
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
228 (define-key map "\C-w" 'isearch-yank-word)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
229 (define-key map "\C-y" 'isearch-yank-line)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
230
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
231 ;; Define keys for regexp chars * ? |.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
232 ;; Nothing special for + because it matches at least once.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
233 (define-key map "*" 'isearch-*-char)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
234 (define-key map "?" 'isearch-*-char)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
235 (define-key map "|" 'isearch-|-char)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
236
2425
fd15462e52a1 (isearch-mode-map): Delete the binding for C-h.
Richard M. Stallman <rms@gnu.org>
parents: 2296
diff changeset
237 ;;; 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
238 ;;; ;; 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
239 ;;; (define-key map "\C-h" 'isearch-mode-help)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
240
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
241 (define-key map "\M-n" 'isearch-ring-advance)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
242 (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
243 (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
244
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
245 (define-key map "\M-\t" 'isearch-complete)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
246
12284
07a76f045154 (isearch-mode-map): Bind frame events to nil.
Karl Heuer <kwzh@gnu.org>
parents: 12265
diff changeset
247 ;; 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
248 ;; 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
249 ;; 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
250 (define-key map [switch-frame] nil)
07a76f045154 (isearch-mode-map): Bind frame events to nil.
Karl Heuer <kwzh@gnu.org>
parents: 12265
diff changeset
251 (define-key map [delete-frame] nil)
07a76f045154 (isearch-mode-map): Bind frame events to nil.
Karl Heuer <kwzh@gnu.org>
parents: 12265
diff changeset
252 (define-key map [iconify-frame] nil)
07a76f045154 (isearch-mode-map): Bind frame events to nil.
Karl Heuer <kwzh@gnu.org>
parents: 12265
diff changeset
253 (define-key map [make-frame-visible] nil)
07a76f045154 (isearch-mode-map): Bind frame events to nil.
Karl Heuer <kwzh@gnu.org>
parents: 12265
diff changeset
254
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
255 (setq isearch-mode-map map)
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
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
258 ;; 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
259 ;; Suggest some alternates...
7294
4ff0c1e7c8e2 (isearch-case-fold-search): new possible value `yes'
Richard M. Stallman <rms@gnu.org>
parents: 6736
diff changeset
260 ;; (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
261 ;; (define-key isearch-mode-map "\C-t" 'isearch-toggle-regexp)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
262 ;; (define-key isearch-mode-map "\C-^" 'isearch-edit-string)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
263
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
264
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
265 (defvar minibuffer-local-isearch-map nil
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
266 "Keymap for editing isearch strings in the minibuffer.")
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
267
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
268 (or minibuffer-local-isearch-map
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
269 (let ((map (copy-keymap minibuffer-local-map)))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
270 (define-key map "\r" 'isearch-nonincremental-exit-minibuffer)
1184
5f4300ccc93f entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1169
diff changeset
271 (define-key map "\M-n" 'isearch-ring-advance-edit)
5f4300ccc93f entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1169
diff changeset
272 (define-key map "\M-p" 'isearch-ring-retreat-edit)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
273 (define-key map "\M-\t" 'isearch-complete-edit)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
274 (define-key map "\C-s" 'isearch-forward-exit-minibuffer)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
275 (define-key map "\C-r" 'isearch-reverse-exit-minibuffer)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
276 (setq minibuffer-local-isearch-map map)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
277 ))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
278
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
279 ;; Internal variables declared globally for byte-compiler.
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
280 ;; These are all set with setq while isearching
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
281 ;; and bound locally while editing the search string.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
282
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
283 (defvar isearch-forward nil) ; Searching in the forward direction.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
284 (defvar isearch-regexp nil) ; Searching for a regexp.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
285 (defvar isearch-word nil) ; Searching for words.
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
286
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
287 (defvar isearch-cmds nil) ; Stack of search status sets.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
288 (defvar isearch-string "") ; The current search string.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
289 (defvar isearch-message "") ; text-char-description version of isearch-string
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
290
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
291 (defvar isearch-success t) ; Searching is currently successful.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
292 (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
293 (defvar isearch-within-brackets nil) ; Regexp has unclosed [.
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
294 (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
295 (defvar isearch-wrapped nil) ; Searching restarted from the top (bottom).
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
296 (defvar isearch-barrier 0)
13799
49b7cd70c43c (isearch-done): Use executing-kbd-macro.
Karl Heuer <kwzh@gnu.org>
parents: 13682
diff changeset
297 (defvar isearch-just-started nil)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
298
7294
4ff0c1e7c8e2 (isearch-case-fold-search): new possible value `yes'
Richard M. Stallman <rms@gnu.org>
parents: 6736
diff changeset
299 ; case-fold-search while searching.
4ff0c1e7c8e2 (isearch-case-fold-search): new possible value `yes'
Richard M. Stallman <rms@gnu.org>
parents: 6736
diff changeset
300 ; 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
301 ; 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
302 (defvar isearch-case-fold-search nil)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
303
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
304 (defvar isearch-adjusted nil)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
305 (defvar isearch-slow-terminal-mode nil)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
306 ;;; If t, using a small window.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
307 (defvar isearch-small-window nil)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
308 (defvar isearch-opoint 0)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
309 ;;; The window configuration active at the beginning of the search.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
310 (defvar isearch-window-configuration nil)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
311
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
312 ;; 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
313 (defvar isearch-yank-flag nil)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
314
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
315 ;;; 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
316 ;;; (It is not called after characters that exit the search.)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
317 ;;; 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
318 (defvar isearch-op-fun nil)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
319
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
320 ;;; Is isearch-mode in a recursive edit for modal searching.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
321 (defvar isearch-recursive-edit nil)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
322
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
323 ;;; Should isearch be terminated after doing one search?
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
324 (defvar isearch-nonincremental nil)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
325
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
326 ;; New value of isearch-forward after isearch-edit-string.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
327 (defvar isearch-new-forward nil)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
328
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
329
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
330 ;; Minor-mode-alist changes - kind of redundant with the
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
331 ;; echo area, but if isearching in multiple windows, it can be useful.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
332
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
333 (or (assq 'isearch-mode minor-mode-alist)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
334 (nconc minor-mode-alist
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
335 (list '(isearch-mode isearch-mode))))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
336
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
337 (defvar isearch-mode nil) ;; Name of the minor mode, if non-nil.
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
338 (make-variable-buffer-local 'isearch-mode)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
339
1143
0b4552590bb8 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1142
diff changeset
340 (define-key global-map "\C-s" 'isearch-forward)
0b4552590bb8 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1142
diff changeset
341 (define-key esc-map "\C-s" 'isearch-forward-regexp)
0b4552590bb8 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1142
diff changeset
342 (define-key global-map "\C-r" 'isearch-backward)
0b4552590bb8 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1142
diff changeset
343 (define-key esc-map "\C-r" 'isearch-backward-regexp)
0b4552590bb8 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1142
diff changeset
344
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
345 ;;; Entry points to isearch-mode.
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
346 ;;; 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
347 ;;; 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
348 ;;; and look at this-command to set the options accordingly.
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
349
1883
b707809f29bb (isearch-backward-regexp):
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
350 (defun isearch-forward (&optional regexp-p no-recursive-edit)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
351 "\
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
352 Do incremental search forward.
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
353 With a prefix argument, do an incremental regular expression search instead.
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
354 \\<isearch-mode-map>
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
355 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
356 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
357
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
358 Type \\[isearch-delete-char] to cancel characters from end of search string.
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
359 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
360 Type LFD (C-j) to match end of line.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
361 Type \\[isearch-repeat-forward] to search again forward,\
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
362 \\[isearch-repeat-backward] to search again backward.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
363 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
364 string and search for it.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
365 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
366 and search for it.
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
367 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
368 \\[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
369 back to what has
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
370 been found successfully.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
371 \\[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
372 starting point.
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
373
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
374 Also supported is a search ring of the previous 16 search strings.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
375 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
376 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
377 ring.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
378 Type \\[isearch-complete] to complete the search string using the search ring.
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
379
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
380 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
381 options; do M-x apropos on search-.* to find them.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
382 Other control and meta characters terminate the search
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
383 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
384 Likewise for function keys and mouse button events.
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
385
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
386 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
387 the calling function until the search is done."
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
388
1883
b707809f29bb (isearch-backward-regexp):
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
389 (interactive "P\np")
1885
9e79ffe97d5b Fix minor bugs in previous change.
Richard M. Stallman <rms@gnu.org>
parents: 1883
diff changeset
390 (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
391
1883
b707809f29bb (isearch-backward-regexp):
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
392 (defun isearch-forward-regexp (&optional not-regexp 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 for regular expression.
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
395 With a prefix argument, do a regular string search instead.
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
396 Like ordinary incremental search except that your input
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
397 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
398 (interactive "P\np")
1885
9e79ffe97d5b Fix minor bugs in previous change.
Richard M. Stallman <rms@gnu.org>
parents: 1883
diff changeset
399 (isearch-mode t (null not-regexp) nil (not no-recursive-edit)))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
400
1883
b707809f29bb (isearch-backward-regexp):
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
401 (defun isearch-backward (&optional regexp-p no-recursive-edit)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
402 "\
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
403 Do incremental search backward.
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
404 With a prefix argument, do a regular expression search instead.
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
405 See \\[isearch-forward] for more information."
1883
b707809f29bb (isearch-backward-regexp):
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
406 (interactive "P\np")
1885
9e79ffe97d5b Fix minor bugs in previous change.
Richard M. Stallman <rms@gnu.org>
parents: 1883
diff changeset
407 (isearch-mode nil (not (null regexp-p)) nil (not no-recursive-edit)))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
408
1883
b707809f29bb (isearch-backward-regexp):
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
409 (defun isearch-backward-regexp (&optional not-regexp no-recursive-edit)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
410 "\
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
411 Do incremental search backward for regular expression.
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
412 With a prefix argument, do a regular string search instead.
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
413 Like ordinary incremental search except that your input
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
414 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
415 (interactive "P\np")
1885
9e79ffe97d5b Fix minor bugs in previous change.
Richard M. Stallman <rms@gnu.org>
parents: 1883
diff changeset
416 (isearch-mode nil (null not-regexp) nil (not no-recursive-edit)))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
417
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
418
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
419 (defun isearch-mode-help ()
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
420 (interactive)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
421 (describe-function 'isearch-forward)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
422 (isearch-update))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
423
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
424
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
425 ;; isearch-mode only sets up incremental search for the minor mode.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
426 ;; All the work is done by the isearch-mode commands.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
427
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
428 ;; Not used yet:
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
429 ;;(defconst isearch-commands '(isearch-forward isearch-backward
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
430 ;; isearch-forward-regexp isearch-backward-regexp)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
431 ;; "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
432
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
433
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
434 (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
435 "Start isearch minor mode. Called by `isearch-forward', etc.
5f7440c4c0de (isearch-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11579
diff changeset
436
5f7440c4c0de (isearch-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11579
diff changeset
437 \\{isearch-mode-map}"
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
438
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
439 ;; Initialize global vars.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
440 (setq isearch-forward forward
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
441 isearch-regexp regexp
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
442 isearch-word word-p
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
443 isearch-op-fun op-fun
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
444 isearch-case-fold-search case-fold-search
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
445 isearch-string ""
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
446 isearch-message ""
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
447 isearch-cmds nil
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
448 isearch-success t
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
449 isearch-wrapped nil
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
450 isearch-barrier (point)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
451 isearch-adjusted nil
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
452 isearch-yank-flag nil
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
453 isearch-invalid-regexp nil
5601
8353962cfd74 SPC is not special in regexp within brackets.
Richard M. Stallman <rms@gnu.org>
parents: 5554
diff changeset
454 isearch-within-brackets nil
9940
4a06fd6dcbff (isearch-other-meta-char): Delete debugging code.
Richard M. Stallman <rms@gnu.org>
parents: 9935
diff changeset
455 isearch-slow-terminal-mode (and (<= baud-rate search-slow-speed)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
456 (> (window-height)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
457 (* 4 search-slow-window-lines)))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
458 isearch-other-end nil
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
459 isearch-small-window nil
13799
49b7cd70c43c (isearch-done): Use executing-kbd-macro.
Karl Heuer <kwzh@gnu.org>
parents: 13682
diff changeset
460 isearch-just-started t
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
461
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
462 isearch-opoint (point)
1146
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
463 search-ring-yank-pointer nil
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
464 regexp-search-ring-yank-pointer nil)
13799
49b7cd70c43c (isearch-done): Use executing-kbd-macro.
Karl Heuer <kwzh@gnu.org>
parents: 13682
diff changeset
465 (looking-at "")
5554
0ac0776c23af (isearch-mode): If not slow, clear isearch-window-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 5411
diff changeset
466 (setq isearch-window-configuration
0ac0776c23af (isearch-mode): If not slow, clear isearch-window-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 5411
diff changeset
467 (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
468
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
469 (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
470 (force-mode-line-update)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
471
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
472 (isearch-push-state)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
473
12265
1d2296cfa1e3 (isearch-mode): Use overriding-terminal-local-map, not overriding-local-map.
Karl Heuer <kwzh@gnu.org>
parents: 12106
diff changeset
474 (setq overriding-terminal-local-map isearch-mode-map)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
475 (isearch-update)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
476 (run-hooks 'isearch-mode-hook)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
477
14939
c0e8ab5d23fc (isearch-mode): Use add-hook for mouse-leave-buffer-hook.
Richard M. Stallman <rms@gnu.org>
parents: 14288
diff changeset
478 (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
479
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
480 ;; 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
481 ;; the calling function until searching is completed) by entering
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
482 ;; 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
483 (if recursive-edit
1ea5ec97ae18 (isearch-mode): If enter recursive-edit,
Richard M. Stallman <rms@gnu.org>
parents: 3250
diff changeset
484 (let ((isearch-recursive-edit t))
1ea5ec97ae18 (isearch-mode): If enter recursive-edit,
Richard M. Stallman <rms@gnu.org>
parents: 3250
diff changeset
485 (recursive-edit)))
8663
3f7bd8c32c9a (isearch-edit-string): In the isearch-recursive-edit case,
Richard M. Stallman <rms@gnu.org>
parents: 8455
diff changeset
486 isearch-success)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
487
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
488
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
489 ;; Some high level utilities. Others below.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
490
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
491 (defun isearch-update ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
492 ;; 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
493 (if (null unread-command-events)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
494 (progn
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
495 (if (not (input-pending-p))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
496 (isearch-message))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
497 (if (and isearch-slow-terminal-mode
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
498 (not (or isearch-small-window
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
499 (pos-visible-in-window-p))))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
500 (let ((found-point (point)))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
501 (setq isearch-small-window t)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
502 (move-to-window-line 0)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
503 (let ((window-min-height 1))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
504 (split-window nil (if (< search-slow-window-lines 0)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
505 (1+ (- search-slow-window-lines))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
506 (- (window-height)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
507 (1+ search-slow-window-lines)))))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
508 (if (< search-slow-window-lines 0)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
509 (progn (vertical-motion (- 1 search-slow-window-lines))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
510 (set-window-start (next-window) (point))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
511 (set-window-hscroll (next-window)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
512 (window-hscroll))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
513 (set-window-hscroll (selected-window) 0))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
514 (other-window 1))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
515 (goto-char found-point)))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
516 (if isearch-other-end
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
517 (if (< isearch-other-end (point)) ; isearch-forward?
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
518 (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
519 (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
520 (isearch-dehighlight nil))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
521 ))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
522 (setq ;; quit-flag nil not for isearch-mode
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
523 isearch-adjusted nil
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
524 isearch-yank-flag nil)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
525 )
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
526
8663
3f7bd8c32c9a (isearch-edit-string): In the isearch-recursive-edit case,
Richard M. Stallman <rms@gnu.org>
parents: 8455
diff changeset
527 (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
528 (remove-hook 'mouse-leave-buffer-hook 'isearch-done)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
529 ;; Called by all commands that terminate isearch-mode.
1184
5f4300ccc93f entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1169
diff changeset
530 ;; 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
531 (setq overriding-terminal-local-map nil)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
532 ;; (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
533 (isearch-dehighlight t)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
534 (let ((found-start (window-start (selected-window)))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
535 (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
536 (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
537 (set-window-configuration isearch-window-configuration))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
538
4379
36f6f4b28dde (isearch-done): Move point (for small window)
Richard M. Stallman <rms@gnu.org>
parents: 4095
diff changeset
539 (if isearch-small-window
36f6f4b28dde (isearch-done): Move point (for small window)
Richard M. Stallman <rms@gnu.org>
parents: 4095
diff changeset
540 (goto-char found-point)
36f6f4b28dde (isearch-done): Move point (for small window)
Richard M. Stallman <rms@gnu.org>
parents: 4095
diff changeset
541 ;; 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
542 (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
543
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
544 ;; If there was movement, mark the starting position.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
545 ;; Maybe should test difference between and set mark iff > threshold.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
546 (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
547 (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
548 (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
549 (push-mark isearch-opoint t)
13682
108ac303b3e5 (isearch-edit-string): Consider the case when
Richard M. Stallman <rms@gnu.org>
parents: 13254
diff changeset
550 (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
551 (message "Mark saved where search started"))))))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
552
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
553 (setq isearch-mode nil)
11579
28e4495a9e8f (isearch-mode, isearch-done): Use force-mode-line-update.
Karl Heuer <kwzh@gnu.org>
parents: 11526
diff changeset
554 (force-mode-line-update)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
555
1184
5f4300ccc93f entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1169
diff changeset
556 (if (and (> (length isearch-string) 0) (not nopush))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
557 ;; Update the ring data.
11100
2ad1ba0ac825 (isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 11061
diff changeset
558 (isearch-update-ring isearch-string isearch-regexp))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
559
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
560 (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
561 (and (not edit) isearch-recursive-edit (exit-recursive-edit)))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
562
11100
2ad1ba0ac825 (isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 11061
diff changeset
563 (defun isearch-update-ring (string &optional regexp)
2ad1ba0ac825 (isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 11061
diff changeset
564 "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
565 REGEXP says which ring to use."
2ad1ba0ac825 (isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 11061
diff changeset
566 (if regexp
2ad1ba0ac825 (isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 11061
diff changeset
567 (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
568 (not (string= string (car regexp-search-ring))))
11100
2ad1ba0ac825 (isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 11061
diff changeset
569 (progn
2ad1ba0ac825 (isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 11061
diff changeset
570 (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
571 (cons string regexp-search-ring))
11100
2ad1ba0ac825 (isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 11061
diff changeset
572 (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
573 (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
574 nil))))
2ad1ba0ac825 (isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 11061
diff changeset
575 (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
576 (not (string= string (car search-ring))))
11100
2ad1ba0ac825 (isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 11061
diff changeset
577 (progn
11526
885c533e786e (isearch-update-ring): Use STRING arg, not isearch-ring.
Richard M. Stallman <rms@gnu.org>
parents: 11443
diff changeset
578 (setq search-ring (cons string search-ring))
11100
2ad1ba0ac825 (isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 11061
diff changeset
579 (if (> (length search-ring) search-ring-max)
2ad1ba0ac825 (isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 11061
diff changeset
580 (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
581
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
582 ;;; Switching buffers should first terminate isearch-mode.
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3526
diff changeset
583 ;;; 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
584 ;;; For lemacs, see Exiting in lemacs below
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
585
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
586 ;; For Emacs 19, the frame switch event is handled.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
587 (defun isearch-switch-frame-handler ()
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
588 (interactive) ;; Is this necessary?
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
589 ;; First terminate isearch-mode.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
590 (isearch-done)
2296
91fe00141e95 * isearch.el (isearch-switch-frame-handler): Call
Jim Blandy <jimb@redhat.com>
parents: 2233
diff changeset
591 (handle-switch-frame (car (cdr (isearch-last-command-char)))))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
592
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
593
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
594 ;; Commands active while inside of the isearch minor mode.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
595
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
596 (defun isearch-exit ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
597 "Exit search normally.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
598 However, if this is the first command after starting incremental
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
599 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
600 nonincremental search instead via `isearch-edit-string'."
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
601 (interactive)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
602 (if (and search-nonincremental-instead
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
603 (= 0 (length isearch-string)))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
604 (let ((isearch-nonincremental t))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
605 (isearch-edit-string)))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
606 (isearch-done))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
607
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
608
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
609 (defun isearch-edit-string ()
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
610 "Edit the search string in the minibuffer.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
611 The following additional command keys are active while editing.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
612 \\<minibuffer-local-isearch-map>
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
613 \\[exit-minibuffer] to resume incremental searching with the edited string.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
614 \\[isearch-nonincremental-exit-minibuffer] to do one nonincremental search.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
615 \\[isearch-forward-exit-minibuffer] to resume isearching forward.
7378
8d05fd49a9ed (isearch-edit-string): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 7298
diff changeset
616 \\[isearch-reverse-exit-minibuffer] to resume isearching backward.
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
617 \\[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
618 \\[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
619 \\[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
620 \\<isearch-mode-map>
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
621 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
622
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
623 ;; 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
624 ;; 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
625 ;; 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
626 ;; this could be simplified greatly.
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3526
diff changeset
627 ;; Editing doesn't back up the search point. Should it?
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
628 (interactive)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
629 (condition-case err
4095
f60102c4b948 (isearch-edit-string): Bind isearch-nonincremental to its own value, not to
Roland McGrath <roland@gnu.org>
parents: 4041
diff changeset
630 (let ((isearch-nonincremental isearch-nonincremental)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
631
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
632 ;; Locally bind all isearch global variables to protect them
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
633 ;; from recursive isearching.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
634 ;; isearch-string -message and -forward are not bound
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
635 ;; so they may be changed. Instead, save the values.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
636 (isearch-new-string isearch-string)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
637 (isearch-new-message isearch-message)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
638 (isearch-new-forward isearch-forward)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
639 (isearch-new-word isearch-word)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
640
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
641 (isearch-regexp isearch-regexp)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
642 (isearch-op-fun isearch-op-fun)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
643 (isearch-cmds isearch-cmds)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
644 (isearch-success isearch-success)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
645 (isearch-wrapped isearch-wrapped)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
646 (isearch-barrier isearch-barrier)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
647 (isearch-adjusted isearch-adjusted)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
648 (isearch-yank-flag isearch-yank-flag)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
649 (isearch-invalid-regexp isearch-invalid-regexp)
5601
8353962cfd74 SPC is not special in regexp within brackets.
Richard M. Stallman <rms@gnu.org>
parents: 5554
diff changeset
650 (isearch-within-brackets isearch-within-brackets)
11969
fe63b4e6021a (isearch-edit-string): Don't bind isearch-other-end.
Karl Heuer <kwzh@gnu.org>
parents: 11643
diff changeset
651 ;;; Don't bind this. We want isearch-search, below, to set it.
fe63b4e6021a (isearch-edit-string): Don't bind isearch-other-end.
Karl Heuer <kwzh@gnu.org>
parents: 11643
diff changeset
652 ;;; And the old value won't matter after that.
fe63b4e6021a (isearch-edit-string): Don't bind isearch-other-end.
Karl Heuer <kwzh@gnu.org>
parents: 11643
diff changeset
653 ;;; (isearch-other-end isearch-other-end)
fe63b4e6021a (isearch-edit-string): Don't bind isearch-other-end.
Karl Heuer <kwzh@gnu.org>
parents: 11643
diff changeset
654 ;;; Perhaps some of these other variables should be bound for a
fe63b4e6021a (isearch-edit-string): Don't bind isearch-other-end.
Karl Heuer <kwzh@gnu.org>
parents: 11643
diff changeset
655 ;;; shorter period, ending before the next isearch-search.
fe63b4e6021a (isearch-edit-string): Don't bind isearch-other-end.
Karl Heuer <kwzh@gnu.org>
parents: 11643
diff changeset
656 ;;; But there doesn't seem to be a real bug, so let's not risk it now.
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
657 (isearch-opoint isearch-opoint)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
658 (isearch-slow-terminal-mode isearch-slow-terminal-mode)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
659 (isearch-small-window isearch-small-window)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
660 (isearch-recursive-edit isearch-recursive-edit)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
661 ;; Save current configuration so we can restore it here.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
662 (isearch-window-configuration (current-window-configuration))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
663 )
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
664
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
665 ;; Actually terminate isearching until editing is done.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
666 ;; This is so that the user can do anything without failure,
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
667 ;; like switch buffers and start another isearch, and return.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
668 (condition-case err
8663
3f7bd8c32c9a (isearch-edit-string): In the isearch-recursive-edit case,
Richard M. Stallman <rms@gnu.org>
parents: 8455
diff changeset
669 (isearch-done t t)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
670 (exit nil)) ; was recursive editing
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
671
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
672 (isearch-message) ;; for read-char
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
673 (unwind-protect
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
674 (let* (;; Why does following read-char echo?
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
675 ;;(echo-keystrokes 0) ;; not needed with above message
1480
d0d11fa0ecf5 (isearch-edit-string):
Richard M. Stallman <rms@gnu.org>
parents: 1458
diff changeset
676 (e (let ((cursor-in-echo-area t))
4601
32cc537f0180 (isearch-edit-string): Use read-event, not read-char.
Richard M. Stallman <rms@gnu.org>
parents: 4512
diff changeset
677 (read-event)))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
678 ;; Binding minibuffer-history-symbol to nil is a work-around
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
679 ;; for some incompatibility with gmhist.
10397
8fe0c72ba336 (isearch-edit-string): Disable message logging.
Karl Heuer <kwzh@gnu.org>
parents: 10257
diff changeset
680 (minibuffer-history-symbol)
8fe0c72ba336 (isearch-edit-string): Disable message logging.
Karl Heuer <kwzh@gnu.org>
parents: 10257
diff changeset
681 (message-log-max nil))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
682 ;; If the first character the user types when we prompt them
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
683 ;; for a string is the yank-word character, then go into
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
684 ;; word-search mode. Otherwise unread that character and
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
685 ;; read a key the normal way.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
686 ;; Word search does not apply (yet) to regexp searches,
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
687 ;; no check is made here.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
688 (message (isearch-message-prefix nil nil t))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
689 (if (eq 'isearch-yank-word
4601
32cc537f0180 (isearch-edit-string): Use read-event, not read-char.
Richard M. Stallman <rms@gnu.org>
parents: 4512
diff changeset
690 (lookup-key isearch-mode-map (vector e)))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
691 (setq isearch-word t ;; so message-prefix is right
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
692 isearch-new-word t)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
693 (isearch-unread e))
1146
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
694 (setq cursor-in-echo-area nil)
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
695 (setq isearch-new-string
1184
5f4300ccc93f entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1169
diff changeset
696 (let (junk-ring)
9768
61b41f223695 (isearch-edit-string, isearch-toggle-case-fold):
Richard M. Stallman <rms@gnu.org>
parents: 9192
diff changeset
697 (read-from-minibuffer
61b41f223695 (isearch-edit-string, isearch-toggle-case-fold):
Richard M. Stallman <rms@gnu.org>
parents: 9192
diff changeset
698 (isearch-message-prefix nil nil isearch-nonincremental)
61b41f223695 (isearch-edit-string, isearch-toggle-case-fold):
Richard M. Stallman <rms@gnu.org>
parents: 9192
diff changeset
699 isearch-string
61b41f223695 (isearch-edit-string, isearch-toggle-case-fold):
Richard M. Stallman <rms@gnu.org>
parents: 9192
diff changeset
700 minibuffer-local-isearch-map nil
61b41f223695 (isearch-edit-string, isearch-toggle-case-fold):
Richard M. Stallman <rms@gnu.org>
parents: 9192
diff changeset
701 'junk-ring))
8670
1b4786e3de7a (isearch-edit-string): Use isearch-text-char-description.
Richard M. Stallman <rms@gnu.org>
parents: 8663
diff changeset
702 isearch-new-message
1b4786e3de7a (isearch-edit-string): Use isearch-text-char-description.
Richard M. Stallman <rms@gnu.org>
parents: 8663
diff changeset
703 (mapconcat 'isearch-text-char-description
1b4786e3de7a (isearch-edit-string): Use isearch-text-char-description.
Richard M. Stallman <rms@gnu.org>
parents: 8663
diff changeset
704 isearch-new-string "")))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
705 ;; Always resume isearching by restarting it.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
706 (isearch-mode isearch-forward
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
707 isearch-regexp
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
708 isearch-op-fun
8663
3f7bd8c32c9a (isearch-edit-string): In the isearch-recursive-edit case,
Richard M. Stallman <rms@gnu.org>
parents: 8455
diff changeset
709 nil
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
710 isearch-word)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
711
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
712 ;; Copy new local values to isearch globals
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
713 (setq isearch-string isearch-new-string
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
714 isearch-message isearch-new-message
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
715 isearch-forward isearch-new-forward
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
716 isearch-word isearch-new-word))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
717
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
718 ;; Empty isearch-string means use default.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
719 (if (= 0 (length isearch-string))
13682
108ac303b3e5 (isearch-edit-string): Consider the case when
Richard M. Stallman <rms@gnu.org>
parents: 13254
diff changeset
720 (setq isearch-string (or (car (if isearch-regexp
108ac303b3e5 (isearch-edit-string): Consider the case when
Richard M. Stallman <rms@gnu.org>
parents: 13254
diff changeset
721 regexp-search-ring
108ac303b3e5 (isearch-edit-string): Consider the case when
Richard M. Stallman <rms@gnu.org>
parents: 13254
diff changeset
722 search-ring))
108ac303b3e5 (isearch-edit-string): Consider the case when
Richard M. Stallman <rms@gnu.org>
parents: 13254
diff changeset
723 ""))
1169
a40b54fcb2ff *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1162
diff changeset
724 ;; This used to set the last search string,
a40b54fcb2ff *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1162
diff changeset
725 ;; but I think it is not right to do that here.
a40b54fcb2ff *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1162
diff changeset
726 ;; Only the string actually used should be saved.
a40b54fcb2ff *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1162
diff changeset
727 )
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
728
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
729 ;; Reinvoke the pending search.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
730 (isearch-push-state)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
731 (isearch-search)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
732 (isearch-update)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
733 (if isearch-nonincremental
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
734 (progn
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
735 ;; (sit-for 1) ;; needed if isearch-done does: (message "")
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
736 (isearch-done))))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
737
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
738 (quit ; handle abort-recursive-edit
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
739 (isearch-abort) ;; outside of let to restore outside global values
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
740 )))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
741
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
742 (defun isearch-nonincremental-exit-minibuffer ()
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
743 (interactive)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
744 (setq isearch-nonincremental t)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
745 (exit-minibuffer))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
746
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
747 (defun isearch-forward-exit-minibuffer ()
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
748 (interactive)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
749 (setq isearch-new-forward t)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
750 (exit-minibuffer))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
751
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
752 (defun isearch-reverse-exit-minibuffer ()
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
753 (interactive)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
754 (setq isearch-new-forward nil)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
755 (exit-minibuffer))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
756
10117
413a1fd0f7c4 (isearch-cancel): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9940
diff changeset
757 (defun isearch-cancel ()
413a1fd0f7c4 (isearch-cancel): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9940
diff changeset
758 "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
759 (interactive)
413a1fd0f7c4 (isearch-cancel): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9940
diff changeset
760 (goto-char isearch-opoint)
413a1fd0f7c4 (isearch-cancel): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9940
diff changeset
761 (isearch-done t)
413a1fd0f7c4 (isearch-cancel): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9940
diff changeset
762 (signal 'quit nil)) ; and pass on quit signal
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
763
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
764 (defun isearch-abort ()
13991
0297cd54b530 (isearch-abort, isearch-no-upper-case-p): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 13799
diff changeset
765 "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
766 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
767 Use `isearch-exit' to quit without signaling."
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
768 (interactive)
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3526
diff changeset
769 ;; (ding) signal instead below, if quitting
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
770 (discard-input)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
771 (if isearch-success
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
772 ;; If search is successful, move back to starting point
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
773 ;; and really do quit.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
774 (progn (goto-char isearch-opoint)
11046
a9045ed63e20 (isearch-abort): Set isearch-success to nil.
Richard M. Stallman <rms@gnu.org>
parents: 10397
diff changeset
775 (setq isearch-success nil)
1184
5f4300ccc93f entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1169
diff changeset
776 (isearch-done t) ; exit isearch
1146
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
777 (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
778 ;; 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
779 ;; rub out until it is once more successful.
2f41090c58b3 (isearch-abort): Treat "incomplete regexp"
Richard M. Stallman <rms@gnu.org>
parents: 11046
diff changeset
780 (while (or (not isearch-success) isearch-invalid-regexp)
2f41090c58b3 (isearch-abort): Treat "incomplete regexp"
Richard M. Stallman <rms@gnu.org>
parents: 11046
diff changeset
781 (isearch-pop-state))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
782 (isearch-update)))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
783
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
784 (defun isearch-repeat (direction)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
785 ;; Utility for isearch-repeat-forward and -backward.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
786 (if (eq isearch-forward (eq direction 'forward))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
787 ;; C-s in forward or C-r in reverse.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
788 (if (equal isearch-string "")
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
789 ;; If search string is empty, use last one.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
790 (setq isearch-string
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
791 (or (if isearch-regexp
1146
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
792 (car regexp-search-ring)
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
793 (car search-ring))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
794 "")
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
795 isearch-message
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
796 (mapconcat 'isearch-text-char-description
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
797 isearch-string ""))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
798 ;; If already have what to search for, repeat it.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
799 (or isearch-success
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
800 (progn
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
801
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
802 (goto-char (if isearch-forward (point-min) (point-max)))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
803 (setq isearch-wrapped t))))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
804 ;; C-s in reverse or C-r in forward, change direction.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
805 (setq isearch-forward (not isearch-forward)))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
806
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
807 (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
808
c002b55b9cac (isearch-repeat): If we matched a null string and there's
Richard M. Stallman <rms@gnu.org>
parents: 5344
diff changeset
809 (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
810 (setq isearch-success t)
13799
49b7cd70c43c (isearch-done): Use executing-kbd-macro.
Karl Heuer <kwzh@gnu.org>
parents: 13682
diff changeset
811 (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
812 (not isearch-just-started))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
813 ;; If repeating a search that found
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
814 ;; 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
815 (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
816 ;; 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
817 (progn
c002b55b9cac (isearch-repeat): If we matched a null string and there's
Richard M. Stallman <rms@gnu.org>
parents: 5344
diff changeset
818 (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
819 (ding))
c002b55b9cac (isearch-repeat): If we matched a null string and there's
Richard M. Stallman <rms@gnu.org>
parents: 5344
diff changeset
820 (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
821 (isearch-search))
c002b55b9cac (isearch-repeat): If we matched a null string and there's
Richard M. Stallman <rms@gnu.org>
parents: 5344
diff changeset
822 (isearch-search)))
c002b55b9cac (isearch-repeat): If we matched a null string and there's
Richard M. Stallman <rms@gnu.org>
parents: 5344
diff changeset
823
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
824 (isearch-push-state)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
825 (isearch-update))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
826
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
827 (defun isearch-repeat-forward ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
828 "Repeat incremental search forwards."
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
829 (interactive)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
830 (isearch-repeat 'forward))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
831
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
832 (defun isearch-repeat-backward ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
833 "Repeat incremental search backwards."
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
834 (interactive)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
835 (isearch-repeat 'backward))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
836
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
837 (defun isearch-toggle-regexp ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
838 "Toggle regexp searching on or off."
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
839 ;; The status stack is left unchanged.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
840 (interactive)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
841 (setq isearch-regexp (not isearch-regexp))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
842 (if isearch-regexp (setq isearch-word nil))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
843 (isearch-update))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
844
7294
4ff0c1e7c8e2 (isearch-case-fold-search): new possible value `yes'
Richard M. Stallman <rms@gnu.org>
parents: 6736
diff changeset
845 (defun isearch-toggle-case-fold ()
4ff0c1e7c8e2 (isearch-case-fold-search): new possible value `yes'
Richard M. Stallman <rms@gnu.org>
parents: 6736
diff changeset
846 "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
847 (interactive)
4ff0c1e7c8e2 (isearch-case-fold-search): new possible value `yes'
Richard M. Stallman <rms@gnu.org>
parents: 6736
diff changeset
848 (setq isearch-case-fold-search
4ff0c1e7c8e2 (isearch-case-fold-search): new possible value `yes'
Richard M. Stallman <rms@gnu.org>
parents: 6736
diff changeset
849 (if isearch-case-fold-search nil 'yes))
10397
8fe0c72ba336 (isearch-edit-string): Disable message logging.
Karl Heuer <kwzh@gnu.org>
parents: 10257
diff changeset
850 (let ((message-log-max nil))
8fe0c72ba336 (isearch-edit-string): Disable message logging.
Karl Heuer <kwzh@gnu.org>
parents: 10257
diff changeset
851 (message "%s%s [case %ssensitive]"
8fe0c72ba336 (isearch-edit-string): Disable message logging.
Karl Heuer <kwzh@gnu.org>
parents: 10257
diff changeset
852 (isearch-message-prefix nil nil isearch-nonincremental)
8fe0c72ba336 (isearch-edit-string): Disable message logging.
Karl Heuer <kwzh@gnu.org>
parents: 10257
diff changeset
853 isearch-message
8fe0c72ba336 (isearch-edit-string): Disable message logging.
Karl Heuer <kwzh@gnu.org>
parents: 10257
diff changeset
854 (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
855 (setq isearch-adjusted t)
4ff0c1e7c8e2 (isearch-case-fold-search): new possible value `yes'
Richard M. Stallman <rms@gnu.org>
parents: 6736
diff changeset
856 (sit-for 1)
4ff0c1e7c8e2 (isearch-case-fold-search): new possible value `yes'
Richard M. Stallman <rms@gnu.org>
parents: 6736
diff changeset
857 (isearch-update))
4ff0c1e7c8e2 (isearch-case-fold-search): new possible value `yes'
Richard M. Stallman <rms@gnu.org>
parents: 6736
diff changeset
858
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
859 (defun isearch-delete-char ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
860 "Discard last input item and move point back.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
861 If no previous match was done, just beep."
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
862 (interactive)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
863 (if (null (cdr isearch-cmds))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
864 (ding)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
865 (isearch-pop-state))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
866 (isearch-update))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
867
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
868
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
869 (defun isearch-yank (chunk)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
870 ;; Helper for isearch-yank-word and isearch-yank-line
4876
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
871 ;; CHUNK should be word, line or kill.
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
872 (let ((string (cond
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
873 ((eq chunk 'kill)
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
874 (current-kill 0))
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
875 (t
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
876 (save-excursion
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
877 (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
878 (goto-char isearch-other-end))
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
879 (buffer-substring
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
880 (point)
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
881 (save-excursion
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
882 (cond
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
883 ((eq chunk 'word)
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
884 (forward-word 1))
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
885 ((eq chunk 'line)
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
886 (end-of-line)))
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
887 (point))))))))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
888 ;; 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
889 (if (and isearch-case-fold-search
1143
0b4552590bb8 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1142
diff changeset
890 (eq 'not-yanks search-upper-case))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
891 (setq string (downcase string)))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
892 (if isearch-regexp (setq string (regexp-quote string)))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
893 (setq isearch-string (concat isearch-string string)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
894 isearch-message
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
895 (concat isearch-message
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
896 (mapconcat 'isearch-text-char-description
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
897 string ""))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
898 ;; Don't move cursor in reverse search.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
899 isearch-yank-flag t))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
900 (isearch-search-and-update))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
901
4876
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
902 (defun isearch-yank-kill ()
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
903 "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
904 (interactive)
8ddcaee25a73 (isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents: 4840
diff changeset
905 (isearch-yank 'kill))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
906
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
907 (defun isearch-yank-word ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
908 "Pull next word from buffer into search string."
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
909 (interactive)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
910 (isearch-yank 'word))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
911
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
912 (defun isearch-yank-line ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
913 "Pull rest of line from buffer into search string."
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
914 (interactive)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
915 (isearch-yank 'line))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
916
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
917
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
918 (defun isearch-search-and-update ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
919 ;; Do the search and update the display.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
920 (if (and (not isearch-success)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
921 ;; unsuccessful regexp search may become
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
922 ;; successful by addition of characters which
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
923 ;; make isearch-string valid
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
924 (not isearch-regexp))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
925 nil
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
926 ;; In reverse search, adding stuff at
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
927 ;; the end may cause zero or many more chars to be
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
928 ;; matched, in the string following point.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
929 ;; Allow all those possibilities without moving point as
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
930 ;; long as the match does not extend past search origin.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
931 (if (and (not isearch-forward) (not isearch-adjusted)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
932 (condition-case ()
13799
49b7cd70c43c (isearch-done): Use executing-kbd-macro.
Karl Heuer <kwzh@gnu.org>
parents: 13682
diff changeset
933 (let ((case-fold-search isearch-case-fold-search))
49b7cd70c43c (isearch-done): Use executing-kbd-macro.
Karl Heuer <kwzh@gnu.org>
parents: 13682
diff changeset
934 (looking-at (if isearch-regexp isearch-string
49b7cd70c43c (isearch-done): Use executing-kbd-macro.
Karl Heuer <kwzh@gnu.org>
parents: 13682
diff changeset
935 (regexp-quote isearch-string))))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
936 (error nil))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
937 (or isearch-yank-flag
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
938 (<= (match-end 0)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
939 (min isearch-opoint isearch-barrier))))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
940 (setq isearch-success t
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
941 isearch-invalid-regexp nil
5601
8353962cfd74 SPC is not special in regexp within brackets.
Richard M. Stallman <rms@gnu.org>
parents: 5554
diff changeset
942 isearch-within-brackets nil
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
943 isearch-other-end (match-end 0))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
944 ;; Not regexp, not reverse, or no match at point.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
945 (if (and isearch-other-end (not isearch-adjusted))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
946 (goto-char (if isearch-forward isearch-other-end
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
947 (min isearch-opoint
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
948 isearch-barrier
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
949 (1+ isearch-other-end)))))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
950 (isearch-search)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
951 ))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
952 (isearch-push-state)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
953 (if isearch-op-fun (funcall isearch-op-fun))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
954 (isearch-update))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
955
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
956
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
957 ;; *, ?, and | chars can make a regexp more liberal.
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
958 ;; 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
959 ;; So go back to place last successful search started
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
960 ;; 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
961 ;; + needs no special handling because the string must match at least once.
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
962
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
963 (defun isearch-*-char ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
964 "Handle * and ? specially in regexps."
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
965 (interactive)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
966 (if isearch-regexp
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
967
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
968 (progn
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
969 (setq isearch-adjusted t)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
970 (let ((cs (nth (if isearch-forward
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
971 5 ; isearch-other-end
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
972 2) ; saved (point)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
973 (car (cdr isearch-cmds)))))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
974 ;; (car isearch-cmds) is after last search;
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
975 ;; (car (cdr isearch-cmds)) is from before it.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
976 (setq cs (or cs isearch-barrier))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
977 (goto-char
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
978 (if isearch-forward
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
979 (max cs isearch-barrier)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
980 (min cs isearch-barrier))))))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
981 (isearch-process-search-char (isearch-last-command-char)))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
982
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
983
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
984 (defun isearch-|-char ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
985 "If in regexp search, jump to the barrier."
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
986 (interactive)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
987 (if isearch-regexp
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
988 (progn
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
989 (setq isearch-adjusted t)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
990 (goto-char isearch-barrier)))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
991 (isearch-process-search-char (isearch-last-command-char)))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
992
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
993
2572
8784bb8514b0 Replaced all fsets with defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2533
diff changeset
994 (defalias 'isearch-other-control-char 'isearch-other-meta-char)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
995
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
996 (defun isearch-other-meta-char ()
2031
f2dbfd43a1c5 (isearch-unread): Handle multiple args.
Richard M. Stallman <rms@gnu.org>
parents: 1885
diff changeset
997 "Exit the search normally and reread this key sequence.
1184
5f4300ccc93f entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1169
diff changeset
998 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
999 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
1000 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
1001 (interactive)
12106
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1002 (let* ((key (this-command-keys))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1003 (main-event (aref key 0))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1004 (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
1005 (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
1006 (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
1007 (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
1008 (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
1009 ;; 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
1010 ;; 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
1011 ;; 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
1012 ;; 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
1013 ;; 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
1014 (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
1015 (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
1016 (progn
cadb9c7a1501 (isearch-mode-map): Don't bind tab, return, kp-N, etc.
Richard M. Stallman <rms@gnu.org>
parents: 12284
diff changeset
1017 (isearch-done)
cadb9c7a1501 (isearch-mode-map): Don't bind tab, return, kp-N, etc.
Richard M. Stallman <rms@gnu.org>
parents: 12284
diff changeset
1018 (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
1019 (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
1020 (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
1021 (
12106
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1022 ;; Handle an undefined shifted control character
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1023 ;; by downshifting it if that makes it defined.
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1024 ;; (As read-key-sequence would normally do,
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1025 ;; if we didn't have a default definition.)
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1026 (let ((mods (event-modifiers main-event)))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1027 (and (integerp main-event)
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1028 (memq 'shift mods)
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1029 (memq 'control mods)
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1030 (lookup-key isearch-mode-map
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1031 (let ((copy (copy-sequence key)))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1032 (aset copy 0
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1033 (- main-event (- ?\C-\S-a ?\C-a)))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1034 copy)
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1035 nil)))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1036 (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
1037 (cancel-kbd-macro-events)
12106
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1038 (apply 'isearch-unread keylist))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1039 ((eq search-exit-option 'edit)
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1040 (apply 'isearch-unread keylist)
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1041 (isearch-edit-string))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1042 (search-exit-option
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1043 (let (window)
12824
9302372b1ec1 (isearch-other-meta-char): Avoid bug checking whether
Richard M. Stallman <rms@gnu.org>
parents: 12716
diff changeset
1044 (cancel-kbd-macro-events)
12106
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1045 (apply 'isearch-unread keylist)
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1046 ;; Properly handle scroll-bar and mode-line clicks
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1047 ;; 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
1048 (and (> (length key) 1)
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1049 (symbolp (aref key 0))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1050 (listp (aref key 1))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1051 (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
1052 ;; Convert the event back into its raw form,
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1053 ;; 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
1054 ;; so it will get split up once again.
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1055 (progn (setq unread-command-events
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1056 (cdr unread-command-events))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1057 (setq main-event (car unread-command-events))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1058 (setcar (cdr (event-start main-event))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1059 (car (nth 1 (event-start main-event))))))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1060 ;; 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
1061 ;; 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
1062 ;; 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
1063 (if (and (listp main-event)
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1064 (setq window (posn-window (event-start main-event)))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1065 (windowp window))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1066 (save-excursion
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1067 (set-buffer (window-buffer window))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1068 (isearch-done))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1069 (isearch-done))))
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1070 (t;; otherwise nil
3ae851bcd773 (isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents: 11969
diff changeset
1071 (isearch-process-search-string key key)))))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1072
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1073 (defun isearch-quote-char ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1074 "Quote special characters for incremental search."
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1075 (interactive)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1076 (isearch-process-search-char (read-quoted-char (isearch-message t))))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1077
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1078 (defun isearch-return-char ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1079 "Convert return into newline for incremental search.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1080 Obsolete."
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1081 (interactive)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1082 (isearch-process-search-char ?\n))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1083
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1084 (defun isearch-printing-char ()
2533
2e1c2b44df3a Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 2426
diff changeset
1085 "Add this ordinary printing character to the search string and search."
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1086 (interactive)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1087 (isearch-process-search-char (isearch-last-command-char)))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1088
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1089 (defun isearch-whitespace-chars ()
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1090 "Match all whitespace chars, if in regexp mode.
2533
2e1c2b44df3a Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 2426
diff changeset
1091 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
1092 (interactive)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1093 (if isearch-regexp
5601
8353962cfd74 SPC is not special in regexp within brackets.
Richard M. Stallman <rms@gnu.org>
parents: 5554
diff changeset
1094 (if (and search-whitespace-regexp (not isearch-within-brackets))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1095 (isearch-process-search-string search-whitespace-regexp " ")
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1096 (isearch-printing-char))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1097 (progn
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3526
diff changeset
1098 ;; 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
1099 ;; (setq isearch-word t)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1100 ;; (setq isearch-adjusted t)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1101 ;; (goto-char isearch-barrier)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1102 (isearch-printing-char))))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1103
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1104 (defun isearch-process-search-char (char)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1105 ;; 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
1106 (isearch-process-search-string
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1107 (isearch-char-to-string char)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1108 (isearch-text-char-description char)))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1109
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1110 (defun isearch-process-search-string (string message)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1111 (setq isearch-string (concat isearch-string string)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1112 isearch-message (concat isearch-message message))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1113 (isearch-search-and-update))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1114
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1115
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1116 ;; Search Ring
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1117
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1118 (defun isearch-ring-adjust1 (advance)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1119 ;; Helper for isearch-ring-adjust
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1120 (let* ((ring (if isearch-regexp regexp-search-ring search-ring))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1121 (length (length ring))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1122 (yank-pointer-name (if isearch-regexp
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1123 'regexp-search-ring-yank-pointer
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1124 'search-ring-yank-pointer))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1125 (yank-pointer (eval yank-pointer-name)))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1126 (if (zerop length)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1127 ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1128 (set yank-pointer-name
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1129 (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
1130 (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
1131 (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
1132 length)))
1146
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1133 (setq isearch-string (nth yank-pointer ring)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1134 isearch-message (mapconcat 'isearch-text-char-description
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1135 isearch-string "")))))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1136
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1137 (defun isearch-ring-adjust (advance)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1138 ;; Helper for isearch-ring-advance and isearch-ring-retreat
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1139 (if (cdr isearch-cmds) ;; is there more than one thing on stack?
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1140 (isearch-pop-state))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1141 (isearch-ring-adjust1 advance)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1142 (isearch-push-state)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1143 (if search-ring-update
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1144 (progn
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1145 (isearch-search)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1146 (isearch-update))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1147 (isearch-edit-string)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1148 ))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1149
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1150 (defun isearch-ring-advance ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1151 "Advance to the next search string in the ring."
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1152 ;; 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
1153 (interactive)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1154 (isearch-ring-adjust 'advance))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1155
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1156 (defun isearch-ring-retreat ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1157 "Retreat to the previous search string in the ring."
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1158 (interactive)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1159 (isearch-ring-adjust nil))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1160
1146
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1161 (defun isearch-ring-advance-edit (n)
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1162 "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
1163 (interactive "p")
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1164 (let* ((yank-pointer-name (if isearch-regexp
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1165 'regexp-search-ring-yank-pointer
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1166 'search-ring-yank-pointer))
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1167 (yank-pointer (eval yank-pointer-name))
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1168 (ring (if isearch-regexp regexp-search-ring search-ring))
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1169 (length (length ring)))
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1170 (if (zerop length)
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1171 ()
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1172 (set yank-pointer-name
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1173 (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
1174 (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
1175 length)))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1176
1146
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1177 (erase-buffer)
1184
5f4300ccc93f entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1169
diff changeset
1178 (insert (nth yank-pointer ring))
1380
a7003e65eb66 (isearch-ring-advance-edit): Delete spurious `)'.
Richard M. Stallman <rms@gnu.org>
parents: 1184
diff changeset
1179 (goto-char (point-max)))))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1180
1146
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1181 (defun isearch-ring-retreat-edit (n)
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1182 "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
1183 (interactive "p")
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1184 (isearch-ring-advance-edit (- n)))
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1185
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1186 ;;(defun isearch-ring-adjust-edit (advance)
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1187 ;; "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
1188 ;; (isearch-ring-adjust1 advance)
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1189 ;; (erase-buffer)
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1190 ;; (insert isearch-string))
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1191
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1192 ;;(defun isearch-ring-advance-edit ()
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1193 ;; (interactive)
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1194 ;; (isearch-ring-adjust-edit 'advance))
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1195
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1196 ;;(defun isearch-ring-retreat-edit ()
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1197 ;; "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
1198 ;; (interactive)
02b2f761f9df *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1143
diff changeset
1199 ;; (isearch-ring-adjust-edit nil))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1200
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1201
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1202 (defun isearch-complete1 ()
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1203 ;; Helper for isearch-complete and isearch-complete-edit
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1204 ;; Return t if completion OK, nil if no completion exists.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1205 (let* ((ring (if isearch-regexp regexp-search-ring search-ring))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1206 (alist (mapcar (function (lambda (string) (list string))) ring))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1207 (completion-ignore-case case-fold-search)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1208 (completion (try-completion isearch-string alist)))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1209 (cond
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1210 ((eq completion t)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1211 ;; isearch-string stays the same
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1212 t)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1213 ((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
1214 (= 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
1215 (if (equal completion isearch-string) ;; no extension?
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1216 (if completion-auto-help
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1217 (with-output-to-temp-buffer "*Isearch completions*"
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1218 (display-completion-list
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1219 (all-completions isearch-string alist))))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1220 (setq isearch-string completion))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1221 t)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1222 (t
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1223 (message "No completion") ; waits a second if in minibuffer
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1224 nil))))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1225
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1226 (defun isearch-complete ()
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1227 "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
1228 The completed string is then editable in the minibuffer.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1229 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
1230 (interactive)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1231 (if (isearch-complete1)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1232 (isearch-edit-string)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1233 ;; else
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1234 (sit-for 1)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1235 (isearch-update)))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1236
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1237 (defun isearch-complete-edit ()
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1238 "Same as `isearch-complete' except in the minibuffer."
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1239 (interactive)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1240 (setq isearch-string (buffer-string))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1241 (if (isearch-complete1)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1242 (progn
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1243 (erase-buffer)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1244 (insert isearch-string))))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1245
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1246
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1247 ;; 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
1248 ;; Need a structure for this.
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1249
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1250 (defun isearch-top-state ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1251 (let ((cmd (car isearch-cmds)))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1252 (setq isearch-string (car cmd)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1253 isearch-message (car (cdr cmd))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1254 isearch-success (nth 3 cmd)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1255 isearch-forward (nth 4 cmd)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1256 isearch-other-end (nth 5 cmd)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1257 isearch-word (nth 6 cmd)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1258 isearch-invalid-regexp (nth 7 cmd)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1259 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
1260 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
1261 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
1262 isearch-case-fold-search (nth 11 cmd))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1263 (goto-char (car (cdr (cdr cmd))))))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1264
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1265 (defun isearch-pop-state ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1266 (setq isearch-cmds (cdr isearch-cmds))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1267 (isearch-top-state)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1268 )
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1269
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1270 (defun isearch-push-state ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1271 (setq isearch-cmds
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1272 (cons (list isearch-string isearch-message (point)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1273 isearch-success isearch-forward isearch-other-end
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1274 isearch-word
5601
8353962cfd74 SPC is not special in regexp within brackets.
Richard M. Stallman <rms@gnu.org>
parents: 5554
diff changeset
1275 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
1276 isearch-within-brackets isearch-case-fold-search)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1277 isearch-cmds)))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1278
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1279
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1280 ;; Message string
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1281
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1282 (defun isearch-message (&optional c-q-hack ellipsis)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1283 ;; Generate and print the message string.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1284 (let ((cursor-in-echo-area ellipsis)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1285 (m (concat
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1286 (isearch-message-prefix c-q-hack ellipsis isearch-nonincremental)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1287 isearch-message
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1288 (isearch-message-suffix c-q-hack ellipsis)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1289 )))
10397
8fe0c72ba336 (isearch-edit-string): Disable message logging.
Karl Heuer <kwzh@gnu.org>
parents: 10257
diff changeset
1290 (if c-q-hack
8fe0c72ba336 (isearch-edit-string): Disable message logging.
Karl Heuer <kwzh@gnu.org>
parents: 10257
diff changeset
1291 m
8fe0c72ba336 (isearch-edit-string): Disable message logging.
Karl Heuer <kwzh@gnu.org>
parents: 10257
diff changeset
1292 (let ((message-log-max nil))
8fe0c72ba336 (isearch-edit-string): Disable message logging.
Karl Heuer <kwzh@gnu.org>
parents: 10257
diff changeset
1293 (message "%s" m)))))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1294
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1295 (defun isearch-message-prefix (&optional c-q-hack ellipsis nonincremental)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1296 ;; If about to search, and previous search regexp was invalid,
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1297 ;; check that it still is. If it is valid now,
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1298 ;; let the message we display while searching say that it is valid.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1299 (and isearch-invalid-regexp ellipsis
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1300 (condition-case ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1301 (progn (re-search-forward isearch-string (point) t)
7378
8d05fd49a9ed (isearch-edit-string): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 7298
diff changeset
1302 (setq isearch-invalid-regexp nil
8d05fd49a9ed (isearch-edit-string): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 7298
diff changeset
1303 isearch-within-brackets nil))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1304 (error nil)))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1305 ;; If currently failing, display no ellipsis.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1306 (or isearch-success (setq ellipsis nil))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1307 (let ((m (concat (if isearch-success "" "failing ")
13254
7ed0775e99af (isearch-message-prefix):
Richard M. Stallman <rms@gnu.org>
parents: 13112
diff changeset
1308 (if (and isearch-wrapped
7ed0775e99af (isearch-message-prefix):
Richard M. Stallman <rms@gnu.org>
parents: 13112
diff changeset
1309 (if isearch-forward
7ed0775e99af (isearch-message-prefix):
Richard M. Stallman <rms@gnu.org>
parents: 13112
diff changeset
1310 (> (point) isearch-opoint)
7ed0775e99af (isearch-message-prefix):
Richard M. Stallman <rms@gnu.org>
parents: 13112
diff changeset
1311 (< (point) isearch-opoint)))
7ed0775e99af (isearch-message-prefix):
Richard M. Stallman <rms@gnu.org>
parents: 13112
diff changeset
1312 "over")
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1313 (if isearch-wrapped "wrapped ")
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1314 (if isearch-word "word " "")
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1315 (if isearch-regexp "regexp " "")
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1316 (if nonincremental "search" "I-search")
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1317 (if isearch-forward ": " " backward: ")
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1318 )))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1319 (aset m 0 (upcase (aref m 0)))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1320 m))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1321
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1322
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1323 (defun isearch-message-suffix (&optional c-q-hack ellipsis)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1324 (concat (if c-q-hack "^Q" "")
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1325 (if isearch-invalid-regexp
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1326 (concat " [" isearch-invalid-regexp "]")
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1327 "")))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1328
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1329
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1330 ;;; Searching
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-search ()
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1333 ;; Do the search with the current search string.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1334 (isearch-message nil t)
7294
4ff0c1e7c8e2 (isearch-case-fold-search): new possible value `yes'
Richard M. Stallman <rms@gnu.org>
parents: 6736
diff changeset
1335 (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
1336 (setq isearch-case-fold-search
ac5c322cea84 (search-upper-case): Make `no-yanks' the default.
Richard M. Stallman <rms@gnu.org>
parents: 3476
diff changeset
1337 (isearch-no-upper-case-p isearch-string isearch-regexp)))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1338 (condition-case lossage
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1339 (let ((inhibit-quit nil)
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1340 (case-fold-search isearch-case-fold-search))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1341 (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
1342 (setq isearch-within-brackets nil)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1343 (setq isearch-success
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1344 (funcall
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1345 (cond (isearch-word
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1346 (if isearch-forward
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1347 'word-search-forward 'word-search-backward))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1348 (isearch-regexp
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1349 (if isearch-forward
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1350 're-search-forward 're-search-backward))
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1351 (t
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1352 (if isearch-forward 'search-forward 'search-backward)))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1353 isearch-string nil t))
13799
49b7cd70c43c (isearch-done): Use executing-kbd-macro.
Karl Heuer <kwzh@gnu.org>
parents: 13682
diff changeset
1354 (setq isearch-just-started nil)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1355 (if isearch-success
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1356 (setq isearch-other-end
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1357 (if isearch-forward (match-beginning 0) (match-end 0)))))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1358
5196
87d3df5d0e4e Undo last change.
Roland McGrath <roland@gnu.org>
parents: 5195
diff changeset
1359 (quit (isearch-unread ?\C-g)
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1360 (setq isearch-success nil))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1361
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1362 (invalid-regexp
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1363 (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
1364 (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
1365 isearch-invalid-regexp))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1366 (if (string-match
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1367 "\\`Premature \\|\\`Unmatched \\|\\`Invalid "
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1368 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
1369 (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
1370 (error
dd292c7ef749 (isearch-search): Handle all sorts of errors from regexp search.
Richard M. Stallman <rms@gnu.org>
parents: 1480
diff changeset
1371 ;; 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
1372 (setq isearch-invalid-regexp (car (cdr lossage)))))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1373
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1374 (if isearch-success
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1375 nil
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1376 ;; Ding if failed this time after succeeding last time.
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1377 (and (nth 3 (car isearch-cmds))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1378 (ding))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1379 (goto-char (nth 2 (car isearch-cmds)))))
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1380
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1381
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1382
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1383 ;;; Highlighting
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1384
3526
ac5c322cea84 (search-upper-case): Make `no-yanks' the default.
Richard M. Stallman <rms@gnu.org>
parents: 3476
diff changeset
1385 (defvar isearch-overlay nil)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1386
3526
ac5c322cea84 (search-upper-case): Make `no-yanks' the default.
Richard M. Stallman <rms@gnu.org>
parents: 3476
diff changeset
1387 (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
1388 (if (or (null search-highlight) (null window-system))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1389 nil
3526
ac5c322cea84 (search-upper-case): Make `no-yanks' the default.
Richard M. Stallman <rms@gnu.org>
parents: 3476
diff changeset
1390 (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
1391 (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
1392 (overlay-put isearch-overlay 'face
620f551ac276 (isearch-highlight): If no face `isearch', use `region'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1393 (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
1394 'isearch 'region))))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1395
3526
ac5c322cea84 (search-upper-case): Make `no-yanks' the default.
Richard M. Stallman <rms@gnu.org>
parents: 3476
diff changeset
1396 (defun isearch-dehighlight (totally)
ac5c322cea84 (search-upper-case): Make `no-yanks' the default.
Richard M. Stallman <rms@gnu.org>
parents: 3476
diff changeset
1397 (if isearch-overlay
ac5c322cea84 (search-upper-case): Make `no-yanks' the default.
Richard M. Stallman <rms@gnu.org>
parents: 3476
diff changeset
1398 (delete-overlay isearch-overlay)))
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1399
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1400 ;;; General utilities
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1401
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1402
3526
ac5c322cea84 (search-upper-case): Make `no-yanks' the default.
Richard M. Stallman <rms@gnu.org>
parents: 3476
diff changeset
1403 (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
1404 "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
1405 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
1406 since they have special meaning in a regexp."
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1407 (let ((case-fold-search nil))
3526
ac5c322cea84 (search-upper-case): Make `no-yanks' the default.
Richard M. Stallman <rms@gnu.org>
parents: 3476
diff changeset
1408 (not (string-match (if regexp-flag "\\(^\\|\\\\\\\\\\|[^\\]\\)[A-Z]"
ac5c322cea84 (search-upper-case): Make `no-yanks' the default.
Richard M. Stallman <rms@gnu.org>
parents: 3476
diff changeset
1409 "[A-Z]")
ac5c322cea84 (search-upper-case): Make `no-yanks' the default.
Richard M. Stallman <rms@gnu.org>
parents: 3476
diff changeset
1410 string))))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1411
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1412
3526
ac5c322cea84 (search-upper-case): Make `no-yanks' the default.
Richard M. Stallman <rms@gnu.org>
parents: 3476
diff changeset
1413 ;; Portability functions to support various Emacs versions.
725
75e4ec1e938f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1414
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1415 ;; To quiet the byte-compiler.
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1416 (defvar unread-command-event)
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1614
diff changeset
1417 (defvar unread-command-events)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1418 (defvar last-command-event)
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1419
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1420 (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
1421 (make-string 1 c))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1422
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1423 (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
1424 (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
1425 (text-char-description c)
9e91acab81e9 (isearch-text-char-description): Treat TAB as ctl char.
Richard M. Stallman <rms@gnu.org>
parents: 5196
diff changeset
1426 (isearch-char-to-string c)))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1427
9934
4c3ab9b8d1a9 (isearch-unread): Always use unread-command-events.
Richard M. Stallman <rms@gnu.org>
parents: 9768
diff changeset
1428 ;; General function to unread characters or events.
13799
49b7cd70c43c (isearch-done): Use executing-kbd-macro.
Karl Heuer <kwzh@gnu.org>
parents: 13682
diff changeset
1429 ;; 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
1430 (defun isearch-unread (&rest char-or-events)
13799
49b7cd70c43c (isearch-done): Use executing-kbd-macro.
Karl Heuer <kwzh@gnu.org>
parents: 13682
diff changeset
1431 (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
1432 (setq unread-command-events
4c3ab9b8d1a9 (isearch-unread): Always use unread-command-events.
Richard M. Stallman <rms@gnu.org>
parents: 9768
diff changeset
1433 (append char-or-events unread-command-events)))
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1434
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1435 (defun isearch-last-command-char ()
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1436 ;; 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
1437 last-command-char)
1142
7fc9de9d8cef *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 853
diff changeset
1438
2230
6314334d7c2b Add standard library headers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2055
diff changeset
1439 ;;; isearch.el ends here