Mercurial > emacs
annotate lisp/isearch.el @ 56905:661d52db56de
(isearch-toggle-regexp): Set `isearch-success' and `isearch-adjusted' to `t'.
(isearch-toggle-case-fold): Set `isearch-success' to `t'.
(isearch-message-prefix): Add "pending" for isearch-adjusted.
(isearch-other-meta-char): Restore isearch-point unconditionally.
(isearch-query-replace): Add new arg `regexp-flag' and use it.
Set point to start of match if region is not active in transient
mark mode (to include the current match to region boundaries).
Push the search string to `query-replace-from-history-variable'.
Add prompt "Query replace regexp" for isearch-regexp.
Add region beginning/end as last arguments of `perform-replace.'
(isearch-query-replace-regexp): Replace code by the call to
`isearch-query-replace' with arg `t'.
author | Juri Linkov <juri@jurta.org> |
---|---|
date | Fri, 03 Sep 2004 20:32:57 +0000 |
parents | bec9907cc422 |
children | 4fb2d507742d 3219f94257bc |
rev | line source |
---|---|
38412
253f761ad37b
Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents:
35905
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 |
56352
f0e5e08dd63e
(isearch-query-replace): Pass the regexp-ness and delimited-ness of
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56349
diff
changeset
|
3 ;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1999, |
f0e5e08dd63e
(isearch-query-replace): Pass the regexp-ness and delimited-ness of
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56349
diff
changeset
|
4 ;; 2000, 2001, 2003, 2004 Free Software Foundation, Inc. |
846
20674ae6bf52
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
792
diff
changeset
|
5 |
2230
6314334d7c2b
Add standard library headers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2055
diff
changeset
|
6 ;; 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
|
7 ;; Maintainer: FSF |
25823
4cecefebde6f
(isearch): Add :links in defgroup.
Dave Love <fx@gnu.org>
parents:
25644
diff
changeset
|
8 ;; Keywords: matching |
725 | 9 |
4839 | 10 ;; This file is part of GNU Emacs. |
725 | 11 |
6736
3e1323443b1a
Fix copying conditions for current GPL version.
Richard M. Stallman <rms@gnu.org>
parents:
5649
diff
changeset
|
12 ;; 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
|
13 ;; 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
|
14 ;; 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
|
15 ;; any later version. |
725 | 16 |
6736
3e1323443b1a
Fix copying conditions for current GPL version.
Richard M. Stallman <rms@gnu.org>
parents:
5649
diff
changeset
|
17 ;; 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
|
18 ;; 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
|
19 ;; 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
|
20 ;; 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
|
21 |
3e1323443b1a
Fix copying conditions for current GPL version.
Richard M. Stallman <rms@gnu.org>
parents:
5649
diff
changeset
|
22 ;; You should have received a copy of the GNU General Public License |
14169 | 23 ;; along with GNU Emacs; see the file COPYING. If not, write to the |
24 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
25 ;; Boston, MA 02111-1307, USA. | |
725 | 26 |
2230
6314334d7c2b
Add standard library headers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2055
diff
changeset
|
27 ;;; Commentary: |
6314334d7c2b
Add standard library headers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2055
diff
changeset
|
28 |
725 | 29 ;; Instructions |
30 | |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
31 ;; 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
|
32 ;; isearch-mode behaves modally and does not return until the search |
25823
4cecefebde6f
(isearch): Add :links in defgroup.
Dave Love <fx@gnu.org>
parents:
25644
diff
changeset
|
33 ;; is completed. It uses a recursive-edit to behave this way. |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
34 |
725 | 35 ;; 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
|
36 ;; `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
|
37 ;; characters of the original isearch.el. With `isearch-mode', |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
38 ;; 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
|
39 ;; 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
|
40 ;; 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
|
41 ;; for bindings active during `isearch-edit-string'. |
725 | 42 |
25823
4cecefebde6f
(isearch): Add :links in defgroup.
Dave Love <fx@gnu.org>
parents:
25644
diff
changeset
|
43 ;; isearch-mode should work even if you switch windows with the mouse, |
4cecefebde6f
(isearch): Add :links in defgroup.
Dave Love <fx@gnu.org>
parents:
25644
diff
changeset
|
44 ;; in which case isearch-mode is terminated automatically before the |
4cecefebde6f
(isearch): Add :links in defgroup.
Dave Love <fx@gnu.org>
parents:
25644
diff
changeset
|
45 ;; switch. |
725 | 46 |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
47 ;; The search ring and completion commands automatically put you in |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
48 ;; 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
|
49 ;; modify the search string before executing the search. There are |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
50 ;; 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
|
51 ;; minibuffer and search forward and reverse respectively, while C-m |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
52 ;; exits and does a nonincremental search. |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
53 |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
54 ;; Exiting immediately from isearch uses isearch-edit-string instead |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
55 ;; of nonincremental-search, if search-nonincremental-instead is non-nil. |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
56 ;; 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
|
57 ;; keep the behavior. No point in forcing nonincremental search until |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
58 ;; the last possible moment. |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
59 |
2230
6314334d7c2b
Add standard library headers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2055
diff
changeset
|
60 ;;; Code: |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
61 |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
62 |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
63 ;; Some additional options and constants. |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
64 |
17637
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
65 (defgroup isearch nil |
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
66 "Incremental search minor mode." |
25823
4cecefebde6f
(isearch): Add :links in defgroup.
Dave Love <fx@gnu.org>
parents:
25644
diff
changeset
|
67 :link '(emacs-commentary-link "isearch") |
4cecefebde6f
(isearch): Add :links in defgroup.
Dave Love <fx@gnu.org>
parents:
25644
diff
changeset
|
68 :link '(custom-manual "(emacs)Incremental Search") |
17637
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
69 :prefix "isearch-" |
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
70 :prefix "search-" |
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
71 :group 'matching) |
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
72 |
725 | 73 |
17637
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
74 (defcustom search-exit-option t |
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
75 "*Non-nil means random control characters terminate incremental search." |
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
76 :type 'boolean |
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
77 :group 'isearch) |
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
78 |
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
79 (defcustom search-slow-window-lines 1 |
1143
0b4552590bb8
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1142
diff
changeset
|
80 "*Number of lines in slow search display windows. |
0b4552590bb8
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1142
diff
changeset
|
81 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
|
82 Negative means put the slow search window at the top (normally it's at bottom) |
17637
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
83 and the value is minus the number of lines." |
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
84 :type 'integer |
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
85 :group 'isearch) |
725 | 86 |
17637
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
87 (defcustom search-slow-speed 1200 |
1143
0b4552590bb8
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1142
diff
changeset
|
88 "*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
|
89 This is the style where a one-line window is created to show the line |
17637
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
90 that the search has reached." |
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
91 :type 'integer |
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
92 :group 'isearch) |
725 | 93 |
17637
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
94 (defcustom search-upper-case 'not-yanks |
725 | 95 "*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
|
96 That is, upper and lower case chars must match exactly. |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
97 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
|
98 apply to chars in regexps that are prefixed with `\\'. |
17637
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
99 If this value is `not-yanks', yanked text is always downcased." |
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
100 :type '(choice (const :tag "off" nil) |
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
101 (const not-yanks) |
22587
5fe3766ec1a8
(search-upper-case): Use `other' widget type.
Andreas Schwab <schwab@suse.de>
parents:
22517
diff
changeset
|
102 (other :tag "on" t)) |
17637
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
103 :group 'isearch) |
725 | 104 |
17637
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
105 (defcustom search-nonincremental-instead t |
725 | 106 "*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
|
107 Actually, `isearch-edit-string' is called to let you enter the search |
17637
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
108 string, and RET terminates editing and does a nonincremental search." |
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
109 :type 'boolean |
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
110 :group 'isearch) |
725 | 111 |
51804
c1f7c7481134
(search-whitespace-regexp): Add a shy group around it.
Richard M. Stallman <rms@gnu.org>
parents:
50783
diff
changeset
|
112 (defcustom search-whitespace-regexp "\\(?:\\s-+\\)" |
725 | 113 "*If non-nil, regular expression to match a sequence of whitespace chars. |
19769
4c2159c165e5
(search-whitespace-regexp): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
19587
diff
changeset
|
114 This applies to regular expression incremental search. |
56668
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
115 You might want to use something like \"\\\\(?:[ \\t\\r\\n]+\\\\)\" instead. |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
116 In the Customization buffer, that is `\\(?:[' followed by a space, |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
117 a tab, a carriage return (control-M), a newline, and `]+\\)'." |
17637
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
118 :type 'regexp |
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
119 :group 'isearch) |
725 | 120 |
18037
354ae98947b5
(search-highlight): Make it t by default.
Richard M. Stallman <rms@gnu.org>
parents:
17794
diff
changeset
|
121 (defcustom search-highlight t |
17637
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
122 "*Non-nil means incremental search highlights the current match." |
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
123 :type 'boolean |
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
124 :group 'isearch) |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
125 |
18236
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
126 (defcustom search-invisible 'open |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
127 "If t incremental search can match hidden text. |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
128 nil means don't match invisible text. |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
129 If the value is `open', if the text matched is made invisible by |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
130 an overlay having an `invisible' property and that overlay has a property |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
131 `isearch-open-invisible', then incremental search will show the contents. |
48201
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
132 \(This applies when using `outline.el' and `hideshow.el'.) |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
133 See also `reveal-mode' if you want overlays to automatically be opened |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
134 whenever point is in one of them." |
18236
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
135 :type '(choice (const :tag "Match hidden text" t) |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
136 (const :tag "Open overlays" open) |
18866
04d56f77da0d
(search-invisible): Fix typo.
Richard M. Stallman <rms@gnu.org>
parents:
18783
diff
changeset
|
137 (const :tag "Don't match hidden text" nil)) |
18236
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
138 :group 'isearch) |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
139 |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
140 (defcustom isearch-hide-immediately t |
19069
e132d9bcfd5d
(isearch-hide-immediately): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
18866
diff
changeset
|
141 "If non-nil, re-hide an invisible match right away. |
e132d9bcfd5d
(isearch-hide-immediately): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
18866
diff
changeset
|
142 This variable makes a difference when `search-invisible' is set to `open'. |
e132d9bcfd5d
(isearch-hide-immediately): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
18866
diff
changeset
|
143 It means that after search makes some invisible text visible |
e132d9bcfd5d
(isearch-hide-immediately): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
18866
diff
changeset
|
144 to show the match, it makes the text invisible again when the match moves. |
49420
07a876ca33f0
(isearch-forward): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
49069
diff
changeset
|
145 Ordinarily the text becomes invisible again at the end of the search." |
07a876ca33f0
(isearch-forward): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
49069
diff
changeset
|
146 :type 'boolean |
18236
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
147 :group 'isearch) |
16990
a2fc2ef460e3
(isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents:
16737
diff
changeset
|
148 |
41755
3b56f11dd4b6
(isearch-resume-enabled): New variable.
Kim F. Storm <storm@cua.dk>
parents:
41648
diff
changeset
|
149 (defcustom isearch-resume-enabled t |
3b56f11dd4b6
(isearch-resume-enabled): New variable.
Kim F. Storm <storm@cua.dk>
parents:
41648
diff
changeset
|
150 "*If non-nil, `isearch-resume' commands are added to the command history." |
3b56f11dd4b6
(isearch-resume-enabled): New variable.
Kim F. Storm <storm@cua.dk>
parents:
41648
diff
changeset
|
151 :type 'boolean |
3b56f11dd4b6
(isearch-resume-enabled): New variable.
Kim F. Storm <storm@cua.dk>
parents:
41648
diff
changeset
|
152 :group 'isearch) |
3b56f11dd4b6
(isearch-resume-enabled): New variable.
Kim F. Storm <storm@cua.dk>
parents:
41648
diff
changeset
|
153 |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
154 (defvar isearch-mode-hook nil |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
155 "Function(s) to call after starting up an incremental search.") |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
156 |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
157 (defvar isearch-mode-end-hook nil |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
158 "Function(s) to call after terminating an incremental search.") |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
159 |
56868
bec9907cc422
* isearch.el (isearch-wrap-function)
Juri Linkov <juri@jurta.org>
parents:
56867
diff
changeset
|
160 (defvar isearch-wrap-function nil |
bec9907cc422
* isearch.el (isearch-wrap-function)
Juri Linkov <juri@jurta.org>
parents:
56867
diff
changeset
|
161 "Function to call to wrap the search when search is failed. |
bec9907cc422
* isearch.el (isearch-wrap-function)
Juri Linkov <juri@jurta.org>
parents:
56867
diff
changeset
|
162 If nil, move point to the beginning of the buffer for a forward search, |
bec9907cc422
* isearch.el (isearch-wrap-function)
Juri Linkov <juri@jurta.org>
parents:
56867
diff
changeset
|
163 or to the end of the buffer for a backward search.") |
bec9907cc422
* isearch.el (isearch-wrap-function)
Juri Linkov <juri@jurta.org>
parents:
56867
diff
changeset
|
164 |
bec9907cc422
* isearch.el (isearch-wrap-function)
Juri Linkov <juri@jurta.org>
parents:
56867
diff
changeset
|
165 (defvar isearch-push-state-function nil |
bec9907cc422
* isearch.el (isearch-wrap-function)
Juri Linkov <juri@jurta.org>
parents:
56867
diff
changeset
|
166 "Function to save a function restoring the mode-specific isearch state |
bec9907cc422
* isearch.el (isearch-wrap-function)
Juri Linkov <juri@jurta.org>
parents:
56867
diff
changeset
|
167 to the search status stack.") |
bec9907cc422
* isearch.el (isearch-wrap-function)
Juri Linkov <juri@jurta.org>
parents:
56867
diff
changeset
|
168 |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
169 ;; Search ring. |
725 | 170 |
171 (defvar search-ring nil | |
172 "List of search string sequences.") | |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
173 (defvar regexp-search-ring nil |
725 | 174 "List of regular expression search string sequences.") |
175 | |
17637
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
176 (defcustom search-ring-max 16 |
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
177 "*Maximum length of search ring before oldest elements are thrown away." |
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
178 :type 'integer |
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
179 :group 'isearch) |
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
180 (defcustom regexp-search-ring-max 16 |
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
181 "*Maximum length of regexp search ring before oldest elements are thrown away." |
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
182 :type 'integer |
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
183 :group 'isearch) |
725 | 184 |
185 (defvar search-ring-yank-pointer nil | |
1146
02b2f761f9df
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1143
diff
changeset
|
186 "Index in `search-ring' of last string reused. |
02b2f761f9df
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1143
diff
changeset
|
187 nil if none yet.") |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
188 (defvar regexp-search-ring-yank-pointer nil |
1146
02b2f761f9df
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1143
diff
changeset
|
189 "Index in `regexp-search-ring' of last string reused. |
02b2f761f9df
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1143
diff
changeset
|
190 nil if none yet.") |
725 | 191 |
17637
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
192 (defcustom search-ring-update nil |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
193 "*Non-nil if advancing or retreating in the search ring should cause search. |
17637
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
194 Default value, nil, means edit the string instead." |
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
195 :type 'boolean |
b63c3782cb4c
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17139
diff
changeset
|
196 :group 'isearch) |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
197 |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
198 ;; Define isearch-mode keymap. |
725 | 199 |
33704
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
200 (defvar isearch-mode-map |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
201 (let* ((i 0) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
202 (map (make-keymap))) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
203 (or (vectorp (nth 1 map)) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
204 (char-table-p (nth 1 map)) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
205 (error "The initialization of isearch-mode-map must be updated")) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
206 ;; Make all multibyte characters search for themselves. |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
207 (let ((l (generic-character-list)) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
208 (table (nth 1 map))) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
209 (while l |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
210 (set-char-table-default table (car l) 'isearch-printing-char) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
211 (setq l (cdr l)))) |
52965
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
212 ;; Make function keys, etc, which aren't bound to a scrolling-function |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
213 ;; exit the search. |
33704
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
214 (define-key map [t] 'isearch-other-control-char) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
215 ;; Control chars, by default, end isearch mode transparently. |
49420
07a876ca33f0
(isearch-forward): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
49069
diff
changeset
|
216 ;; We need these explicit definitions because, in a dense keymap, |
33704
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
217 ;; the binding for t does not affect characters. |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
218 ;; We use a dense keymap to save space. |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
219 (while (< i ?\ ) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
220 (define-key map (make-string 1 i) 'isearch-other-control-char) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
221 (setq i (1+ i))) |
725 | 222 |
33704
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
223 ;; Single-byte printing chars extend the search string by default. |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
224 (setq i ?\ ) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
225 (while (< i 256) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
226 (define-key map (vector i) 'isearch-printing-char) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
227 (setq i (1+ i))) |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
228 |
33704
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
229 ;; To handle local bindings with meta char prefix keys, define |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
230 ;; another full keymap. This must be done for any other prefix |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
231 ;; keys as well, one full keymap per char of the prefix key. It |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
232 ;; would be simpler to disable the global keymap, and/or have a |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
233 ;; default local key binding for any key not otherwise bound. |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
234 (let ((meta-map (make-sparse-keymap))) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
235 (define-key map (char-to-string meta-prefix-char) meta-map) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
236 (define-key map [escape] meta-map)) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
237 (define-key map (vector meta-prefix-char t) 'isearch-other-meta-char) |
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
|
238 |
33704
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
239 ;; Several non-printing chars change the searching behavior. |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
240 (define-key map "\C-s" 'isearch-repeat-forward) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
241 (define-key map "\C-r" 'isearch-repeat-backward) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
242 ;; Define M-C-s and M-C-r like C-s and C-r so that the same key |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
243 ;; combinations can be used to repeat regexp isearches that can |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
244 ;; be used to start these searches. |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
245 (define-key map "\M-\C-s" 'isearch-repeat-forward) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
246 (define-key map "\M-\C-r" 'isearch-repeat-backward) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
247 (define-key map "\177" 'isearch-delete-char) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
248 (define-key map "\C-g" 'isearch-abort) |
35083
cfac1ece4f23
(isearch-old-signal-hook): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
35012
diff
changeset
|
249 |
33704
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
250 ;; This assumes \e is the meta-prefix-char. |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
251 (or (= ?\e meta-prefix-char) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
252 (error "Inconsistency in isearch.el")) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
253 (define-key map "\e\e\e" 'isearch-cancel) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
254 (define-key map [escape escape escape] 'isearch-cancel) |
49420
07a876ca33f0
(isearch-forward): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
49069
diff
changeset
|
255 |
33704
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
256 (define-key map "\C-q" 'isearch-quote-char) |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
257 |
33704
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
258 (define-key map "\r" 'isearch-exit) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
259 (define-key map "\C-j" 'isearch-printing-char) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
260 (define-key map "\t" 'isearch-printing-char) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
261 (define-key map " " 'isearch-whitespace-chars) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
262 (define-key map [?\S-\ ] 'isearch-whitespace-chars) |
49420
07a876ca33f0
(isearch-forward): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
49069
diff
changeset
|
263 |
56303
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
264 (define-key map "\C-w" 'isearch-yank-word-or-char) |
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
265 (define-key map "\M-\C-w" 'isearch-del-char) |
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
266 (define-key map "\M-\C-y" 'isearch-yank-char) |
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
267 (define-key map "\C-y" 'isearch-yank-line) |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
268 |
56668
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
269 ;; Define keys for regexp chars * ? } |. |
33704
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
270 ;; Nothing special for + because it matches at least once. |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
271 (define-key map "*" 'isearch-*-char) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
272 (define-key map "?" 'isearch-*-char) |
56668
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
273 (define-key map "}" 'isearch-}-char) |
33704
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
274 (define-key map "|" 'isearch-|-char) |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
275 |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
276 ;; Turned off because I find I expect to get the global definition--rms. |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
277 ;; ;; Instead bind C-h to special help command for isearch-mode. |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
278 ;; (define-key map "\C-h" 'isearch-mode-help) |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
279 |
33704
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
280 (define-key map "\M-n" 'isearch-ring-advance) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
281 (define-key map "\M-p" 'isearch-ring-retreat) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
282 (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
|
283 |
33704
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
284 (define-key map "\M-\t" 'isearch-complete) |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
285 |
33704
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
286 ;; Pass frame events transparently so they won't exit the search. |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
287 ;; In particular, if we have more than one display open, then a |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
288 ;; switch-frame might be generated by someone typing at another keyboard. |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
289 (define-key map [switch-frame] nil) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
290 (define-key map [delete-frame] nil) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
291 (define-key map [iconify-frame] nil) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
292 (define-key map [make-frame-visible] nil) |
40026
04c835f1c6de
(isearch-mode-map): Bind `mouse-movement' to nil.
Gerd Moellmann <gerd@gnu.org>
parents:
39555
diff
changeset
|
293 (define-key map [mouse-movement] nil) |
33704
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
294 ;; For searching multilingual text. |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
295 (define-key map "\C-\\" 'isearch-toggle-input-method) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
296 (define-key map "\C-^" 'isearch-toggle-specified-input-method) |
12284
07a76f045154
(isearch-mode-map): Bind frame events to nil.
Karl Heuer <kwzh@gnu.org>
parents:
12265
diff
changeset
|
297 |
33704
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
298 ;; People expect to be able to paste with the mouse. |
39047
d177c68813c0
(isearch-mouse-2): Renamed from isearch-mouse-yank.
Gerd Moellmann <gerd@gnu.org>
parents:
38778
diff
changeset
|
299 (define-key map [mouse-2] #'isearch-mouse-2) |
33704
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
300 (define-key map [down-mouse-2] nil) |
25572 | 301 |
33704
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
302 ;; Some bindings you may want to put in your isearch-mode-hook. |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
303 ;; Suggest some alternates... |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
304 (define-key map "\M-c" 'isearch-toggle-case-fold) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
305 (define-key map "\M-r" 'isearch-toggle-regexp) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
306 (define-key map "\M-e" 'isearch-edit-string) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
307 |
56352
f0e5e08dd63e
(isearch-query-replace): Pass the regexp-ness and delimited-ness of
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56349
diff
changeset
|
308 (define-key map [?\M-%] 'isearch-query-replace) |
f0e5e08dd63e
(isearch-query-replace): Pass the regexp-ness and delimited-ness of
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56349
diff
changeset
|
309 (define-key map [?\C-\M-%] 'isearch-query-replace-regexp) |
56303
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
310 |
33704
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
311 map) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
312 "Keymap for `isearch-mode'.") |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
313 |
33704
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
314 (defvar minibuffer-local-isearch-map |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
315 (let ((map (make-sparse-keymap))) |
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
316 (set-keymap-parent map minibuffer-local-map) |
56303
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
317 (define-key map "\r" 'isearch-nonincremental-exit-minibuffer) |
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
318 (define-key map "\M-n" 'isearch-ring-advance-edit) |
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
319 (define-key map [next] 'isearch-ring-advance-edit) |
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
320 (define-key map [down] 'isearch-ring-advance-edit) |
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
321 (define-key map "\M-p" 'isearch-ring-retreat-edit) |
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
322 (define-key map [prior] 'isearch-ring-retreat-edit) |
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
323 (define-key map [up] 'isearch-ring-retreat-edit) |
33704
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
324 (define-key map "\M-\t" 'isearch-complete-edit) |
56303
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
325 (define-key map "\C-s" 'isearch-forward-exit-minibuffer) |
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
326 (define-key map "\C-r" 'isearch-reverse-exit-minibuffer) |
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
327 (define-key map "\C-f" 'isearch-yank-char-in-minibuffer) |
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
328 (define-key map [right] 'isearch-yank-char-in-minibuffer) |
33704
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
329 map) |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
330 "Keymap for editing isearch strings in the minibuffer.") |
725 | 331 |
332 ;; Internal variables declared globally for byte-compiler. | |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
333 ;; These are all set with setq while isearching |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
334 ;; and bound locally while editing the search string. |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
335 |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
336 (defvar isearch-forward nil) ; Searching in the forward direction. |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
337 (defvar isearch-regexp nil) ; Searching for a regexp. |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
338 (defvar isearch-word nil) ; Searching for words. |
48201
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
339 (defvar isearch-hidden nil) ; Non-nil if the string exists but is invisible. |
725 | 340 |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
341 (defvar isearch-cmds nil |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
342 "Stack of search status sets. |
56668
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
343 Each set is a vector of the form: |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
344 [STRING MESSAGE POINT SUCCESS FORWARD OTHER-END WORD |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
345 INVALID-REGEXP WRAPPED BARRIER WITHIN-BRACKETS CASE-FOLD-SEARCH]") |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
346 |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
347 (defvar isearch-string "") ; The current search string. |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
348 (defvar isearch-message "") ; text-char-description version of isearch-string |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
349 |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
350 (defvar isearch-success t) ; Searching is currently successful. |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
351 (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
|
352 (defvar isearch-within-brackets nil) ; Regexp has unclosed [. |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
353 (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
|
354 (defvar isearch-wrapped nil) ; Searching restarted from the top (bottom). |
725 | 355 (defvar isearch-barrier 0) |
13799
49b7cd70c43c
(isearch-done): Use executing-kbd-macro.
Karl Heuer <kwzh@gnu.org>
parents:
13682
diff
changeset
|
356 (defvar isearch-just-started nil) |
42067
f38a270798ca
(isearch-start-hscroll): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
42066
diff
changeset
|
357 (defvar isearch-start-hscroll 0) ; hscroll when starting the search. |
725 | 358 |
7294
4ff0c1e7c8e2
(isearch-case-fold-search): new possible value `yes'
Richard M. Stallman <rms@gnu.org>
parents:
6736
diff
changeset
|
359 ; case-fold-search while searching. |
4ff0c1e7c8e2
(isearch-case-fold-search): new possible value `yes'
Richard M. Stallman <rms@gnu.org>
parents:
6736
diff
changeset
|
360 ; 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
|
361 ; 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
|
362 (defvar isearch-case-fold-search nil) |
725 | 363 |
39555
8f03c11f64ef
(isearch-last-case-fold-search): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
39256
diff
changeset
|
364 (defvar isearch-last-case-fold-search nil) |
8f03c11f64ef
(isearch-last-case-fold-search): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
39256
diff
changeset
|
365 |
33725
687b166e4a49
(isearch-original-minibuffer-message-timeout): New var.
Miles Bader <miles@gnu.org>
parents:
33704
diff
changeset
|
366 ;; Used to save default value while isearch is active |
687b166e4a49
(isearch-original-minibuffer-message-timeout): New var.
Miles Bader <miles@gnu.org>
parents:
33704
diff
changeset
|
367 (defvar isearch-original-minibuffer-message-timeout nil) |
687b166e4a49
(isearch-original-minibuffer-message-timeout): New var.
Miles Bader <miles@gnu.org>
parents:
33704
diff
changeset
|
368 |
725 | 369 (defvar isearch-adjusted nil) |
370 (defvar isearch-slow-terminal-mode nil) | |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
371 ;; If t, using a small window. |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
372 (defvar isearch-small-window nil) |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
373 (defvar isearch-opoint 0) |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
374 ;; The window configuration active at the beginning of the search. |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
375 (defvar isearch-window-configuration nil) |
725 | 376 |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
377 ;; 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
|
378 (defvar isearch-yank-flag nil) |
725 | 379 |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
380 ;; A function to be called after each input character is processed. |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
381 ;; (It is not called after characters that exit the search.) |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
382 ;; It is only set from an optional argument to `isearch-mode'. |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
383 (defvar isearch-op-fun nil) |
725 | 384 |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
385 ;; Is isearch-mode in a recursive edit for modal searching. |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
386 (defvar isearch-recursive-edit nil) |
725 | 387 |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
388 ;; Should isearch be terminated after doing one search? |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
389 (defvar isearch-nonincremental nil) |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
390 |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
391 ;; New value of isearch-forward after isearch-edit-string. |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
392 (defvar isearch-new-forward nil) |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
393 |
18236
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
394 ;; Accumulate here the overlays opened during searching. |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
395 (defvar isearch-opened-overlays nil) |
725 | 396 |
22775
ede5d8c1f929
(isearch-input-method-function): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22704
diff
changeset
|
397 ;; The value of input-method-function when isearch is invoked. |
ede5d8c1f929
(isearch-input-method-function): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22704
diff
changeset
|
398 (defvar isearch-input-method-function nil) |
ede5d8c1f929
(isearch-input-method-function): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22704
diff
changeset
|
399 |
ede5d8c1f929
(isearch-input-method-function): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22704
diff
changeset
|
400 ;; A flag to tell if input-method-function is locally bound when |
ede5d8c1f929
(isearch-input-method-function): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22704
diff
changeset
|
401 ;; isearch is invoked. |
ede5d8c1f929
(isearch-input-method-function): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22704
diff
changeset
|
402 (defvar isearch-input-method-local-p nil) |
ede5d8c1f929
(isearch-input-method-function): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22704
diff
changeset
|
403 |
725 | 404 ;; Minor-mode-alist changes - kind of redundant with the |
405 ;; echo area, but if isearching in multiple windows, it can be useful. | |
406 | |
407 (or (assq 'isearch-mode minor-mode-alist) | |
408 (nconc minor-mode-alist | |
409 (list '(isearch-mode isearch-mode)))) | |
410 | |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
411 (defvar isearch-mode nil) ;; Name of the minor mode, if non-nil. |
725 | 412 (make-variable-buffer-local 'isearch-mode) |
413 | |
1143
0b4552590bb8
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1142
diff
changeset
|
414 (define-key global-map "\C-s" 'isearch-forward) |
0b4552590bb8
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1142
diff
changeset
|
415 (define-key esc-map "\C-s" 'isearch-forward-regexp) |
0b4552590bb8
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1142
diff
changeset
|
416 (define-key global-map "\C-r" 'isearch-backward) |
0b4552590bb8
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1142
diff
changeset
|
417 (define-key esc-map "\C-r" 'isearch-backward-regexp) |
0b4552590bb8
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1142
diff
changeset
|
418 |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
419 ;; Entry points to isearch-mode. |
725 | 420 |
1883
b707809f29bb
(isearch-backward-regexp):
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
421 (defun isearch-forward (&optional regexp-p no-recursive-edit) |
725 | 422 "\ |
423 Do incremental search forward. | |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
424 With a prefix argument, do an incremental regular expression search instead. |
725 | 425 \\<isearch-mode-map> |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
426 As you type characters, they add to the search string and are found. |
49420
07a876ca33f0
(isearch-forward): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
49069
diff
changeset
|
427 The following non-printing keys are bound in `isearch-mode-map'. |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
428 |
55226
e3dae0e8c99e
(isearch-mode-map): Bind \C-w to isearch-yank-word instead of isearch-yank-word-or-char.
Juri Linkov <juri@jurta.org>
parents:
54256
diff
changeset
|
429 Type \\[isearch-delete-char] to cancel last input item from end of search string. |
725 | 430 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
|
431 Type LFD (C-j) to match end of line. |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
432 Type \\[isearch-repeat-forward] to search again forward,\ |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
433 \\[isearch-repeat-backward] to search again backward. |
56303
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
434 Type \\[isearch-yank-word-or-char] to yank word from buffer onto end of search\ |
55226
e3dae0e8c99e
(isearch-mode-map): Bind \C-w to isearch-yank-word instead of isearch-yank-word-or-char.
Juri Linkov <juri@jurta.org>
parents:
54256
diff
changeset
|
435 string and search for it. |
56303
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
436 Type \\[isearch-del-char] to delete character from end of search string. |
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
437 Type \\[isearch-yank-char] to yank char from buffer onto end of search\ |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
438 string and search for it. |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
439 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
|
440 and search for it. |
23102 | 441 Type \\[isearch-yank-kill] to yank last killed text onto end of search string\ |
442 and search for it. | |
725 | 443 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
|
444 \\[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
|
445 back to what has |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
446 been found successfully. |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
447 \\[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
|
448 starting point. |
725 | 449 |
35435
1269a53f8f5f
(isearch-forward): Add isearch-toggle-case-fold,
Eli Zaretskii <eliz@gnu.org>
parents:
35363
diff
changeset
|
450 Type \\[isearch-toggle-case-fold] to toggle search case-sensitivity. |
1269a53f8f5f
(isearch-forward): Add isearch-toggle-case-fold,
Eli Zaretskii <eliz@gnu.org>
parents:
35363
diff
changeset
|
451 Type \\[isearch-toggle-regexp] to toggle regular-expression mode. |
1269a53f8f5f
(isearch-forward): Add isearch-toggle-case-fold,
Eli Zaretskii <eliz@gnu.org>
parents:
35363
diff
changeset
|
452 Type \\[isearch-edit-string] to edit the search string in the minibuffer. |
1269a53f8f5f
(isearch-forward): Add isearch-toggle-case-fold,
Eli Zaretskii <eliz@gnu.org>
parents:
35363
diff
changeset
|
453 |
725 | 454 Also supported is a search ring of the previous 16 search strings. |
455 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
|
456 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
|
457 ring. |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
458 Type \\[isearch-complete] to complete the search string using the search ring. |
725 | 459 |
35905 | 460 If an input method is turned on in the current buffer, that input |
49420
07a876ca33f0
(isearch-forward): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
49069
diff
changeset
|
461 method is also active while you are typing characters to search. To |
35881
d72bdac750d6
(isearch-forward): Add description about input method in the docsting.
Kenichi Handa <handa@m17n.org>
parents:
35661
diff
changeset
|
462 toggle the input method, type \\[isearch-toggle-input-method]. It |
d72bdac750d6
(isearch-forward): Add description about input method in the docsting.
Kenichi Handa <handa@m17n.org>
parents:
35661
diff
changeset
|
463 also toggles the input method in the current buffer. |
d72bdac750d6
(isearch-forward): Add description about input method in the docsting.
Kenichi Handa <handa@m17n.org>
parents:
35661
diff
changeset
|
464 |
d72bdac750d6
(isearch-forward): Add description about input method in the docsting.
Kenichi Handa <handa@m17n.org>
parents:
35661
diff
changeset
|
465 To use a different input method for searching, type |
35905 | 466 \\[isearch-toggle-specified-input-method], and specify an input method |
35881
d72bdac750d6
(isearch-forward): Add description about input method in the docsting.
Kenichi Handa <handa@m17n.org>
parents:
35661
diff
changeset
|
467 you want to use. |
d72bdac750d6
(isearch-forward): Add description about input method in the docsting.
Kenichi Handa <handa@m17n.org>
parents:
35661
diff
changeset
|
468 |
49420
07a876ca33f0
(isearch-forward): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
49069
diff
changeset
|
469 The above keys, bound in `isearch-mode-map', are often controlled by |
55226
e3dae0e8c99e
(isearch-mode-map): Bind \C-w to isearch-yank-word instead of isearch-yank-word-or-char.
Juri Linkov <juri@jurta.org>
parents:
54256
diff
changeset
|
470 options; do \\[apropos] on search-.* to find them. |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
471 Other control and meta characters terminate the search |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
472 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
|
473 Likewise for function keys and mouse button events. |
725 | 474 |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
475 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
|
476 the calling function until the search is done." |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
477 |
1883
b707809f29bb
(isearch-backward-regexp):
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
478 (interactive "P\np") |
1885
9e79ffe97d5b
Fix minor bugs in previous change.
Richard M. Stallman <rms@gnu.org>
parents:
1883
diff
changeset
|
479 (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
|
480 |
1883
b707809f29bb
(isearch-backward-regexp):
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
481 (defun isearch-forward-regexp (&optional not-regexp no-recursive-edit) |
725 | 482 "\ |
483 Do incremental search forward for regular expression. | |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
484 With a prefix argument, do a regular string search instead. |
725 | 485 Like ordinary incremental search except that your input |
486 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
|
487 (interactive "P\np") |
1885
9e79ffe97d5b
Fix minor bugs in previous change.
Richard M. Stallman <rms@gnu.org>
parents:
1883
diff
changeset
|
488 (isearch-mode t (null not-regexp) nil (not no-recursive-edit))) |
725 | 489 |
1883
b707809f29bb
(isearch-backward-regexp):
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
490 (defun isearch-backward (&optional regexp-p no-recursive-edit) |
725 | 491 "\ |
492 Do incremental search backward. | |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
493 With a prefix argument, do a regular expression search instead. |
725 | 494 See \\[isearch-forward] for more information." |
1883
b707809f29bb
(isearch-backward-regexp):
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
495 (interactive "P\np") |
1885
9e79ffe97d5b
Fix minor bugs in previous change.
Richard M. Stallman <rms@gnu.org>
parents:
1883
diff
changeset
|
496 (isearch-mode nil (not (null regexp-p)) nil (not no-recursive-edit))) |
725 | 497 |
1883
b707809f29bb
(isearch-backward-regexp):
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
498 (defun isearch-backward-regexp (&optional not-regexp no-recursive-edit) |
725 | 499 "\ |
500 Do incremental search backward for regular expression. | |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
501 With a prefix argument, do a regular string search instead. |
725 | 502 Like ordinary incremental search except that your input |
503 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
|
504 (interactive "P\np") |
1885
9e79ffe97d5b
Fix minor bugs in previous change.
Richard M. Stallman <rms@gnu.org>
parents:
1883
diff
changeset
|
505 (isearch-mode nil (null not-regexp) nil (not no-recursive-edit))) |
725 | 506 |
507 | |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
508 (defun isearch-mode-help () |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
509 (interactive) |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
510 (describe-function 'isearch-forward) |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
511 (isearch-update)) |
725 | 512 |
513 | |
514 ;; isearch-mode only sets up incremental search for the minor mode. | |
515 ;; All the work is done by the isearch-mode commands. | |
516 | |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
517 ;; Not used yet: |
16687
049c87a96dca
Change defconsts to defvars.
Richard M. Stallman <rms@gnu.org>
parents:
16635
diff
changeset
|
518 ;;(defvar isearch-commands '(isearch-forward isearch-backward |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
519 ;; isearch-forward-regexp isearch-backward-regexp) |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
520 ;; "List of commands for which isearch-mode does not recursive-edit.") |
49420
07a876ca33f0
(isearch-forward): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
49069
diff
changeset
|
521 |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
522 |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
523 (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
|
524 "Start isearch minor mode. Called by `isearch-forward', etc. |
5f7440c4c0de
(isearch-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
11579
diff
changeset
|
525 |
5f7440c4c0de
(isearch-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
11579
diff
changeset
|
526 \\{isearch-mode-map}" |
725 | 527 |
528 ;; Initialize global vars. | |
529 (setq isearch-forward forward | |
530 isearch-regexp regexp | |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
531 isearch-word word-p |
725 | 532 isearch-op-fun op-fun |
39555
8f03c11f64ef
(isearch-last-case-fold-search): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
39256
diff
changeset
|
533 isearch-last-case-fold-search isearch-case-fold-search |
725 | 534 isearch-case-fold-search case-fold-search |
535 isearch-string "" | |
536 isearch-message "" | |
537 isearch-cmds nil | |
538 isearch-success t | |
539 isearch-wrapped nil | |
540 isearch-barrier (point) | |
541 isearch-adjusted nil | |
542 isearch-yank-flag nil | |
543 isearch-invalid-regexp nil | |
5601
8353962cfd74
SPC is not special in regexp within brackets.
Richard M. Stallman <rms@gnu.org>
parents:
5554
diff
changeset
|
544 isearch-within-brackets nil |
9940
4a06fd6dcbff
(isearch-other-meta-char): Delete debugging code.
Richard M. Stallman <rms@gnu.org>
parents:
9935
diff
changeset
|
545 isearch-slow-terminal-mode (and (<= baud-rate search-slow-speed) |
725 | 546 (> (window-height) |
41014
fcd14406bac3
(isearch-mode): Handle negative search-slow-window-lines correctly.
Richard M. Stallman <rms@gnu.org>
parents:
40026
diff
changeset
|
547 (* 4 |
fcd14406bac3
(isearch-mode): Handle negative search-slow-window-lines correctly.
Richard M. Stallman <rms@gnu.org>
parents:
40026
diff
changeset
|
548 (abs search-slow-window-lines)))) |
725 | 549 isearch-other-end nil |
550 isearch-small-window nil | |
13799
49b7cd70c43c
(isearch-done): Use executing-kbd-macro.
Karl Heuer <kwzh@gnu.org>
parents:
13682
diff
changeset
|
551 isearch-just-started t |
42067
f38a270798ca
(isearch-start-hscroll): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
42066
diff
changeset
|
552 isearch-start-hscroll (window-hscroll) |
725 | 553 |
554 isearch-opoint (point) | |
1146
02b2f761f9df
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1143
diff
changeset
|
555 search-ring-yank-pointer nil |
18236
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
556 isearch-opened-overlays nil |
22775
ede5d8c1f929
(isearch-input-method-function): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22704
diff
changeset
|
557 isearch-input-method-function input-method-function |
ede5d8c1f929
(isearch-input-method-function): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22704
diff
changeset
|
558 isearch-input-method-local-p (local-variable-p 'input-method-function) |
33725
687b166e4a49
(isearch-original-minibuffer-message-timeout): New var.
Miles Bader <miles@gnu.org>
parents:
33704
diff
changeset
|
559 regexp-search-ring-yank-pointer nil |
687b166e4a49
(isearch-original-minibuffer-message-timeout): New var.
Miles Bader <miles@gnu.org>
parents:
33704
diff
changeset
|
560 |
687b166e4a49
(isearch-original-minibuffer-message-timeout): New var.
Miles Bader <miles@gnu.org>
parents:
33704
diff
changeset
|
561 ;; Save the original value of `minibuffer-message-timeout', and |
687b166e4a49
(isearch-original-minibuffer-message-timeout): New var.
Miles Bader <miles@gnu.org>
parents:
33704
diff
changeset
|
562 ;; set it to nil so that isearch's messages don't get timed out. |
687b166e4a49
(isearch-original-minibuffer-message-timeout): New var.
Miles Bader <miles@gnu.org>
parents:
33704
diff
changeset
|
563 isearch-original-minibuffer-message-timeout minibuffer-message-timeout |
687b166e4a49
(isearch-original-minibuffer-message-timeout): New var.
Miles Bader <miles@gnu.org>
parents:
33704
diff
changeset
|
564 minibuffer-message-timeout nil) |
22775
ede5d8c1f929
(isearch-input-method-function): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22704
diff
changeset
|
565 |
ede5d8c1f929
(isearch-input-method-function): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22704
diff
changeset
|
566 ;; We must bypass input method while reading key. When a user type |
ede5d8c1f929
(isearch-input-method-function): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22704
diff
changeset
|
567 ;; printable character, appropriate input method is turned on in |
35098
63af2c5d55f9
(isearch-lazy-highlight-remove-overlays): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
35083
diff
changeset
|
568 ;; minibuffer to read multibyte characters. |
22775
ede5d8c1f929
(isearch-input-method-function): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22704
diff
changeset
|
569 (or isearch-input-method-local-p |
ede5d8c1f929
(isearch-input-method-function): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22704
diff
changeset
|
570 (make-local-variable 'input-method-function)) |
ede5d8c1f929
(isearch-input-method-function): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22704
diff
changeset
|
571 (setq input-method-function nil) |
ede5d8c1f929
(isearch-input-method-function): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22704
diff
changeset
|
572 |
13799
49b7cd70c43c
(isearch-done): Use executing-kbd-macro.
Karl Heuer <kwzh@gnu.org>
parents:
13682
diff
changeset
|
573 (looking-at "") |
5554
0ac0776c23af
(isearch-mode): If not slow, clear isearch-window-configuration.
Richard M. Stallman <rms@gnu.org>
parents:
5411
diff
changeset
|
574 (setq isearch-window-configuration |
0ac0776c23af
(isearch-mode): If not slow, clear isearch-window-configuration.
Richard M. Stallman <rms@gnu.org>
parents:
5411
diff
changeset
|
575 (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
|
576 |
16620
c3a095290ec4
(isearch-mode): Maybe make minibuffer frame visible and/or raise it.
Richard M. Stallman <rms@gnu.org>
parents:
16566
diff
changeset
|
577 ;; Maybe make minibuffer frame visible and/or raise it. |
c3a095290ec4
(isearch-mode): Maybe make minibuffer frame visible and/or raise it.
Richard M. Stallman <rms@gnu.org>
parents:
16566
diff
changeset
|
578 (let ((frame (window-frame (minibuffer-window)))) |
44472
9d117150b0a2
(isearch-mode): Don't call make-frame-visible
Richard M. Stallman <rms@gnu.org>
parents:
44457
diff
changeset
|
579 (unless (memq (frame-live-p frame) '(nil t)) |
9d117150b0a2
(isearch-mode): Don't call make-frame-visible
Richard M. Stallman <rms@gnu.org>
parents:
44457
diff
changeset
|
580 (unless (frame-visible-p frame) |
9d117150b0a2
(isearch-mode): Don't call make-frame-visible
Richard M. Stallman <rms@gnu.org>
parents:
44457
diff
changeset
|
581 (make-frame-visible frame)) |
9d117150b0a2
(isearch-mode): Don't call make-frame-visible
Richard M. Stallman <rms@gnu.org>
parents:
44457
diff
changeset
|
582 (if minibuffer-auto-raise |
9d117150b0a2
(isearch-mode): Don't call make-frame-visible
Richard M. Stallman <rms@gnu.org>
parents:
44457
diff
changeset
|
583 (raise-frame frame)))) |
16620
c3a095290ec4
(isearch-mode): Maybe make minibuffer frame visible and/or raise it.
Richard M. Stallman <rms@gnu.org>
parents:
16566
diff
changeset
|
584 |
725 | 585 (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
|
586 (force-mode-line-update) |
725 | 587 |
588 (isearch-push-state) | |
589 | |
12265
1d2296cfa1e3
(isearch-mode): Use overriding-terminal-local-map, not overriding-local-map.
Karl Heuer <kwzh@gnu.org>
parents:
12106
diff
changeset
|
590 (setq overriding-terminal-local-map isearch-mode-map) |
725 | 591 (isearch-update) |
592 (run-hooks 'isearch-mode-hook) | |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
593 |
14939
c0e8ab5d23fc
(isearch-mode): Use add-hook for mouse-leave-buffer-hook.
Richard M. Stallman <rms@gnu.org>
parents:
14288
diff
changeset
|
594 (add-hook 'mouse-leave-buffer-hook 'isearch-done) |
35120
ec6003a7be16
(isearch-old-signal-hook): Removed.
Gerd Moellmann <gerd@gnu.org>
parents:
35098
diff
changeset
|
595 (add-hook 'kbd-macro-termination-hook 'isearch-done) |
10257
d530ba7eb471
(isearch-mode): Set mouse-leave-buffer-hook.
Richard M. Stallman <rms@gnu.org>
parents:
10183
diff
changeset
|
596 |
49420
07a876ca33f0
(isearch-forward): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
49069
diff
changeset
|
597 ;; isearch-mode can be made modal (in the sense of not returning to |
07a876ca33f0
(isearch-forward): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
49069
diff
changeset
|
598 ;; the calling function until searching is completed) by entering |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
599 ;; 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
|
600 (if recursive-edit |
1ea5ec97ae18
(isearch-mode): If enter recursive-edit,
Richard M. Stallman <rms@gnu.org>
parents:
3250
diff
changeset
|
601 (let ((isearch-recursive-edit t)) |
1ea5ec97ae18
(isearch-mode): If enter recursive-edit,
Richard M. Stallman <rms@gnu.org>
parents:
3250
diff
changeset
|
602 (recursive-edit))) |
8663
3f7bd8c32c9a
(isearch-edit-string): In the isearch-recursive-edit case,
Richard M. Stallman <rms@gnu.org>
parents:
8455
diff
changeset
|
603 isearch-success) |
725 | 604 |
605 | |
606 ;; Some high level utilities. Others below. | |
607 | |
608 (defun isearch-update () | |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
609 ;; Called after each command to update the display. |
43129
67d86dad5454
(isearch-update): Don't update display in kbd macro.
Richard M. Stallman <rms@gnu.org>
parents:
42196
diff
changeset
|
610 (if (and (null unread-command-events) |
67d86dad5454
(isearch-update): Don't update display in kbd macro.
Richard M. Stallman <rms@gnu.org>
parents:
42196
diff
changeset
|
611 (null executing-kbd-macro)) |
725 | 612 (progn |
35362
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
613 (if (not (input-pending-p)) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
614 (isearch-message)) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
615 (if (and isearch-slow-terminal-mode |
49420
07a876ca33f0
(isearch-forward): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
49069
diff
changeset
|
616 (not (or isearch-small-window |
35362
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
617 (pos-visible-in-window-p)))) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
618 (let ((found-point (point))) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
619 (setq isearch-small-window t) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
620 (move-to-window-line 0) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
621 (let ((window-min-height 1)) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
622 (split-window nil (if (< search-slow-window-lines 0) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
623 (1+ (- search-slow-window-lines)) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
624 (- (window-height) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
625 (1+ search-slow-window-lines))))) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
626 (if (< search-slow-window-lines 0) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
627 (progn (vertical-motion (- 1 search-slow-window-lines)) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
628 (set-window-start (next-window) (point)) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
629 (set-window-hscroll (next-window) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
630 (window-hscroll)) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
631 (set-window-hscroll (selected-window) 0)) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
632 (other-window 1)) |
42067
f38a270798ca
(isearch-start-hscroll): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
42066
diff
changeset
|
633 (goto-char found-point)) |
f38a270798ca
(isearch-start-hscroll): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
42066
diff
changeset
|
634 ;; Keep same hscrolling as at the start of the search when possible |
f38a270798ca
(isearch-start-hscroll): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
42066
diff
changeset
|
635 (let ((current-scroll (window-hscroll))) |
f38a270798ca
(isearch-start-hscroll): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
42066
diff
changeset
|
636 (set-window-hscroll (selected-window) isearch-start-hscroll) |
f38a270798ca
(isearch-start-hscroll): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
42066
diff
changeset
|
637 (unless (pos-visible-in-window-p) |
f38a270798ca
(isearch-start-hscroll): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
42066
diff
changeset
|
638 (set-window-hscroll (selected-window) current-scroll)))) |
f38a270798ca
(isearch-start-hscroll): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
42066
diff
changeset
|
639 (if isearch-other-end |
35362
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
640 (if (< isearch-other-end (point)) ; isearch-forward? |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
641 (isearch-highlight isearch-other-end (point)) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
642 (isearch-highlight (point) isearch-other-end)) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
643 (isearch-dehighlight nil)) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
644 )) |
725 | 645 (setq ;; quit-flag nil not for isearch-mode |
646 isearch-adjusted nil | |
647 isearch-yank-flag nil) | |
29358
9a6d0cf1e313
(isearch-update): Set disable-point-adjustment to t
Kenichi Handa <handa@m17n.org>
parents:
29325
diff
changeset
|
648 (isearch-lazy-highlight-new-loop) |
9a6d0cf1e313
(isearch-update): Set disable-point-adjustment to t
Kenichi Handa <handa@m17n.org>
parents:
29325
diff
changeset
|
649 ;; We must prevent the point moving to the end of composition when a |
9a6d0cf1e313
(isearch-update): Set disable-point-adjustment to t
Kenichi Handa <handa@m17n.org>
parents:
29325
diff
changeset
|
650 ;; part of the composition has just been searched. |
9a6d0cf1e313
(isearch-update): Set disable-point-adjustment to t
Kenichi Handa <handa@m17n.org>
parents:
29325
diff
changeset
|
651 (setq disable-point-adjustment t)) |
725 | 652 |
8663
3f7bd8c32c9a
(isearch-edit-string): In the isearch-recursive-edit case,
Richard M. Stallman <rms@gnu.org>
parents:
8455
diff
changeset
|
653 (defun isearch-done (&optional nopush edit) |
41755
3b56f11dd4b6
(isearch-resume-enabled): New variable.
Kim F. Storm <storm@cua.dk>
parents:
41648
diff
changeset
|
654 (if isearch-resume-enabled |
3b56f11dd4b6
(isearch-resume-enabled): New variable.
Kim F. Storm <storm@cua.dk>
parents:
41648
diff
changeset
|
655 (let ((command `(isearch-resume ,isearch-string ,isearch-regexp |
3b56f11dd4b6
(isearch-resume-enabled): New variable.
Kim F. Storm <storm@cua.dk>
parents:
41648
diff
changeset
|
656 ,isearch-word ,isearch-forward |
3b56f11dd4b6
(isearch-resume-enabled): New variable.
Kim F. Storm <storm@cua.dk>
parents:
41648
diff
changeset
|
657 ,isearch-message |
3b56f11dd4b6
(isearch-resume-enabled): New variable.
Kim F. Storm <storm@cua.dk>
parents:
41648
diff
changeset
|
658 ',isearch-case-fold-search))) |
3b56f11dd4b6
(isearch-resume-enabled): New variable.
Kim F. Storm <storm@cua.dk>
parents:
41648
diff
changeset
|
659 (unless (equal (car command-history) command) |
3b56f11dd4b6
(isearch-resume-enabled): New variable.
Kim F. Storm <storm@cua.dk>
parents:
41648
diff
changeset
|
660 (setq command-history (cons command command-history))))) |
30476
26fe451fc5f7
(isearch-resume): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29377
diff
changeset
|
661 |
14939
c0e8ab5d23fc
(isearch-mode): Use add-hook for mouse-leave-buffer-hook.
Richard M. Stallman <rms@gnu.org>
parents:
14288
diff
changeset
|
662 (remove-hook 'mouse-leave-buffer-hook 'isearch-done) |
35120
ec6003a7be16
(isearch-old-signal-hook): Removed.
Gerd Moellmann <gerd@gnu.org>
parents:
35098
diff
changeset
|
663 (remove-hook 'kbd-macro-termination-hook 'isearch-done) |
35212
0b2d36d2a4ea
(isearch-done): Set isearch-lazy-highlight-start
Gerd Moellmann <gerd@gnu.org>
parents:
35158
diff
changeset
|
664 (setq isearch-lazy-highlight-start nil) |
0b2d36d2a4ea
(isearch-done): Set isearch-lazy-highlight-start
Gerd Moellmann <gerd@gnu.org>
parents:
35158
diff
changeset
|
665 |
725 | 666 ;; Called by all commands that terminate isearch-mode. |
1184 | 667 ;; 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
|
668 (setq overriding-terminal-local-map nil) |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
669 ;; (setq pre-command-hook isearch-old-pre-command-hook) ; for lemacs |
33725
687b166e4a49
(isearch-original-minibuffer-message-timeout): New var.
Miles Bader <miles@gnu.org>
parents:
33704
diff
changeset
|
670 (setq minibuffer-message-timeout isearch-original-minibuffer-message-timeout) |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
671 (isearch-dehighlight t) |
35012
444b43c38978
Do highlighting of alternative matches all at once,
Richard M. Stallman <rms@gnu.org>
parents:
34603
diff
changeset
|
672 (isearch-lazy-highlight-cleanup isearch-lazy-highlight-cleanup) |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
673 (let ((found-start (window-start (selected-window))) |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
674 (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
|
675 (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
|
676 (set-window-configuration isearch-window-configuration)) |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
677 |
4379
36f6f4b28dde
(isearch-done): Move point (for small window)
Richard M. Stallman <rms@gnu.org>
parents:
4095
diff
changeset
|
678 (if isearch-small-window |
36f6f4b28dde
(isearch-done): Move point (for small window)
Richard M. Stallman <rms@gnu.org>
parents:
4095
diff
changeset
|
679 (goto-char found-point) |
36f6f4b28dde
(isearch-done): Move point (for small window)
Richard M. Stallman <rms@gnu.org>
parents:
4095
diff
changeset
|
680 ;; 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
|
681 (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
|
682 |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
683 ;; If there was movement, mark the starting position. |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
684 ;; Maybe should test difference between and set mark iff > threshold. |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
685 (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
|
686 (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
|
687 (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
|
688 (push-mark isearch-opoint t) |
13682
108ac303b3e5
(isearch-edit-string): Consider the case when
Richard M. Stallman <rms@gnu.org>
parents:
13254
diff
changeset
|
689 (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
|
690 (message "Mark saved where search started")))))) |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
691 |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
692 (setq isearch-mode nil) |
22775
ede5d8c1f929
(isearch-input-method-function): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22704
diff
changeset
|
693 (if isearch-input-method-local-p |
ede5d8c1f929
(isearch-input-method-function): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22704
diff
changeset
|
694 (setq input-method-function isearch-input-method-function) |
ede5d8c1f929
(isearch-input-method-function): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22704
diff
changeset
|
695 (kill-local-variable 'input-method-function)) |
ede5d8c1f929
(isearch-input-method-function): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22704
diff
changeset
|
696 |
11579
28e4495a9e8f
(isearch-mode, isearch-done): Use force-mode-line-update.
Karl Heuer <kwzh@gnu.org>
parents:
11526
diff
changeset
|
697 (force-mode-line-update) |
725 | 698 |
24919
7b31dd5d71bb
(isearch-done): If search ends in middle of intangible
Richard M. Stallman <rms@gnu.org>
parents:
24788
diff
changeset
|
699 ;; If we ended in the middle of some intangible text, |
7b31dd5d71bb
(isearch-done): If search ends in middle of intangible
Richard M. Stallman <rms@gnu.org>
parents:
24788
diff
changeset
|
700 ;; move to the further end of that intangible text. |
7b31dd5d71bb
(isearch-done): If search ends in middle of intangible
Richard M. Stallman <rms@gnu.org>
parents:
24788
diff
changeset
|
701 (let ((after (if (eobp) nil |
7b31dd5d71bb
(isearch-done): If search ends in middle of intangible
Richard M. Stallman <rms@gnu.org>
parents:
24788
diff
changeset
|
702 (get-text-property (point) 'intangible))) |
7b31dd5d71bb
(isearch-done): If search ends in middle of intangible
Richard M. Stallman <rms@gnu.org>
parents:
24788
diff
changeset
|
703 (before (if (bobp) nil |
7b31dd5d71bb
(isearch-done): If search ends in middle of intangible
Richard M. Stallman <rms@gnu.org>
parents:
24788
diff
changeset
|
704 (get-text-property (1- (point)) 'intangible)))) |
7b31dd5d71bb
(isearch-done): If search ends in middle of intangible
Richard M. Stallman <rms@gnu.org>
parents:
24788
diff
changeset
|
705 (when (and before after (eq before after)) |
7b31dd5d71bb
(isearch-done): If search ends in middle of intangible
Richard M. Stallman <rms@gnu.org>
parents:
24788
diff
changeset
|
706 (if isearch-forward |
7b31dd5d71bb
(isearch-done): If search ends in middle of intangible
Richard M. Stallman <rms@gnu.org>
parents:
24788
diff
changeset
|
707 (goto-char (next-single-property-change (point) 'intangible)) |
7b31dd5d71bb
(isearch-done): If search ends in middle of intangible
Richard M. Stallman <rms@gnu.org>
parents:
24788
diff
changeset
|
708 (goto-char (previous-single-property-change (point) 'intangible))))) |
7b31dd5d71bb
(isearch-done): If search ends in middle of intangible
Richard M. Stallman <rms@gnu.org>
parents:
24788
diff
changeset
|
709 |
1184 | 710 (if (and (> (length isearch-string) 0) (not nopush)) |
725 | 711 ;; Update the ring data. |
11100
2ad1ba0ac825
(isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents:
11061
diff
changeset
|
712 (isearch-update-ring isearch-string isearch-regexp)) |
725 | 713 |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
714 (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
|
715 (and (not edit) isearch-recursive-edit (exit-recursive-edit))) |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
716 |
11100
2ad1ba0ac825
(isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents:
11061
diff
changeset
|
717 (defun isearch-update-ring (string &optional regexp) |
2ad1ba0ac825
(isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents:
11061
diff
changeset
|
718 "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
|
719 REGEXP says which ring to use." |
49420
07a876ca33f0
(isearch-forward): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
49069
diff
changeset
|
720 (if regexp |
11100
2ad1ba0ac825
(isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents:
11061
diff
changeset
|
721 (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
|
722 (not (string= string (car regexp-search-ring)))) |
11100
2ad1ba0ac825
(isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents:
11061
diff
changeset
|
723 (progn |
50733
f038a895a805
(isearch-complete1): Don't allocate unnecessarily.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49420
diff
changeset
|
724 (push string regexp-search-ring) |
11100
2ad1ba0ac825
(isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents:
11061
diff
changeset
|
725 (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
|
726 (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
|
727 nil)))) |
2ad1ba0ac825
(isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents:
11061
diff
changeset
|
728 (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
|
729 (not (string= string (car search-ring)))) |
11100
2ad1ba0ac825
(isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents:
11061
diff
changeset
|
730 (progn |
50733
f038a895a805
(isearch-complete1): Don't allocate unnecessarily.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49420
diff
changeset
|
731 (push string search-ring) |
11100
2ad1ba0ac825
(isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents:
11061
diff
changeset
|
732 (if (> (length search-ring) search-ring-max) |
2ad1ba0ac825
(isearch-update-ring): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents:
11061
diff
changeset
|
733 (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
|
734 |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
735 ;; Switching buffers should first terminate isearch-mode. |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
736 ;; ;; For Emacs 19, the frame switch event is handled. |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
737 ;; (defun isearch-switch-frame-handler () |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
738 ;; (interactive) ;; Is this necessary? |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
739 ;; ;; First terminate isearch-mode. |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
740 ;; (isearch-done) |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
741 ;; (isearch-clean-overlays) |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
742 ;; (handle-switch-frame (car (cdr last-command-char)))) |
725 | 743 |
744 | |
56668
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
745 ;; The search status structure and stack. |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
746 |
56867
16f3ec82330a
Remove ancient Change Log section.
Juri Linkov <juri@jurta.org>
parents:
56681
diff
changeset
|
747 (defsubst isearch-string-state (frame) |
56668
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
748 "Return the search string in FRAME." |
56681
1f4ff211cbeb
(isearch-string, isearch-message-string, isearch-point)
Luc Teirlinck <teirllm@auburn.edu>
parents:
56668
diff
changeset
|
749 (aref frame 0)) |
56867
16f3ec82330a
Remove ancient Change Log section.
Juri Linkov <juri@jurta.org>
parents:
56681
diff
changeset
|
750 (defsubst isearch-message-state (frame) |
56668
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
751 "Return the search string to display to the user in FRAME." |
56681
1f4ff211cbeb
(isearch-string, isearch-message-string, isearch-point)
Luc Teirlinck <teirllm@auburn.edu>
parents:
56668
diff
changeset
|
752 (aref frame 1)) |
56867
16f3ec82330a
Remove ancient Change Log section.
Juri Linkov <juri@jurta.org>
parents:
56681
diff
changeset
|
753 (defsubst isearch-point-state (frame) |
56668
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
754 "Return the point in FRAME." |
56681
1f4ff211cbeb
(isearch-string, isearch-message-string, isearch-point)
Luc Teirlinck <teirllm@auburn.edu>
parents:
56668
diff
changeset
|
755 (aref frame 2)) |
56867
16f3ec82330a
Remove ancient Change Log section.
Juri Linkov <juri@jurta.org>
parents:
56681
diff
changeset
|
756 (defsubst isearch-success-state (frame) |
56668
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
757 "Return the success flag in FRAME." |
56681
1f4ff211cbeb
(isearch-string, isearch-message-string, isearch-point)
Luc Teirlinck <teirllm@auburn.edu>
parents:
56668
diff
changeset
|
758 (aref frame 3)) |
56867
16f3ec82330a
Remove ancient Change Log section.
Juri Linkov <juri@jurta.org>
parents:
56681
diff
changeset
|
759 (defsubst isearch-forward-state (frame) |
56668
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
760 "Return the searching-forward flag in FRAME." |
56681
1f4ff211cbeb
(isearch-string, isearch-message-string, isearch-point)
Luc Teirlinck <teirllm@auburn.edu>
parents:
56668
diff
changeset
|
761 (aref frame 4)) |
56867
16f3ec82330a
Remove ancient Change Log section.
Juri Linkov <juri@jurta.org>
parents:
56681
diff
changeset
|
762 (defsubst isearch-other-end-state (frame) |
56668
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
763 "Return the other end of the match in FRAME." |
56681
1f4ff211cbeb
(isearch-string, isearch-message-string, isearch-point)
Luc Teirlinck <teirllm@auburn.edu>
parents:
56668
diff
changeset
|
764 (aref frame 5)) |
56867
16f3ec82330a
Remove ancient Change Log section.
Juri Linkov <juri@jurta.org>
parents:
56681
diff
changeset
|
765 (defsubst isearch-word-state (frame) |
56668
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
766 "Return the search-by-word flag in FRAME." |
56681
1f4ff211cbeb
(isearch-string, isearch-message-string, isearch-point)
Luc Teirlinck <teirllm@auburn.edu>
parents:
56668
diff
changeset
|
767 (aref frame 6)) |
56867
16f3ec82330a
Remove ancient Change Log section.
Juri Linkov <juri@jurta.org>
parents:
56681
diff
changeset
|
768 (defsubst isearch-invalid-regexp-state (frame) |
56668
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
769 "Return the regexp error message in FRAME, or nil if its regexp is valid." |
56681
1f4ff211cbeb
(isearch-string, isearch-message-string, isearch-point)
Luc Teirlinck <teirllm@auburn.edu>
parents:
56668
diff
changeset
|
770 (aref frame 7)) |
56867
16f3ec82330a
Remove ancient Change Log section.
Juri Linkov <juri@jurta.org>
parents:
56681
diff
changeset
|
771 (defsubst isearch-wrapped-state (frame) |
56668
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
772 "Return the search-wrapped flag in FRAME." |
56681
1f4ff211cbeb
(isearch-string, isearch-message-string, isearch-point)
Luc Teirlinck <teirllm@auburn.edu>
parents:
56668
diff
changeset
|
773 (aref frame 8)) |
56867
16f3ec82330a
Remove ancient Change Log section.
Juri Linkov <juri@jurta.org>
parents:
56681
diff
changeset
|
774 (defsubst isearch-barrier-state (frame) |
56668
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
775 "Return the barrier value in FRAME." |
56681
1f4ff211cbeb
(isearch-string, isearch-message-string, isearch-point)
Luc Teirlinck <teirllm@auburn.edu>
parents:
56668
diff
changeset
|
776 (aref frame 9)) |
56867
16f3ec82330a
Remove ancient Change Log section.
Juri Linkov <juri@jurta.org>
parents:
56681
diff
changeset
|
777 (defsubst isearch-within-brackets-state (frame) |
56668
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
778 "Return the in-character-class flag in FRAME." |
56681
1f4ff211cbeb
(isearch-string, isearch-message-string, isearch-point)
Luc Teirlinck <teirllm@auburn.edu>
parents:
56668
diff
changeset
|
779 (aref frame 10)) |
56867
16f3ec82330a
Remove ancient Change Log section.
Juri Linkov <juri@jurta.org>
parents:
56681
diff
changeset
|
780 (defsubst isearch-case-fold-search-state (frame) |
56668
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
781 "Return the case-folding flag in FRAME." |
56681
1f4ff211cbeb
(isearch-string, isearch-message-string, isearch-point)
Luc Teirlinck <teirllm@auburn.edu>
parents:
56668
diff
changeset
|
782 (aref frame 11)) |
56868
bec9907cc422
* isearch.el (isearch-wrap-function)
Juri Linkov <juri@jurta.org>
parents:
56867
diff
changeset
|
783 (defsubst isearch-pop-fun-state (frame) |
bec9907cc422
* isearch.el (isearch-wrap-function)
Juri Linkov <juri@jurta.org>
parents:
56867
diff
changeset
|
784 "Return the function restoring the mode-specific isearch state in FRAME." |
bec9907cc422
* isearch.el (isearch-wrap-function)
Juri Linkov <juri@jurta.org>
parents:
56867
diff
changeset
|
785 (aref frame 12)) |
56668
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
786 |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
787 (defun isearch-top-state () |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
788 (let ((cmd (car isearch-cmds))) |
56867
16f3ec82330a
Remove ancient Change Log section.
Juri Linkov <juri@jurta.org>
parents:
56681
diff
changeset
|
789 (setq isearch-string (isearch-string-state cmd) |
16f3ec82330a
Remove ancient Change Log section.
Juri Linkov <juri@jurta.org>
parents:
56681
diff
changeset
|
790 isearch-message (isearch-message-state cmd) |
16f3ec82330a
Remove ancient Change Log section.
Juri Linkov <juri@jurta.org>
parents:
56681
diff
changeset
|
791 isearch-success (isearch-success-state cmd) |
16f3ec82330a
Remove ancient Change Log section.
Juri Linkov <juri@jurta.org>
parents:
56681
diff
changeset
|
792 isearch-forward (isearch-forward-state cmd) |
16f3ec82330a
Remove ancient Change Log section.
Juri Linkov <juri@jurta.org>
parents:
56681
diff
changeset
|
793 isearch-other-end (isearch-other-end-state cmd) |
16f3ec82330a
Remove ancient Change Log section.
Juri Linkov <juri@jurta.org>
parents:
56681
diff
changeset
|
794 isearch-word (isearch-word-state cmd) |
16f3ec82330a
Remove ancient Change Log section.
Juri Linkov <juri@jurta.org>
parents:
56681
diff
changeset
|
795 isearch-invalid-regexp (isearch-invalid-regexp-state cmd) |
16f3ec82330a
Remove ancient Change Log section.
Juri Linkov <juri@jurta.org>
parents:
56681
diff
changeset
|
796 isearch-wrapped (isearch-wrapped-state cmd) |
16f3ec82330a
Remove ancient Change Log section.
Juri Linkov <juri@jurta.org>
parents:
56681
diff
changeset
|
797 isearch-barrier (isearch-barrier-state cmd) |
16f3ec82330a
Remove ancient Change Log section.
Juri Linkov <juri@jurta.org>
parents:
56681
diff
changeset
|
798 isearch-within-brackets (isearch-within-brackets-state cmd) |
16f3ec82330a
Remove ancient Change Log section.
Juri Linkov <juri@jurta.org>
parents:
56681
diff
changeset
|
799 isearch-case-fold-search (isearch-case-fold-search-state cmd)) |
56868
bec9907cc422
* isearch.el (isearch-wrap-function)
Juri Linkov <juri@jurta.org>
parents:
56867
diff
changeset
|
800 (if (functionp (isearch-pop-fun-state cmd)) |
bec9907cc422
* isearch.el (isearch-wrap-function)
Juri Linkov <juri@jurta.org>
parents:
56867
diff
changeset
|
801 (funcall (isearch-pop-fun-state cmd) cmd)) |
56867
16f3ec82330a
Remove ancient Change Log section.
Juri Linkov <juri@jurta.org>
parents:
56681
diff
changeset
|
802 (goto-char (isearch-point-state cmd)))) |
56668
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
803 |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
804 (defun isearch-pop-state () |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
805 (setq isearch-cmds (cdr isearch-cmds)) |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
806 (isearch-top-state)) |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
807 |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
808 (defun isearch-push-state () |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
809 (setq isearch-cmds |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
810 (cons (vector isearch-string isearch-message (point) |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
811 isearch-success isearch-forward isearch-other-end |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
812 isearch-word |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
813 isearch-invalid-regexp isearch-wrapped isearch-barrier |
56868
bec9907cc422
* isearch.el (isearch-wrap-function)
Juri Linkov <juri@jurta.org>
parents:
56867
diff
changeset
|
814 isearch-within-brackets isearch-case-fold-search |
bec9907cc422
* isearch.el (isearch-wrap-function)
Juri Linkov <juri@jurta.org>
parents:
56867
diff
changeset
|
815 (if isearch-push-state-function |
bec9907cc422
* isearch.el (isearch-wrap-function)
Juri Linkov <juri@jurta.org>
parents:
56867
diff
changeset
|
816 (funcall isearch-push-state-function))) |
56668
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
817 isearch-cmds))) |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
818 |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
819 |
725 | 820 ;; Commands active while inside of the isearch minor mode. |
821 | |
822 (defun isearch-exit () | |
823 "Exit search normally. | |
824 However, if this is the first command after starting incremental | |
825 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
|
826 nonincremental search instead via `isearch-edit-string'." |
725 | 827 (interactive) |
49420
07a876ca33f0
(isearch-forward): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
49069
diff
changeset
|
828 (if (and search-nonincremental-instead |
725 | 829 (= 0 (length isearch-string))) |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
830 (let ((isearch-nonincremental t)) |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
831 (isearch-edit-string))) |
18236
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
832 (isearch-done) |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
833 (isearch-clean-overlays)) |
725 | 834 |
835 | |
836 (defun isearch-edit-string () | |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
837 "Edit the search string in the minibuffer. |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
838 The following additional command keys are active while editing. |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
839 \\<minibuffer-local-isearch-map> |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
840 \\[exit-minibuffer] to resume incremental searching with the edited string. |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
841 \\[isearch-nonincremental-exit-minibuffer] to do one nonincremental search. |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
842 \\[isearch-forward-exit-minibuffer] to resume isearching forward. |
7378 | 843 \\[isearch-reverse-exit-minibuffer] to resume isearching backward. |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
844 \\[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
|
845 \\[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
|
846 \\[isearch-complete-edit] to complete the search string using the search ring. |
7378 | 847 \\<isearch-mode-map> |
56303
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
848 If first char entered is \\[isearch-yank-word-or-char], then do word search instead." |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
849 |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
850 ;; 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
|
851 ;; 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
|
852 ;; 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
|
853 ;; this could be simplified greatly. |
3591
507f64624555
Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents:
3526
diff
changeset
|
854 ;; Editing doesn't back up the search point. Should it? |
725 | 855 (interactive) |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
856 (condition-case err |
16737
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
857 (progn |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
858 (let ((isearch-nonincremental isearch-nonincremental) |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
859 |
16737
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
860 ;; Locally bind all isearch global variables to protect them |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
861 ;; from recursive isearching. |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
862 ;; isearch-string -message and -forward are not bound |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
863 ;; so they may be changed. Instead, save the values. |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
864 (isearch-new-string isearch-string) |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
865 (isearch-new-message isearch-message) |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
866 (isearch-new-forward isearch-forward) |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
867 (isearch-new-word isearch-word) |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
868 |
16737
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
869 (isearch-regexp isearch-regexp) |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
870 (isearch-op-fun isearch-op-fun) |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
871 (isearch-cmds isearch-cmds) |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
872 (isearch-success isearch-success) |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
873 (isearch-wrapped isearch-wrapped) |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
874 (isearch-barrier isearch-barrier) |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
875 (isearch-adjusted isearch-adjusted) |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
876 (isearch-yank-flag isearch-yank-flag) |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
877 (isearch-invalid-regexp isearch-invalid-regexp) |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
878 (isearch-within-brackets isearch-within-brackets) |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
879 ;;; Don't bind this. We want isearch-search, below, to set it. |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
880 ;;; And the old value won't matter after that. |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
881 ;;; (isearch-other-end isearch-other-end) |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
882 ;;; Perhaps some of these other variables should be bound for a |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
883 ;;; shorter period, ending before the next isearch-search. |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
884 ;;; But there doesn't seem to be a real bug, so let's not risk it now. |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
885 (isearch-opoint isearch-opoint) |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
886 (isearch-slow-terminal-mode isearch-slow-terminal-mode) |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
887 (isearch-small-window isearch-small-window) |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
888 (isearch-recursive-edit isearch-recursive-edit) |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
889 ;; Save current configuration so we can restore it here. |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
890 (isearch-window-configuration (current-window-configuration)) |
33725
687b166e4a49
(isearch-original-minibuffer-message-timeout): New var.
Miles Bader <miles@gnu.org>
parents:
33704
diff
changeset
|
891 |
687b166e4a49
(isearch-original-minibuffer-message-timeout): New var.
Miles Bader <miles@gnu.org>
parents:
33704
diff
changeset
|
892 ;; Temporarily restore `minibuffer-message-timeout'. |
687b166e4a49
(isearch-original-minibuffer-message-timeout): New var.
Miles Bader <miles@gnu.org>
parents:
33704
diff
changeset
|
893 (minibuffer-message-timeout |
687b166e4a49
(isearch-original-minibuffer-message-timeout): New var.
Miles Bader <miles@gnu.org>
parents:
33704
diff
changeset
|
894 isearch-original-minibuffer-message-timeout) |
687b166e4a49
(isearch-original-minibuffer-message-timeout): New var.
Miles Bader <miles@gnu.org>
parents:
33704
diff
changeset
|
895 (isearch-original-minibuffer-message-timeout |
687b166e4a49
(isearch-original-minibuffer-message-timeout): New var.
Miles Bader <miles@gnu.org>
parents:
33704
diff
changeset
|
896 isearch-original-minibuffer-message-timeout) |
16737
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
897 ) |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
898 |
16737
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
899 ;; Actually terminate isearching until editing is done. |
49420
07a876ca33f0
(isearch-forward): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
49069
diff
changeset
|
900 ;; This is so that the user can do anything without failure, |
16737
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
901 ;; like switch buffers and start another isearch, and return. |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
902 (condition-case err |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
903 (isearch-done t t) |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
904 (exit nil)) ; was recursive editing |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
905 |
16737
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
906 (isearch-message) ;; for read-char |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
907 (unwind-protect |
49420
07a876ca33f0
(isearch-forward): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
49069
diff
changeset
|
908 (let* (;; Why does following read-char echo? |
16737
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
909 ;;(echo-keystrokes 0) ;; not needed with above message |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
910 (e (let ((cursor-in-echo-area t)) |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
911 (read-event))) |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
912 ;; Binding minibuffer-history-symbol to nil is a work-around |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
913 ;; for some incompatibility with gmhist. |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
914 (minibuffer-history-symbol) |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
915 (message-log-max nil)) |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
916 ;; If the first character the user types when we prompt them |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
917 ;; for a string is the yank-word character, then go into |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
918 ;; word-search mode. Otherwise unread that character and |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
919 ;; read a key the normal way. |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
920 ;; Word search does not apply (yet) to regexp searches, |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
921 ;; no check is made here. |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
922 (message (isearch-message-prefix nil nil t)) |
42066 | 923 (if (memq (lookup-key isearch-mode-map (vector e)) |
924 '(isearch-yank-word | |
925 isearch-yank-word-or-char)) | |
16737
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
926 (setq isearch-word t;; so message-prefix is right |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
927 isearch-new-word t) |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
928 (cancel-kbd-macro-events) |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
929 (isearch-unread e)) |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
930 (setq cursor-in-echo-area nil) |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
931 (setq isearch-new-string |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
932 (let (junk-ring) |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
933 (read-from-minibuffer |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
934 (isearch-message-prefix nil nil isearch-nonincremental) |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
935 isearch-string |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
936 minibuffer-local-isearch-map nil |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
937 'junk-ring)) |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
938 isearch-new-message |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
939 (mapconcat 'isearch-text-char-description |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
940 isearch-new-string ""))) |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
941 ;; Always resume isearching by restarting it. |
49420
07a876ca33f0
(isearch-forward): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
49069
diff
changeset
|
942 (isearch-mode isearch-forward |
07a876ca33f0
(isearch-forward): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
49069
diff
changeset
|
943 isearch-regexp |
07a876ca33f0
(isearch-forward): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
49069
diff
changeset
|
944 isearch-op-fun |
16737
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
945 nil |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
946 isearch-word) |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
947 |
16737
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
948 ;; Copy new local values to isearch globals |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
949 (setq isearch-string isearch-new-string |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
950 isearch-message isearch-new-message |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
951 isearch-forward isearch-new-forward |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
952 isearch-word isearch-new-word)) |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
953 |
16737
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
954 ;; Empty isearch-string means use default. |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
955 (if (= 0 (length isearch-string)) |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
956 (setq isearch-string (or (car (if isearch-regexp |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
957 regexp-search-ring |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
958 search-ring)) |
42093
a2dac1893064
(isearch-edit-string): When we set isearch-string
Richard M. Stallman <rms@gnu.org>
parents:
42067
diff
changeset
|
959 "") |
a2dac1893064
(isearch-edit-string): When we set isearch-string
Richard M. Stallman <rms@gnu.org>
parents:
42067
diff
changeset
|
960 |
a2dac1893064
(isearch-edit-string): When we set isearch-string
Richard M. Stallman <rms@gnu.org>
parents:
42067
diff
changeset
|
961 isearch-message |
a2dac1893064
(isearch-edit-string): When we set isearch-string
Richard M. Stallman <rms@gnu.org>
parents:
42067
diff
changeset
|
962 (mapconcat 'isearch-text-char-description |
a2dac1893064
(isearch-edit-string): When we set isearch-string
Richard M. Stallman <rms@gnu.org>
parents:
42067
diff
changeset
|
963 isearch-string "")) |
16737
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
964 ;; This used to set the last search string, |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
965 ;; but I think it is not right to do that here. |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
966 ;; Only the string actually used should be saved. |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
967 )) |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
968 |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
969 ;; Push the state as of before this C-s. |
f93f805e86da
(isearch-edit-string): When we try the search
Richard M. Stallman <rms@gnu.org>
parents:
16711
diff
changeset
|
970 (isearch-push-state) |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
971 |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
972 ;; Reinvoke the pending search. |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
973 (isearch-search) |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
974 (isearch-update) |
49420
07a876ca33f0
(isearch-forward): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
49069
diff
changeset
|
975 (if isearch-nonincremental |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
976 (progn |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
977 ;; (sit-for 1) ;; needed if isearch-done does: (message "") |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
978 (isearch-done)))) |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
979 |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
980 (quit ; handle abort-recursive-edit |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
981 (isearch-abort) ;; outside of let to restore outside global values |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
982 ))) |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
983 |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
984 (defun isearch-nonincremental-exit-minibuffer () |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
985 (interactive) |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
986 (setq isearch-nonincremental t) |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
987 (exit-minibuffer)) |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
988 |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
989 (defun isearch-forward-exit-minibuffer () |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
990 (interactive) |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
991 (setq isearch-new-forward t) |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
992 (exit-minibuffer)) |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
993 |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
994 (defun isearch-reverse-exit-minibuffer () |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
995 (interactive) |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
996 (setq isearch-new-forward nil) |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
997 (exit-minibuffer)) |
725 | 998 |
10117
413a1fd0f7c4
(isearch-cancel): New function.
Richard M. Stallman <rms@gnu.org>
parents:
9940
diff
changeset
|
999 (defun isearch-cancel () |
413a1fd0f7c4
(isearch-cancel): New function.
Richard M. Stallman <rms@gnu.org>
parents:
9940
diff
changeset
|
1000 "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
|
1001 (interactive) |
56868
bec9907cc422
* isearch.el (isearch-wrap-function)
Juri Linkov <juri@jurta.org>
parents:
56867
diff
changeset
|
1002 (if (functionp (isearch-pop-fun-state (car (last isearch-cmds)))) |
bec9907cc422
* isearch.el (isearch-wrap-function)
Juri Linkov <juri@jurta.org>
parents:
56867
diff
changeset
|
1003 (funcall (isearch-pop-fun-state (car (last isearch-cmds))) |
bec9907cc422
* isearch.el (isearch-wrap-function)
Juri Linkov <juri@jurta.org>
parents:
56867
diff
changeset
|
1004 (car (last isearch-cmds)))) |
10117
413a1fd0f7c4
(isearch-cancel): New function.
Richard M. Stallman <rms@gnu.org>
parents:
9940
diff
changeset
|
1005 (goto-char isearch-opoint) |
56868
bec9907cc422
* isearch.el (isearch-wrap-function)
Juri Linkov <juri@jurta.org>
parents:
56867
diff
changeset
|
1006 (isearch-done t) ; exit isearch |
18236
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
1007 (isearch-clean-overlays) |
56868
bec9907cc422
* isearch.el (isearch-wrap-function)
Juri Linkov <juri@jurta.org>
parents:
56867
diff
changeset
|
1008 (signal 'quit nil)) ; and pass on quit signal |
725 | 1009 |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1010 (defun isearch-abort () |
13991
0297cd54b530
(isearch-abort, isearch-no-upper-case-p): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents:
13799
diff
changeset
|
1011 "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
|
1012 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
|
1013 Use `isearch-exit' to quit without signaling." |
725 | 1014 (interactive) |
3591
507f64624555
Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents:
3526
diff
changeset
|
1015 ;; (ding) signal instead below, if quitting |
725 | 1016 (discard-input) |
1017 (if isearch-success | |
1018 ;; If search is successful, move back to starting point | |
1019 ;; and really do quit. | |
56868
bec9907cc422
* isearch.el (isearch-wrap-function)
Juri Linkov <juri@jurta.org>
parents:
56867
diff
changeset
|
1020 (progn |
bec9907cc422
* isearch.el (isearch-wrap-function)
Juri Linkov <juri@jurta.org>
parents:
56867
diff
changeset
|
1021 (setq isearch-success nil) |
bec9907cc422
* isearch.el (isearch-wrap-function)
Juri Linkov <juri@jurta.org>
parents:
56867
diff
changeset
|
1022 (isearch-cancel)) |
11061
2f41090c58b3
(isearch-abort): Treat "incomplete regexp"
Richard M. Stallman <rms@gnu.org>
parents:
11046
diff
changeset
|
1023 ;; 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
|
1024 ;; rub out until it is once more successful. |
2f41090c58b3
(isearch-abort): Treat "incomplete regexp"
Richard M. Stallman <rms@gnu.org>
parents:
11046
diff
changeset
|
1025 (while (or (not isearch-success) isearch-invalid-regexp) |
2f41090c58b3
(isearch-abort): Treat "incomplete regexp"
Richard M. Stallman <rms@gnu.org>
parents:
11046
diff
changeset
|
1026 (isearch-pop-state)) |
725 | 1027 (isearch-update))) |
1028 | |
1029 (defun isearch-repeat (direction) | |
1030 ;; Utility for isearch-repeat-forward and -backward. | |
1031 (if (eq isearch-forward (eq direction 'forward)) | |
1032 ;; C-s in forward or C-r in reverse. | |
1033 (if (equal isearch-string "") | |
1034 ;; If search string is empty, use last one. | |
1035 (setq isearch-string | |
1036 (or (if isearch-regexp | |
1146
02b2f761f9df
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1143
diff
changeset
|
1037 (car regexp-search-ring) |
02b2f761f9df
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1143
diff
changeset
|
1038 (car search-ring)) |
49069
50db4854d2eb
(isearch-repeat): Error if try to repeat search and there was no previou search.
Richard M. Stallman <rms@gnu.org>
parents:
48775
diff
changeset
|
1039 (error "No previous search string")) |
725 | 1040 isearch-message |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1041 (mapconcat 'isearch-text-char-description |
39555
8f03c11f64ef
(isearch-last-case-fold-search): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
39256
diff
changeset
|
1042 isearch-string "") |
8f03c11f64ef
(isearch-last-case-fold-search): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
39256
diff
changeset
|
1043 isearch-case-fold-search isearch-last-case-fold-search) |
725 | 1044 ;; If already have what to search for, repeat it. |
1045 (or isearch-success | |
33704
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
1046 (progn |
56868
bec9907cc422
* isearch.el (isearch-wrap-function)
Juri Linkov <juri@jurta.org>
parents:
56867
diff
changeset
|
1047 (if isearch-wrap-function |
bec9907cc422
* isearch.el (isearch-wrap-function)
Juri Linkov <juri@jurta.org>
parents:
56867
diff
changeset
|
1048 (funcall isearch-wrap-function) |
bec9907cc422
* isearch.el (isearch-wrap-function)
Juri Linkov <juri@jurta.org>
parents:
56867
diff
changeset
|
1049 (goto-char (if isearch-forward (point-min) (point-max)))) |
725 | 1050 (setq isearch-wrapped t)))) |
1051 ;; C-s in reverse or C-r in forward, change direction. | |
1052 (setq isearch-forward (not isearch-forward))) | |
1053 | |
1054 (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
|
1055 |
c002b55b9cac
(isearch-repeat): If we matched a null string and there's
Richard M. Stallman <rms@gnu.org>
parents:
5344
diff
changeset
|
1056 (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
|
1057 (setq isearch-success t) |
56170
b3821f47a6d4
(isearch-repeat): Avoid testing old match data.
Richard M. Stallman <rms@gnu.org>
parents:
55950
diff
changeset
|
1058 (if (and isearch-success |
b3821f47a6d4
(isearch-repeat): Avoid testing old match data.
Richard M. Stallman <rms@gnu.org>
parents:
55950
diff
changeset
|
1059 (equal (point) isearch-other-end) |
13799
49b7cd70c43c
(isearch-done): Use executing-kbd-macro.
Karl Heuer <kwzh@gnu.org>
parents:
13682
diff
changeset
|
1060 (not isearch-just-started)) |
725 | 1061 ;; If repeating a search that found |
1062 ;; 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
|
1063 (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
|
1064 ;; 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
|
1065 (progn |
c002b55b9cac
(isearch-repeat): If we matched a null string and there's
Richard M. Stallman <rms@gnu.org>
parents:
5344
diff
changeset
|
1066 (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
|
1067 (ding)) |
c002b55b9cac
(isearch-repeat): If we matched a null string and there's
Richard M. Stallman <rms@gnu.org>
parents:
5344
diff
changeset
|
1068 (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
|
1069 (isearch-search)) |
c002b55b9cac
(isearch-repeat): If we matched a null string and there's
Richard M. Stallman <rms@gnu.org>
parents:
5344
diff
changeset
|
1070 (isearch-search))) |
c002b55b9cac
(isearch-repeat): If we matched a null string and there's
Richard M. Stallman <rms@gnu.org>
parents:
5344
diff
changeset
|
1071 |
725 | 1072 (isearch-push-state) |
1073 (isearch-update)) | |
1074 | |
1075 (defun isearch-repeat-forward () | |
1076 "Repeat incremental search forwards." | |
1077 (interactive) | |
1078 (isearch-repeat 'forward)) | |
1079 | |
1080 (defun isearch-repeat-backward () | |
1081 "Repeat incremental search backwards." | |
1082 (interactive) | |
1083 (isearch-repeat 'backward)) | |
1084 | |
1085 (defun isearch-toggle-regexp () | |
1086 "Toggle regexp searching on or off." | |
1087 ;; The status stack is left unchanged. | |
1088 (interactive) | |
1089 (setq isearch-regexp (not isearch-regexp)) | |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1090 (if isearch-regexp (setq isearch-word nil)) |
56905
661d52db56de
(isearch-toggle-regexp): Set `isearch-success' and `isearch-adjusted' to `t'.
Juri Linkov <juri@jurta.org>
parents:
56868
diff
changeset
|
1091 (setq isearch-success t isearch-adjusted t) |
725 | 1092 (isearch-update)) |
1093 | |
7294
4ff0c1e7c8e2
(isearch-case-fold-search): new possible value `yes'
Richard M. Stallman <rms@gnu.org>
parents:
6736
diff
changeset
|
1094 (defun isearch-toggle-case-fold () |
4ff0c1e7c8e2
(isearch-case-fold-search): new possible value `yes'
Richard M. Stallman <rms@gnu.org>
parents:
6736
diff
changeset
|
1095 "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
|
1096 (interactive) |
4ff0c1e7c8e2
(isearch-case-fold-search): new possible value `yes'
Richard M. Stallman <rms@gnu.org>
parents:
6736
diff
changeset
|
1097 (setq isearch-case-fold-search |
4ff0c1e7c8e2
(isearch-case-fold-search): new possible value `yes'
Richard M. Stallman <rms@gnu.org>
parents:
6736
diff
changeset
|
1098 (if isearch-case-fold-search nil 'yes)) |
10397
8fe0c72ba336
(isearch-edit-string): Disable message logging.
Karl Heuer <kwzh@gnu.org>
parents:
10257
diff
changeset
|
1099 (let ((message-log-max nil)) |
8fe0c72ba336
(isearch-edit-string): Disable message logging.
Karl Heuer <kwzh@gnu.org>
parents:
10257
diff
changeset
|
1100 (message "%s%s [case %ssensitive]" |
8fe0c72ba336
(isearch-edit-string): Disable message logging.
Karl Heuer <kwzh@gnu.org>
parents:
10257
diff
changeset
|
1101 (isearch-message-prefix nil nil isearch-nonincremental) |
8fe0c72ba336
(isearch-edit-string): Disable message logging.
Karl Heuer <kwzh@gnu.org>
parents:
10257
diff
changeset
|
1102 isearch-message |
8fe0c72ba336
(isearch-edit-string): Disable message logging.
Karl Heuer <kwzh@gnu.org>
parents:
10257
diff
changeset
|
1103 (if isearch-case-fold-search "in" ""))) |
56905
661d52db56de
(isearch-toggle-regexp): Set `isearch-success' and `isearch-adjusted' to `t'.
Juri Linkov <juri@jurta.org>
parents:
56868
diff
changeset
|
1104 (setq isearch-success t isearch-adjusted t) |
7294
4ff0c1e7c8e2
(isearch-case-fold-search): new possible value `yes'
Richard M. Stallman <rms@gnu.org>
parents:
6736
diff
changeset
|
1105 (sit-for 1) |
4ff0c1e7c8e2
(isearch-case-fold-search): new possible value `yes'
Richard M. Stallman <rms@gnu.org>
parents:
6736
diff
changeset
|
1106 (isearch-update)) |
4ff0c1e7c8e2
(isearch-case-fold-search): new possible value `yes'
Richard M. Stallman <rms@gnu.org>
parents:
6736
diff
changeset
|
1107 |
56905
661d52db56de
(isearch-toggle-regexp): Set `isearch-success' and `isearch-adjusted' to `t'.
Juri Linkov <juri@jurta.org>
parents:
56868
diff
changeset
|
1108 (defun isearch-query-replace (&optional regexp-flag) |
56303
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
1109 "Start query-replace with string to replace from last search string." |
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
1110 (interactive) |
56352
f0e5e08dd63e
(isearch-query-replace): Pass the regexp-ness and delimited-ness of
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56349
diff
changeset
|
1111 (barf-if-buffer-read-only) |
56905
661d52db56de
(isearch-toggle-regexp): Set `isearch-success' and `isearch-adjusted' to `t'.
Juri Linkov <juri@jurta.org>
parents:
56868
diff
changeset
|
1112 (if regexp-flag (setq isearch-regexp t)) |
56352
f0e5e08dd63e
(isearch-query-replace): Pass the regexp-ness and delimited-ness of
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56349
diff
changeset
|
1113 (let ((case-fold-search isearch-case-fold-search)) |
56303
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
1114 (isearch-done) |
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
1115 (isearch-clean-overlays) |
56905
661d52db56de
(isearch-toggle-regexp): Set `isearch-success' and `isearch-adjusted' to `t'.
Juri Linkov <juri@jurta.org>
parents:
56868
diff
changeset
|
1116 (if (and (< isearch-other-end (point)) |
661d52db56de
(isearch-toggle-regexp): Set `isearch-success' and `isearch-adjusted' to `t'.
Juri Linkov <juri@jurta.org>
parents:
56868
diff
changeset
|
1117 (not (and transient-mark-mode mark-active |
661d52db56de
(isearch-toggle-regexp): Set `isearch-success' and `isearch-adjusted' to `t'.
Juri Linkov <juri@jurta.org>
parents:
56868
diff
changeset
|
1118 (< isearch-opoint (point))))) |
661d52db56de
(isearch-toggle-regexp): Set `isearch-success' and `isearch-adjusted' to `t'.
Juri Linkov <juri@jurta.org>
parents:
56868
diff
changeset
|
1119 (goto-char isearch-other-end)) |
661d52db56de
(isearch-toggle-regexp): Set `isearch-success' and `isearch-adjusted' to `t'.
Juri Linkov <juri@jurta.org>
parents:
56868
diff
changeset
|
1120 (set query-replace-from-history-variable |
661d52db56de
(isearch-toggle-regexp): Set `isearch-success' and `isearch-adjusted' to `t'.
Juri Linkov <juri@jurta.org>
parents:
56868
diff
changeset
|
1121 (cons isearch-string |
661d52db56de
(isearch-toggle-regexp): Set `isearch-success' and `isearch-adjusted' to `t'.
Juri Linkov <juri@jurta.org>
parents:
56868
diff
changeset
|
1122 (symbol-value query-replace-from-history-variable))) |
56352
f0e5e08dd63e
(isearch-query-replace): Pass the regexp-ness and delimited-ness of
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56349
diff
changeset
|
1123 (perform-replace |
f0e5e08dd63e
(isearch-query-replace): Pass the regexp-ness and delimited-ness of
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56349
diff
changeset
|
1124 isearch-string |
56905
661d52db56de
(isearch-toggle-regexp): Set `isearch-success' and `isearch-adjusted' to `t'.
Juri Linkov <juri@jurta.org>
parents:
56868
diff
changeset
|
1125 (query-replace-read-to |
661d52db56de
(isearch-toggle-regexp): Set `isearch-success' and `isearch-adjusted' to `t'.
Juri Linkov <juri@jurta.org>
parents:
56868
diff
changeset
|
1126 isearch-string |
661d52db56de
(isearch-toggle-regexp): Set `isearch-success' and `isearch-adjusted' to `t'.
Juri Linkov <juri@jurta.org>
parents:
56868
diff
changeset
|
1127 (if isearch-regexp "Query replace regexp" "Query replace") |
661d52db56de
(isearch-toggle-regexp): Set `isearch-success' and `isearch-adjusted' to `t'.
Juri Linkov <juri@jurta.org>
parents:
56868
diff
changeset
|
1128 isearch-regexp) |
661d52db56de
(isearch-toggle-regexp): Set `isearch-success' and `isearch-adjusted' to `t'.
Juri Linkov <juri@jurta.org>
parents:
56868
diff
changeset
|
1129 t isearch-regexp isearch-word nil nil |
661d52db56de
(isearch-toggle-regexp): Set `isearch-success' and `isearch-adjusted' to `t'.
Juri Linkov <juri@jurta.org>
parents:
56868
diff
changeset
|
1130 (if (and transient-mark-mode mark-active) (region-beginning)) |
661d52db56de
(isearch-toggle-regexp): Set `isearch-success' and `isearch-adjusted' to `t'.
Juri Linkov <juri@jurta.org>
parents:
56868
diff
changeset
|
1131 (if (and transient-mark-mode mark-active) (region-end))))) |
56303
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
1132 |
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
1133 (defun isearch-query-replace-regexp () |
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
1134 "Start query-replace-regexp with string to replace from last search string." |
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
1135 (interactive) |
56905
661d52db56de
(isearch-toggle-regexp): Set `isearch-success' and `isearch-adjusted' to `t'.
Juri Linkov <juri@jurta.org>
parents:
56868
diff
changeset
|
1136 (isearch-query-replace t)) |
56303
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
1137 |
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
1138 |
725 | 1139 (defun isearch-delete-char () |
41801
1649eae224df
Remove unnecessary spaces in doc-string.
Pavel Janík <Pavel@Janik.cz>
parents:
41755
diff
changeset
|
1140 "Discard last input item and move point back. |
725 | 1141 If no previous match was done, just beep." |
1142 (interactive) | |
1143 (if (null (cdr isearch-cmds)) | |
1144 (ding) | |
1145 (isearch-pop-state)) | |
1146 (isearch-update)) | |
1147 | |
56303
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
1148 (defun isearch-del-char (&optional arg) |
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
1149 "Delete character from end of search string and search again. |
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
1150 If search string is empty, just beep." |
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
1151 (interactive "p") |
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
1152 (if (= 0 (length isearch-string)) |
55226
e3dae0e8c99e
(isearch-mode-map): Bind \C-w to isearch-yank-word instead of isearch-yank-word-or-char.
Juri Linkov <juri@jurta.org>
parents:
54256
diff
changeset
|
1153 (ding) |
56303
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
1154 (setq isearch-string (substring isearch-string 0 (- (or arg 1))) |
55226
e3dae0e8c99e
(isearch-mode-map): Bind \C-w to isearch-yank-word instead of isearch-yank-word-or-char.
Juri Linkov <juri@jurta.org>
parents:
54256
diff
changeset
|
1155 isearch-message (mapconcat 'isearch-text-char-description |
56303
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
1156 isearch-string "") |
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
1157 ;; Don't move cursor in reverse search. |
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
1158 isearch-yank-flag t)) |
55226
e3dae0e8c99e
(isearch-mode-map): Bind \C-w to isearch-yank-word instead of isearch-yank-word-or-char.
Juri Linkov <juri@jurta.org>
parents:
54256
diff
changeset
|
1159 (isearch-search-and-update)) |
725 | 1160 |
20275
0e102e83c51d
(isearch-yank-string): New helper function.
Karl Heuer <kwzh@gnu.org>
parents:
20056
diff
changeset
|
1161 (defun isearch-yank-string (string) |
0e102e83c51d
(isearch-yank-string): New helper function.
Karl Heuer <kwzh@gnu.org>
parents:
20056
diff
changeset
|
1162 "Pull STRING into search string." |
0e102e83c51d
(isearch-yank-string): New helper function.
Karl Heuer <kwzh@gnu.org>
parents:
20056
diff
changeset
|
1163 ;; Downcase the string if not supposed to case-fold yanked strings. |
0e102e83c51d
(isearch-yank-string): New helper function.
Karl Heuer <kwzh@gnu.org>
parents:
20056
diff
changeset
|
1164 (if (and isearch-case-fold-search |
0e102e83c51d
(isearch-yank-string): New helper function.
Karl Heuer <kwzh@gnu.org>
parents:
20056
diff
changeset
|
1165 (eq 'not-yanks search-upper-case)) |
0e102e83c51d
(isearch-yank-string): New helper function.
Karl Heuer <kwzh@gnu.org>
parents:
20056
diff
changeset
|
1166 (setq string (downcase string))) |
0e102e83c51d
(isearch-yank-string): New helper function.
Karl Heuer <kwzh@gnu.org>
parents:
20056
diff
changeset
|
1167 (if isearch-regexp (setq string (regexp-quote string))) |
0e102e83c51d
(isearch-yank-string): New helper function.
Karl Heuer <kwzh@gnu.org>
parents:
20056
diff
changeset
|
1168 (setq isearch-string (concat isearch-string string) |
0e102e83c51d
(isearch-yank-string): New helper function.
Karl Heuer <kwzh@gnu.org>
parents:
20056
diff
changeset
|
1169 isearch-message |
0e102e83c51d
(isearch-yank-string): New helper function.
Karl Heuer <kwzh@gnu.org>
parents:
20056
diff
changeset
|
1170 (concat isearch-message |
0e102e83c51d
(isearch-yank-string): New helper function.
Karl Heuer <kwzh@gnu.org>
parents:
20056
diff
changeset
|
1171 (mapconcat 'isearch-text-char-description |
0e102e83c51d
(isearch-yank-string): New helper function.
Karl Heuer <kwzh@gnu.org>
parents:
20056
diff
changeset
|
1172 string "")) |
0e102e83c51d
(isearch-yank-string): New helper function.
Karl Heuer <kwzh@gnu.org>
parents:
20056
diff
changeset
|
1173 ;; Don't move cursor in reverse search. |
0e102e83c51d
(isearch-yank-string): New helper function.
Karl Heuer <kwzh@gnu.org>
parents:
20056
diff
changeset
|
1174 isearch-yank-flag t) |
725 | 1175 (isearch-search-and-update)) |
1176 | |
4876
8ddcaee25a73
(isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents:
4840
diff
changeset
|
1177 (defun isearch-yank-kill () |
8ddcaee25a73
(isearch-yank): Handle `kill' as chunk type.
Richard M. Stallman <rms@gnu.org>
parents:
4840
diff
changeset
|
1178 "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
|
1179 (interactive) |
20275
0e102e83c51d
(isearch-yank-string): New helper function.
Karl Heuer <kwzh@gnu.org>
parents:
20056
diff
changeset
|
1180 (isearch-yank-string (current-kill 0))) |
0e102e83c51d
(isearch-yank-string): New helper function.
Karl Heuer <kwzh@gnu.org>
parents:
20056
diff
changeset
|
1181 |
0e102e83c51d
(isearch-yank-string): New helper function.
Karl Heuer <kwzh@gnu.org>
parents:
20056
diff
changeset
|
1182 (defun isearch-yank-x-selection () |
25823
4cecefebde6f
(isearch): Add :links in defgroup.
Dave Love <fx@gnu.org>
parents:
25644
diff
changeset
|
1183 "Pull current X selection into search string." |
20275
0e102e83c51d
(isearch-yank-string): New helper function.
Karl Heuer <kwzh@gnu.org>
parents:
20056
diff
changeset
|
1184 (interactive) |
0e102e83c51d
(isearch-yank-string): New helper function.
Karl Heuer <kwzh@gnu.org>
parents:
20056
diff
changeset
|
1185 (isearch-yank-string (x-get-selection))) |
725 | 1186 |
39047
d177c68813c0
(isearch-mouse-2): Renamed from isearch-mouse-yank.
Gerd Moellmann <gerd@gnu.org>
parents:
38778
diff
changeset
|
1187 |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
1188 (defun isearch-mouse-2 (click) |
39047
d177c68813c0
(isearch-mouse-2): Renamed from isearch-mouse-yank.
Gerd Moellmann <gerd@gnu.org>
parents:
38778
diff
changeset
|
1189 "Handle mouse-2 in Isearch mode. |
25823
4cecefebde6f
(isearch): Add :links in defgroup.
Dave Love <fx@gnu.org>
parents:
25644
diff
changeset
|
1190 For a click in the echo area, invoke `isearch-yank-x-selection'. |
39047
d177c68813c0
(isearch-mouse-2): Renamed from isearch-mouse-yank.
Gerd Moellmann <gerd@gnu.org>
parents:
38778
diff
changeset
|
1191 Otherwise invoke whatever mouse-2 is bound to outside of Isearch." |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
1192 (interactive "e") |
39047
d177c68813c0
(isearch-mouse-2): Renamed from isearch-mouse-yank.
Gerd Moellmann <gerd@gnu.org>
parents:
38778
diff
changeset
|
1193 (let* ((w (posn-window (event-start click))) |
d177c68813c0
(isearch-mouse-2): Renamed from isearch-mouse-yank.
Gerd Moellmann <gerd@gnu.org>
parents:
38778
diff
changeset
|
1194 (overriding-terminal-local-map nil) |
d177c68813c0
(isearch-mouse-2): Renamed from isearch-mouse-yank.
Gerd Moellmann <gerd@gnu.org>
parents:
38778
diff
changeset
|
1195 (key (vector (event-basic-type click))) |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
1196 ;; FIXME: `key-binding' should accept an event as argument |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
1197 ;; and do all the overlay/text-properties lookup etc... |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
1198 (binding (with-current-buffer |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
1199 (if (window-live-p w) (window-buffer w) (current-buffer)) |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
1200 (key-binding key)))) |
25823
4cecefebde6f
(isearch): Add :links in defgroup.
Dave Love <fx@gnu.org>
parents:
25644
diff
changeset
|
1201 (if (and (window-minibuffer-p w) |
4cecefebde6f
(isearch): Add :links in defgroup.
Dave Love <fx@gnu.org>
parents:
25644
diff
changeset
|
1202 (not (minibuffer-window-active-p w))) ; in echo area |
4cecefebde6f
(isearch): Add :links in defgroup.
Dave Love <fx@gnu.org>
parents:
25644
diff
changeset
|
1203 (isearch-yank-x-selection) |
48201
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
1204 (when (functionp binding) |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
1205 (call-interactively binding))))) |
39047
d177c68813c0
(isearch-mouse-2): Renamed from isearch-mouse-yank.
Gerd Moellmann <gerd@gnu.org>
parents:
38778
diff
changeset
|
1206 |
25823
4cecefebde6f
(isearch): Add :links in defgroup.
Dave Love <fx@gnu.org>
parents:
25644
diff
changeset
|
1207 |
41648
42271b6bfe3d
(isearch-yank-internal): New helper function.
Karl Fogel <kfogel@red-bean.com>
parents:
41255
diff
changeset
|
1208 (defun isearch-yank-internal (jumpform) |
42271b6bfe3d
(isearch-yank-internal): New helper function.
Karl Fogel <kfogel@red-bean.com>
parents:
41255
diff
changeset
|
1209 "Pull the text from point to the point reached by JUMPFORM. |
42271b6bfe3d
(isearch-yank-internal): New helper function.
Karl Fogel <kfogel@red-bean.com>
parents:
41255
diff
changeset
|
1210 JUMPFORM is a lambda expression that takes no arguments and returns a |
42271b6bfe3d
(isearch-yank-internal): New helper function.
Karl Fogel <kfogel@red-bean.com>
parents:
41255
diff
changeset
|
1211 buffer position, possibly having moved point to that position. For |
42271b6bfe3d
(isearch-yank-internal): New helper function.
Karl Fogel <kfogel@red-bean.com>
parents:
41255
diff
changeset
|
1212 example, it might move point forward by a word and return point, or it |
42271b6bfe3d
(isearch-yank-internal): New helper function.
Karl Fogel <kfogel@red-bean.com>
parents:
41255
diff
changeset
|
1213 might return the position of the end of the line." |
20275
0e102e83c51d
(isearch-yank-string): New helper function.
Karl Heuer <kwzh@gnu.org>
parents:
20056
diff
changeset
|
1214 (isearch-yank-string |
0e102e83c51d
(isearch-yank-string): New helper function.
Karl Heuer <kwzh@gnu.org>
parents:
20056
diff
changeset
|
1215 (save-excursion |
0e102e83c51d
(isearch-yank-string): New helper function.
Karl Heuer <kwzh@gnu.org>
parents:
20056
diff
changeset
|
1216 (and (not isearch-forward) isearch-other-end |
0e102e83c51d
(isearch-yank-string): New helper function.
Karl Heuer <kwzh@gnu.org>
parents:
20056
diff
changeset
|
1217 (goto-char isearch-other-end)) |
41648
42271b6bfe3d
(isearch-yank-internal): New helper function.
Karl Fogel <kfogel@red-bean.com>
parents:
41255
diff
changeset
|
1218 (buffer-substring-no-properties (point) (funcall jumpform))))) |
42271b6bfe3d
(isearch-yank-internal): New helper function.
Karl Fogel <kfogel@red-bean.com>
parents:
41255
diff
changeset
|
1219 |
56303
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
1220 (defun isearch-yank-char-in-minibuffer (&optional arg) |
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
1221 "Pull next character from buffer into end of search string in minibuffer." |
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
1222 (interactive "p") |
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
1223 (if (eobp) |
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
1224 (insert |
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
1225 (save-excursion |
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
1226 (set-buffer (cadr (buffer-list))) |
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
1227 (buffer-substring-no-properties |
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
1228 (point) (progn (forward-char arg) (point))))) |
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
1229 (forward-char arg))) |
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
1230 |
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
1231 (defun isearch-yank-char (&optional arg) |
55226
e3dae0e8c99e
(isearch-mode-map): Bind \C-w to isearch-yank-word instead of isearch-yank-word-or-char.
Juri Linkov <juri@jurta.org>
parents:
54256
diff
changeset
|
1232 "Pull next character from buffer into search string." |
56303
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
1233 (interactive "p") |
d86ec00a8470
(isearch-mode-map): Bind C-M-w to isearch-del-char,
Juri Linkov <juri@jurta.org>
parents:
56170
diff
changeset
|
1234 (isearch-yank-internal (lambda () (forward-char arg) (point)))) |
41648
42271b6bfe3d
(isearch-yank-internal): New helper function.
Karl Fogel <kfogel@red-bean.com>
parents:
41255
diff
changeset
|
1235 |
41927
c1669b7ec455
(isearch-yank-word-or-char): New function.
Richard M. Stallman <rms@gnu.org>
parents:
41801
diff
changeset
|
1236 (defun isearch-yank-word-or-char () |
c1669b7ec455
(isearch-yank-word-or-char): New function.
Richard M. Stallman <rms@gnu.org>
parents:
41801
diff
changeset
|
1237 "Pull next character or word from buffer into search string." |
c1669b7ec455
(isearch-yank-word-or-char): New function.
Richard M. Stallman <rms@gnu.org>
parents:
41801
diff
changeset
|
1238 (interactive) |
42196
36ab766521c0
(isearch-forward, isearch-edit-string): Make doc
Karl Fogel <kfogel@red-bean.com>
parents:
42093
diff
changeset
|
1239 (isearch-yank-internal |
49420
07a876ca33f0
(isearch-forward): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
49069
diff
changeset
|
1240 (lambda () |
42196
36ab766521c0
(isearch-forward, isearch-edit-string): Make doc
Karl Fogel <kfogel@red-bean.com>
parents:
42093
diff
changeset
|
1241 (if (or (= (char-syntax (or (char-after) 0)) ?w) |
36ab766521c0
(isearch-forward, isearch-edit-string): Make doc
Karl Fogel <kfogel@red-bean.com>
parents:
42093
diff
changeset
|
1242 (= (char-syntax (or (char-after (1+ (point))) 0)) ?w)) |
36ab766521c0
(isearch-forward, isearch-edit-string): Make doc
Karl Fogel <kfogel@red-bean.com>
parents:
42093
diff
changeset
|
1243 (forward-word 1) |
36ab766521c0
(isearch-forward, isearch-edit-string): Make doc
Karl Fogel <kfogel@red-bean.com>
parents:
42093
diff
changeset
|
1244 (forward-char 1)) (point)))) |
41927
c1669b7ec455
(isearch-yank-word-or-char): New function.
Richard M. Stallman <rms@gnu.org>
parents:
41801
diff
changeset
|
1245 |
41648
42271b6bfe3d
(isearch-yank-internal): New helper function.
Karl Fogel <kfogel@red-bean.com>
parents:
41255
diff
changeset
|
1246 (defun isearch-yank-word () |
42271b6bfe3d
(isearch-yank-internal): New helper function.
Karl Fogel <kfogel@red-bean.com>
parents:
41255
diff
changeset
|
1247 "Pull next word from buffer into search string." |
42271b6bfe3d
(isearch-yank-internal): New helper function.
Karl Fogel <kfogel@red-bean.com>
parents:
41255
diff
changeset
|
1248 (interactive) |
42271b6bfe3d
(isearch-yank-internal): New helper function.
Karl Fogel <kfogel@red-bean.com>
parents:
41255
diff
changeset
|
1249 (isearch-yank-internal (lambda () (forward-word 1) (point)))) |
725 | 1250 |
1251 (defun isearch-yank-line () | |
1252 "Pull rest of line from buffer into search string." | |
1253 (interactive) | |
48206
c54ec45f223c
(isearch-yank-line): Typo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48201
diff
changeset
|
1254 (isearch-yank-internal 'line-end-position)) |
725 | 1255 |
1256 | |
1257 (defun isearch-search-and-update () | |
1258 ;; Do the search and update the display. | |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
1259 (when (or isearch-success |
55226
e3dae0e8c99e
(isearch-mode-map): Bind \C-w to isearch-yank-word instead of isearch-yank-word-or-char.
Juri Linkov <juri@jurta.org>
parents:
54256
diff
changeset
|
1260 ;; Unsuccessful regexp search may become successful by |
e3dae0e8c99e
(isearch-mode-map): Bind \C-w to isearch-yank-word instead of isearch-yank-word-or-char.
Juri Linkov <juri@jurta.org>
parents:
54256
diff
changeset
|
1261 ;; addition of characters which make isearch-string valid |
48201
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
1262 isearch-regexp |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
1263 ;; If the string was found but was completely invisible, |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
1264 ;; it might now be partly visible, so try again. |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
1265 (prog1 isearch-hidden (setq isearch-hidden nil))) |
725 | 1266 ;; In reverse search, adding stuff at |
1267 ;; the end may cause zero or many more chars to be | |
1268 ;; matched, in the string following point. | |
1269 ;; Allow all those possibilities without moving point as | |
1270 ;; long as the match does not extend past search origin. | |
1271 (if (and (not isearch-forward) (not isearch-adjusted) | |
1272 (condition-case () | |
13799
49b7cd70c43c
(isearch-done): Use executing-kbd-macro.
Karl Heuer <kwzh@gnu.org>
parents:
13682
diff
changeset
|
1273 (let ((case-fold-search isearch-case-fold-search)) |
23318
102eb438b2e1
(isearch-search-and-update): Properly
Karl Heuer <kwzh@gnu.org>
parents:
23102
diff
changeset
|
1274 (if (and (eq case-fold-search t) search-upper-case) |
102eb438b2e1
(isearch-search-and-update): Properly
Karl Heuer <kwzh@gnu.org>
parents:
23102
diff
changeset
|
1275 (setq case-fold-search |
102eb438b2e1
(isearch-search-and-update): Properly
Karl Heuer <kwzh@gnu.org>
parents:
23102
diff
changeset
|
1276 (isearch-no-upper-case-p isearch-string isearch-regexp))) |
13799
49b7cd70c43c
(isearch-done): Use executing-kbd-macro.
Karl Heuer <kwzh@gnu.org>
parents:
13682
diff
changeset
|
1277 (looking-at (if isearch-regexp isearch-string |
49b7cd70c43c
(isearch-done): Use executing-kbd-macro.
Karl Heuer <kwzh@gnu.org>
parents:
13682
diff
changeset
|
1278 (regexp-quote isearch-string)))) |
725 | 1279 (error nil)) |
21070
f88e08d192a8
(isearch-*-char): Do nothing special if quoted with \.
Richard M. Stallman <rms@gnu.org>
parents:
20812
diff
changeset
|
1280 (or isearch-yank-flag |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
1281 (<= (match-end 0) |
21070
f88e08d192a8
(isearch-*-char): Do nothing special if quoted with \.
Richard M. Stallman <rms@gnu.org>
parents:
20812
diff
changeset
|
1282 (min isearch-opoint isearch-barrier)))) |
18440
a94d8b31ae3d
(isearch-search-and-update): When a reverse search
Richard M. Stallman <rms@gnu.org>
parents:
18236
diff
changeset
|
1283 (progn |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
1284 (setq isearch-success t |
18440
a94d8b31ae3d
(isearch-search-and-update): When a reverse search
Richard M. Stallman <rms@gnu.org>
parents:
18236
diff
changeset
|
1285 isearch-invalid-regexp nil |
a94d8b31ae3d
(isearch-search-and-update): When a reverse search
Richard M. Stallman <rms@gnu.org>
parents:
18236
diff
changeset
|
1286 isearch-within-brackets nil |
a94d8b31ae3d
(isearch-search-and-update): When a reverse search
Richard M. Stallman <rms@gnu.org>
parents:
18236
diff
changeset
|
1287 isearch-other-end (match-end 0)) |
a94d8b31ae3d
(isearch-search-and-update): When a reverse search
Richard M. Stallman <rms@gnu.org>
parents:
18236
diff
changeset
|
1288 (if (and (eq isearch-case-fold-search t) search-upper-case) |
a94d8b31ae3d
(isearch-search-and-update): When a reverse search
Richard M. Stallman <rms@gnu.org>
parents:
18236
diff
changeset
|
1289 (setq isearch-case-fold-search |
a94d8b31ae3d
(isearch-search-and-update): When a reverse search
Richard M. Stallman <rms@gnu.org>
parents:
18236
diff
changeset
|
1290 (isearch-no-upper-case-p isearch-string isearch-regexp)))) |
725 | 1291 ;; Not regexp, not reverse, or no match at point. |
1292 (if (and isearch-other-end (not isearch-adjusted)) | |
1293 (goto-char (if isearch-forward isearch-other-end | |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
1294 (min isearch-opoint |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
1295 isearch-barrier |
725 | 1296 (1+ isearch-other-end))))) |
1297 (isearch-search) | |
1298 )) | |
1299 (isearch-push-state) | |
1300 (if isearch-op-fun (funcall isearch-op-fun)) | |
1301 (isearch-update)) | |
1302 | |
1303 | |
56668
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1304 ;; *, ?, }, and | chars can make a regexp more liberal. |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1305 ;; They can make a regexp match sooner or make it succeed instead of failing. |
725 | 1306 ;; So go back to place last successful search started |
1307 ;; 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
|
1308 ;; + needs no special handling because the string must match at least once. |
725 | 1309 |
56668
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1310 (defun isearch-backslash (str) |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1311 "Return t if STR ends in an odd number of backslashes." |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1312 (= (mod (- (length str) (string-match "\\\\*\\'" str)) 2) 1)) |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1313 |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1314 (defun isearch-fallback (want-backslash &optional allow-invalid to-barrier) |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1315 "Return point to previous successful match to allow regexp liberalization. |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1316 \\<isearch-mode-map> |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1317 Respects \\[isearch-repeat-forward] and \\[isearch-repeat-backward] by |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1318 stopping at `isearch-barrier' as needed. |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1319 |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1320 Do nothing if a backslash is escaping the liberalizing character. If |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1321 WANT-BACKSLASH is non-nil, invert this behavior (for \\} and \\|). |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1322 |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1323 Do nothing if regexp has recently been invalid unless optional ALLOW-INVALID |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1324 non-nil. |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1325 |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1326 If optional TO-BARRIER non-nil, ignore previous matches and go exactly to the |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1327 barrier." |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1328 ;; (eq (not a) (not b)) makes all non-nil values equivalent |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1329 (when (and isearch-regexp (eq (not (isearch-backslash isearch-string)) |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1330 (not want-backslash)) |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1331 ;; We have to check 2 stack frames because the last might be |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1332 ;; invalid just because of a backslash. |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1333 (or (not isearch-invalid-regexp) |
56867
16f3ec82330a
Remove ancient Change Log section.
Juri Linkov <juri@jurta.org>
parents:
56681
diff
changeset
|
1334 (not (isearch-invalid-regexp-state (cadr isearch-cmds))) |
56668
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1335 allow-invalid)) |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1336 (if to-barrier |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1337 (progn (goto-char isearch-barrier) |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1338 (setq isearch-adjusted t)) |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1339 (let* ((stack isearch-cmds) |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1340 (previous (cdr stack)) ; lookbelow in the stack |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1341 (frame (car stack))) |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1342 ;; Walk down the stack looking for a valid regexp (as of course only |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1343 ;; they can be the previous successful match); this conveniently |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1344 ;; removes all bracket-sets and groups that might be in the way, as |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1345 ;; well as partial \{\} constructs that the code below leaves behind. |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1346 ;; Also skip over postfix operators -- though horrid, |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1347 ;; 'ab?\{5,6\}+\{1,2\}*' is perfectly legal. |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1348 (while (and previous |
56867
16f3ec82330a
Remove ancient Change Log section.
Juri Linkov <juri@jurta.org>
parents:
56681
diff
changeset
|
1349 (or (isearch-invalid-regexp-state frame) |
16f3ec82330a
Remove ancient Change Log section.
Juri Linkov <juri@jurta.org>
parents:
56681
diff
changeset
|
1350 (let* ((string (isearch-string-state frame)) |
56668
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1351 (lchar (aref string (1- (length string))))) |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1352 ;; The operators aren't always operators; check |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1353 ;; backslashes. This doesn't handle the case of |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1354 ;; operators at the beginning of the regexp not |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1355 ;; being special, but then we should fall back to |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1356 ;; the barrier anyway because it's all optional. |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1357 (if (isearch-backslash |
56867
16f3ec82330a
Remove ancient Change Log section.
Juri Linkov <juri@jurta.org>
parents:
56681
diff
changeset
|
1358 (isearch-string-state (car previous))) |
56668
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1359 (eq lchar ?\}) |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1360 (memq lchar '(?* ?? ?+)))))) |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1361 (setq stack previous previous (cdr previous) frame (car stack))) |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1362 (when stack |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1363 ;; `stack' now refers the most recent valid regexp that is not at |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1364 ;; all optional in its last term. Now dig one level deeper and find |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1365 ;; what matched before that. |
56867
16f3ec82330a
Remove ancient Change Log section.
Juri Linkov <juri@jurta.org>
parents:
56681
diff
changeset
|
1366 (let ((last-other-end (or (isearch-other-end-state (car previous)) |
56668
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1367 isearch-barrier))) |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1368 (goto-char (if isearch-forward |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1369 (max last-other-end isearch-barrier) |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1370 (min last-other-end isearch-barrier))) |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1371 (setq isearch-adjusted t)))))) |
25823
4cecefebde6f
(isearch): Add :links in defgroup.
Dave Love <fx@gnu.org>
parents:
25644
diff
changeset
|
1372 (isearch-process-search-char last-command-char)) |
49420
07a876ca33f0
(isearch-forward): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
49069
diff
changeset
|
1373 |
56668
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1374 ;; * and ? are special when not preceded by \. |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1375 (defun isearch-*-char () |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1376 "Maybe back up to handle * and ? specially in regexps." |
725 | 1377 (interactive) |
56668
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1378 (isearch-fallback nil)) |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1379 |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1380 ;; } is special when it is preceded by \. |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1381 (defun isearch-}-char () |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1382 "Handle \\} specially in regexps." |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1383 (interactive) |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1384 (isearch-fallback t t)) |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1385 |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1386 ;; | is special when it is preceded by \. |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1387 (defun isearch-|-char () |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1388 "If in regexp search, jump to the barrier unless in a group." |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1389 (interactive) |
99e8e40ec202
Remove accidental changes of March 4. Fix backing
Eli Zaretskii <eliz@gnu.org>
parents:
56352
diff
changeset
|
1390 (isearch-fallback t nil t)) |
725 | 1391 |
52965
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1392 (defun isearch-unread-key-sequence (keylist) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1393 "Unread the given key-sequence KEYLIST. |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1394 Scroll-bar or mode-line events are processed appropriately." |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1395 (cancel-kbd-macro-events) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1396 (apply 'isearch-unread keylist) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1397 ;; If the event was a scroll-bar or mode-line click, the event will have |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1398 ;; been prefixed by a symbol such as vertical-scroll-bar. We must remove |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1399 ;; it here, because this symbol will be attached to the event again next |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1400 ;; time it gets read by read-key-sequence. |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1401 ;; |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1402 ;; (Old comment from isearch-other-meta-char: "Note that we don't have to |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1403 ;; modify the event anymore in 21 because read_key_sequence no longer |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1404 ;; modifies events to produce fake prefix keys.") |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1405 (if (and (> (length keylist) 1) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1406 (symbolp (car keylist)) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1407 (listp (cadr keylist)) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1408 (not (numberp (posn-point |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1409 (event-start (cadr keylist) ))))) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1410 (pop unread-command-events))) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1411 |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1412 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1413 ;; scrolling within Isearch mode. Alan Mackenzie (acm@muc.de), 2003/2/24 |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1414 ;; |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1415 ;; The idea here is that certain vertical scrolling commands (like C-l |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1416 ;; `recenter') should be usable WITHIN Isearch mode. For a command to be |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1417 ;; suitable, it must NOT alter the buffer, swap to another buffer or frame, |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1418 ;; tamper with isearch's state, or move point. It is unacceptable for the |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1419 ;; search string to be scrolled out of the current window. If a command |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1420 ;; attempts this, we scroll the text back again. |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1421 ;; |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1422 ;; We implement this feature with a property called `isearch-scroll'. |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1423 ;; If a command's symbol has the value t for this property it is a |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1424 ;; scrolling command. The feature needs to be enabled by setting the |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1425 ;; customizable variable `isearch-allow-scroll' to a non-nil value. |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1426 ;; |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1427 ;; The universal argument commands (e.g. C-u) in simple.el are marked |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1428 ;; as scrolling commands, and isearch.el has been amended to allow |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1429 ;; prefix arguments to be passed through to scrolling commands. Thus |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1430 ;; M-0 C-l will scroll point to the top of the window. |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1431 ;; |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1432 ;; Horizontal scrolling commands are currently not catered for. |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1433 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1434 |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1435 ;; Set the isearch-scroll property on some standard functions: |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1436 ;; Scroll-bar functions: |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1437 (if (fboundp 'scroll-bar-toolkit-scroll) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1438 (put 'scroll-bar-toolkit-scroll 'isearch-scroll t)) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1439 (if (fboundp 'mac-handle-scroll-bar-event) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1440 (put 'mac-handle-scroll-bar-event 'isearch-scroll t)) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1441 (if (fboundp 'w32-handle-scroll-bar-event) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1442 (put 'w32-handle-scroll-bar-event 'isearch-scroll t)) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1443 |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1444 ;; Commands which scroll the window: |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1445 (put 'recenter 'isearch-scroll t) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1446 (put 'reposition-window 'isearch-scroll t) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1447 (put 'scroll-up 'isearch-scroll t) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1448 (put 'scroll-down 'isearch-scroll t) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1449 |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1450 ;; Commands which act on the other window |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1451 (put 'list-buffers 'isearch-scroll t) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1452 (put 'scroll-other-window 'isearch-scroll t) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1453 (put 'scroll-other-window-down 'isearch-scroll t) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1454 (put 'beginning-of-buffer-other-window 'isearch-scroll t) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1455 (put 'end-of-buffer-other-window 'isearch-scroll t) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1456 |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1457 ;; Commands which change the window layout |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1458 (put 'delete-other-windows 'isearch-scroll t) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1459 (put 'balance-windows 'isearch-scroll t) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1460 (put 'split-window-vertically 'isearch-scroll t) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1461 (put 'enlarge-window 'isearch-scroll t) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1462 |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1463 ;; Universal argument commands |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1464 (put 'universal-argument 'isearch-scroll t) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1465 (put 'negative-argument 'isearch-scroll t) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1466 (put 'digit-argument 'isearch-scroll t) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1467 |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1468 (defcustom isearch-allow-scroll nil |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1469 "If non-nil, scrolling commands are allowed during incremental search." |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1470 :type 'boolean |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1471 :group 'isearch) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1472 |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1473 (defun isearch-string-out-of-window (isearch-point) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1474 "Test whether the search string is currently outside of the window. |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1475 Return nil if it's completely visible, or if point is visible, |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1476 together with as much of the search string as will fit; the symbol |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1477 `above' if we need to scroll the text downwards; the symbol `below', |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1478 if upwards." |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1479 (let ((w-start (window-start)) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1480 (w-end (window-end nil t)) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1481 (w-L1 (save-excursion (move-to-window-line 1) (point))) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1482 (w-L-1 (save-excursion (move-to-window-line -1) (point))) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1483 start end) ; start and end of search string in buffer |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1484 (if isearch-forward |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1485 (setq end isearch-point start (or isearch-other-end isearch-point)) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1486 (setq start isearch-point end (or isearch-other-end isearch-point))) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1487 (cond ((or (and (>= start w-start) (<= end w-end)) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1488 (if isearch-forward |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1489 (and (>= isearch-point w-L-1) (< isearch-point w-end)) ; point on Line -1 |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1490 (and (>= isearch-point w-start) (< isearch-point w-L1)))) ; point on Line 0 |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1491 nil) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1492 ((and (< start w-start) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1493 (< isearch-point w-L-1)) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1494 'above) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1495 (t 'below)))) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1496 |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1497 (defun isearch-back-into-window (above isearch-point) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1498 "Scroll the window to bring the search string back into view. |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1499 Restore point to ISEARCH-POINT in the process. ABOVE is t when the |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1500 search string is above the top of the window, nil when it is beneath |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1501 the bottom." |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1502 (let (start end) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1503 (if isearch-forward |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1504 (setq end isearch-point start (or isearch-other-end isearch-point)) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1505 (setq start isearch-point end (or isearch-other-end isearch-point))) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1506 (if above |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1507 (progn |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1508 (goto-char start) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1509 (recenter 0) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1510 (when (>= isearch-point (window-end nil t)) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1511 (goto-char isearch-point) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1512 (recenter -1))) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1513 (goto-char end) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1514 (recenter -1) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1515 (when (< isearch-point (window-start)) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1516 (goto-char isearch-point) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1517 (recenter 0)))) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1518 (goto-char isearch-point)) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1519 |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1520 (defun isearch-reread-key-sequence-naturally (keylist) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1521 "Reread key sequence KEYLIST with Isearch mode's keymap deactivated. |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1522 Return the key sequence as a string/vector." |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1523 (isearch-unread-key-sequence keylist) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1524 (let (overriding-terminal-local-map) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1525 (read-key-sequence nil))) ; This will go through function-key-map, if nec. |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1526 |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1527 (defun isearch-lookup-scroll-key (key-seq) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1528 "If KEY-SEQ is bound to a scrolling command, return it as a symbol. |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1529 Otherwise return nil." |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1530 (let* ((overriding-terminal-local-map nil) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1531 (binding (key-binding key-seq))) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1532 (and binding (symbolp binding) (commandp binding) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1533 (eq (get binding 'isearch-scroll) t) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1534 binding))) |
725 | 1535 |
2572
8784bb8514b0
Replaced all fsets with defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2533
diff
changeset
|
1536 (defalias 'isearch-other-control-char 'isearch-other-meta-char) |
725 | 1537 |
52965
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1538 (defun isearch-other-meta-char (&optional arg) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1539 "Process a miscellaneous key sequence in Isearch mode. |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1540 |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1541 Try to convert the current key-sequence to something usable in Isearch |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1542 mode, either by converting it with `function-key-map', downcasing a |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1543 key with C-<upper case>, or finding a \"scrolling command\" bound to |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1544 it. \(In the last case, we may have to read more events.) If so, |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1545 either unread the converted sequence or execute the command. |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1546 |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1547 Otherwise, if `search-exit-option' is non-nil (the default) unread the |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1548 key-sequence and exit the search normally. If it is the symbol |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1549 `edit', the search string is edited in the minibuffer and the meta |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1550 character is unread so that it applies to editing the string. |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1551 |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1552 ARG is the prefix argument. It will be transmitted through to the |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1553 scrolling command or to the command whose key-sequence exits |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1554 Isearch mode." |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1555 (interactive "P") |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1556 (let* ((key (if current-prefix-arg ; not nec the same as ARG |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1557 (substring (this-command-keys) universal-argument-num-events) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1558 (this-command-keys))) |
12106
3ae851bcd773
(isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents:
11969
diff
changeset
|
1559 (main-event (aref key 0)) |
52965
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1560 (keylist (listify-key-sequence key)) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1561 scroll-command isearch-point) |
12716
cadb9c7a1501
(isearch-mode-map): Don't bind tab, return, kp-N, etc.
Richard M. Stallman <rms@gnu.org>
parents:
12284
diff
changeset
|
1562 (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
|
1563 (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
|
1564 (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
|
1565 (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
|
1566 ;; 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
|
1567 ;; 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
|
1568 ;; 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
|
1569 ;; 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
|
1570 ;; 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
|
1571 (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
|
1572 (if (lookup-key global-map key) |
33704
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
1573 (progn |
12716
cadb9c7a1501
(isearch-mode-map): Don't bind tab, return, kp-N, etc.
Richard M. Stallman <rms@gnu.org>
parents:
12284
diff
changeset
|
1574 (isearch-done) |
cadb9c7a1501
(isearch-mode-map): Don't bind tab, return, kp-N, etc.
Richard M. Stallman <rms@gnu.org>
parents:
12284
diff
changeset
|
1575 (apply 'isearch-unread keylist)) |
29358
9a6d0cf1e313
(isearch-update): Set disable-point-adjustment to t
Kenichi Handa <handa@m17n.org>
parents:
29325
diff
changeset
|
1576 (setq keylist |
9a6d0cf1e313
(isearch-update): Set disable-point-adjustment to t
Kenichi Handa <handa@m17n.org>
parents:
29325
diff
changeset
|
1577 (listify-key-sequence (lookup-key function-key-map key))) |
9a6d0cf1e313
(isearch-update): Set disable-point-adjustment to t
Kenichi Handa <handa@m17n.org>
parents:
29325
diff
changeset
|
1578 (while keylist |
9a6d0cf1e313
(isearch-update): Set disable-point-adjustment to t
Kenichi Handa <handa@m17n.org>
parents:
29325
diff
changeset
|
1579 (setq key (car keylist)) |
9a6d0cf1e313
(isearch-update): Set disable-point-adjustment to t
Kenichi Handa <handa@m17n.org>
parents:
29325
diff
changeset
|
1580 ;; If KEY is a printing char, we handle it here |
9a6d0cf1e313
(isearch-update): Set disable-point-adjustment to t
Kenichi Handa <handa@m17n.org>
parents:
29325
diff
changeset
|
1581 ;; directly to avoid the input method and keyboard |
9a6d0cf1e313
(isearch-update): Set disable-point-adjustment to t
Kenichi Handa <handa@m17n.org>
parents:
29325
diff
changeset
|
1582 ;; coding system translating it. |
9a6d0cf1e313
(isearch-update): Set disable-point-adjustment to t
Kenichi Handa <handa@m17n.org>
parents:
29325
diff
changeset
|
1583 (if (and (integerp key) |
29377
b614192b22ce
(isearch-other-meta-char): Fix previous change.
Kenichi Handa <handa@m17n.org>
parents:
29373
diff
changeset
|
1584 (>= key ?\ ) (/= key 127) (< key 256)) |
29358
9a6d0cf1e313
(isearch-update): Set disable-point-adjustment to t
Kenichi Handa <handa@m17n.org>
parents:
29325
diff
changeset
|
1585 (progn |
9a6d0cf1e313
(isearch-update): Set disable-point-adjustment to t
Kenichi Handa <handa@m17n.org>
parents:
29325
diff
changeset
|
1586 (isearch-process-search-char key) |
9a6d0cf1e313
(isearch-update): Set disable-point-adjustment to t
Kenichi Handa <handa@m17n.org>
parents:
29325
diff
changeset
|
1587 (setq keylist (cdr keylist))) |
9a6d0cf1e313
(isearch-update): Set disable-point-adjustment to t
Kenichi Handa <handa@m17n.org>
parents:
29325
diff
changeset
|
1588 ;; As the remaining keys in KEYLIST can't be handled |
9a6d0cf1e313
(isearch-update): Set disable-point-adjustment to t
Kenichi Handa <handa@m17n.org>
parents:
29325
diff
changeset
|
1589 ;; here, we must reread them. |
9a6d0cf1e313
(isearch-update): Set disable-point-adjustment to t
Kenichi Handa <handa@m17n.org>
parents:
29325
diff
changeset
|
1590 (apply 'isearch-unread keylist) |
9a6d0cf1e313
(isearch-update): Set disable-point-adjustment to t
Kenichi Handa <handa@m17n.org>
parents:
29325
diff
changeset
|
1591 (setq keylist nil))))) |
12716
cadb9c7a1501
(isearch-mode-map): Don't bind tab, return, kp-N, etc.
Richard M. Stallman <rms@gnu.org>
parents:
12284
diff
changeset
|
1592 ( |
12106
3ae851bcd773
(isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents:
11969
diff
changeset
|
1593 ;; Handle an undefined shifted control character |
3ae851bcd773
(isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents:
11969
diff
changeset
|
1594 ;; by downshifting it if that makes it defined. |
3ae851bcd773
(isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents:
11969
diff
changeset
|
1595 ;; (As read-key-sequence would normally do, |
3ae851bcd773
(isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents:
11969
diff
changeset
|
1596 ;; if we didn't have a default definition.) |
3ae851bcd773
(isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents:
11969
diff
changeset
|
1597 (let ((mods (event-modifiers main-event))) |
3ae851bcd773
(isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents:
11969
diff
changeset
|
1598 (and (integerp main-event) |
3ae851bcd773
(isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents:
11969
diff
changeset
|
1599 (memq 'shift mods) |
3ae851bcd773
(isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents:
11969
diff
changeset
|
1600 (memq 'control mods) |
3ae851bcd773
(isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents:
11969
diff
changeset
|
1601 (lookup-key isearch-mode-map |
3ae851bcd773
(isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents:
11969
diff
changeset
|
1602 (let ((copy (copy-sequence key))) |
3ae851bcd773
(isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents:
11969
diff
changeset
|
1603 (aset copy 0 |
3ae851bcd773
(isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents:
11969
diff
changeset
|
1604 (- main-event (- ?\C-\S-a ?\C-a))) |
3ae851bcd773
(isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents:
11969
diff
changeset
|
1605 copy) |
3ae851bcd773
(isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents:
11969
diff
changeset
|
1606 nil))) |
3ae851bcd773
(isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents:
11969
diff
changeset
|
1607 (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
|
1608 (cancel-kbd-macro-events) |
12106
3ae851bcd773
(isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents:
11969
diff
changeset
|
1609 (apply 'isearch-unread keylist)) |
3ae851bcd773
(isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents:
11969
diff
changeset
|
1610 ((eq search-exit-option 'edit) |
3ae851bcd773
(isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents:
11969
diff
changeset
|
1611 (apply 'isearch-unread keylist) |
3ae851bcd773
(isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents:
11969
diff
changeset
|
1612 (isearch-edit-string)) |
52965
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1613 ;; Handle a scrolling function. |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1614 ((and isearch-allow-scroll |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1615 (progn (setq key (isearch-reread-key-sequence-naturally keylist)) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1616 (setq keylist (listify-key-sequence key)) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1617 (setq main-event (aref key 0)) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1618 (setq scroll-command (isearch-lookup-scroll-key key)))) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1619 ;; From this point onwards, KEY, KEYLIST and MAIN-EVENT hold a |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1620 ;; complete key sequence, possibly as modified by function-key-map, |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1621 ;; not merely the one or two event fragment which invoked |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1622 ;; isearch-other-meta-char in the first place. |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1623 (setq isearch-point (point)) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1624 (setq prefix-arg arg) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1625 (command-execute scroll-command) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1626 (let ((ab-bel (isearch-string-out-of-window isearch-point))) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1627 (if ab-bel |
55226
e3dae0e8c99e
(isearch-mode-map): Bind \C-w to isearch-yank-word instead of isearch-yank-word-or-char.
Juri Linkov <juri@jurta.org>
parents:
54256
diff
changeset
|
1628 (isearch-back-into-window (eq ab-bel 'above) isearch-point) |
56905
661d52db56de
(isearch-toggle-regexp): Set `isearch-success' and `isearch-adjusted' to `t'.
Juri Linkov <juri@jurta.org>
parents:
56868
diff
changeset
|
1629 (goto-char isearch-point))) |
52965
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1630 (isearch-update)) |
12106
3ae851bcd773
(isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents:
11969
diff
changeset
|
1631 (search-exit-option |
3ae851bcd773
(isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents:
11969
diff
changeset
|
1632 (let (window) |
52965
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1633 (isearch-unread-key-sequence keylist) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1634 (setq main-event (car unread-command-events)) |
38553
4e1d2c941d86
(isearch-other-meta-char): Don't modify mode-line and
Gerd Moellmann <gerd@gnu.org>
parents:
38412
diff
changeset
|
1635 |
38778
cdd382cc0e92
(isearch-other-meta-char): Don't switch to the
Gerd Moellmann <gerd@gnu.org>
parents:
38555
diff
changeset
|
1636 ;; If we got a mouse click event, that event contains the |
cdd382cc0e92
(isearch-other-meta-char): Don't switch to the
Gerd Moellmann <gerd@gnu.org>
parents:
38555
diff
changeset
|
1637 ;; window clicked on. maybe it was read with the buffer |
12106
3ae851bcd773
(isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents:
11969
diff
changeset
|
1638 ;; 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
|
1639 ;; is in isearch mode. So end the search in that buffer. |
38778
cdd382cc0e92
(isearch-other-meta-char): Don't switch to the
Gerd Moellmann <gerd@gnu.org>
parents:
38555
diff
changeset
|
1640 |
cdd382cc0e92
(isearch-other-meta-char): Don't switch to the
Gerd Moellmann <gerd@gnu.org>
parents:
38555
diff
changeset
|
1641 ;; ??? I have no idea what this if checks for, but it's |
cdd382cc0e92
(isearch-other-meta-char): Don't switch to the
Gerd Moellmann <gerd@gnu.org>
parents:
38555
diff
changeset
|
1642 ;; obviously wrong for the case that a down-mouse event |
cdd382cc0e92
(isearch-other-meta-char): Don't switch to the
Gerd Moellmann <gerd@gnu.org>
parents:
38555
diff
changeset
|
1643 ;; on another window invokes this function. The event |
cdd382cc0e92
(isearch-other-meta-char): Don't switch to the
Gerd Moellmann <gerd@gnu.org>
parents:
38555
diff
changeset
|
1644 ;; will contain the window clicked on and that window's |
49420
07a876ca33f0
(isearch-forward): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
49069
diff
changeset
|
1645 ;; buffer is certainly not always in Isearch mode. |
38778
cdd382cc0e92
(isearch-other-meta-char): Don't switch to the
Gerd Moellmann <gerd@gnu.org>
parents:
38555
diff
changeset
|
1646 ;; |
cdd382cc0e92
(isearch-other-meta-char): Don't switch to the
Gerd Moellmann <gerd@gnu.org>
parents:
38555
diff
changeset
|
1647 ;; Leave the code in, but check for current buffer not |
cdd382cc0e92
(isearch-other-meta-char): Don't switch to the
Gerd Moellmann <gerd@gnu.org>
parents:
38555
diff
changeset
|
1648 ;; being in Isearch mode for now, until someone tells |
cdd382cc0e92
(isearch-other-meta-char): Don't switch to the
Gerd Moellmann <gerd@gnu.org>
parents:
38555
diff
changeset
|
1649 ;; what it's really supposed to do. |
cdd382cc0e92
(isearch-other-meta-char): Don't switch to the
Gerd Moellmann <gerd@gnu.org>
parents:
38555
diff
changeset
|
1650 ;; |
cdd382cc0e92
(isearch-other-meta-char): Don't switch to the
Gerd Moellmann <gerd@gnu.org>
parents:
38555
diff
changeset
|
1651 ;; --gerd 2001-08-10. |
cdd382cc0e92
(isearch-other-meta-char): Don't switch to the
Gerd Moellmann <gerd@gnu.org>
parents:
38555
diff
changeset
|
1652 |
cdd382cc0e92
(isearch-other-meta-char): Don't switch to the
Gerd Moellmann <gerd@gnu.org>
parents:
38555
diff
changeset
|
1653 (if (and (not isearch-mode) |
cdd382cc0e92
(isearch-other-meta-char): Don't switch to the
Gerd Moellmann <gerd@gnu.org>
parents:
38555
diff
changeset
|
1654 (listp main-event) |
12106
3ae851bcd773
(isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents:
11969
diff
changeset
|
1655 (setq window (posn-window (event-start main-event))) |
19127
ce44f2008a22
(isearch-other-meta-char): Don't switch windows to exit
Richard M. Stallman <rms@gnu.org>
parents:
19069
diff
changeset
|
1656 (windowp window) |
ce44f2008a22
(isearch-other-meta-char): Don't switch windows to exit
Richard M. Stallman <rms@gnu.org>
parents:
19069
diff
changeset
|
1657 (or (> (minibuffer-depth) 0) |
ce44f2008a22
(isearch-other-meta-char): Don't switch windows to exit
Richard M. Stallman <rms@gnu.org>
parents:
19069
diff
changeset
|
1658 (not (window-minibuffer-p window)))) |
12106
3ae851bcd773
(isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents:
11969
diff
changeset
|
1659 (save-excursion |
3ae851bcd773
(isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents:
11969
diff
changeset
|
1660 (set-buffer (window-buffer window)) |
18236
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
1661 (isearch-done) |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
1662 (isearch-clean-overlays)) |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
1663 (isearch-done) |
52965
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1664 (isearch-clean-overlays) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1665 (setq prefix-arg arg)))) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1666 (t;; otherwise nil |
12106
3ae851bcd773
(isearch-other-meta-char): Try downshifting
Karl Heuer <kwzh@gnu.org>
parents:
11969
diff
changeset
|
1667 (isearch-process-search-string key key))))) |
725 | 1668 |
1669 (defun isearch-quote-char () | |
1670 "Quote special characters for incremental search." | |
1671 (interactive) | |
19146
0f89b8543e19
(isearch-quote-char): Fix handling of control
Richard M. Stallman <rms@gnu.org>
parents:
19127
diff
changeset
|
1672 (let ((char (read-quoted-char (isearch-message t)))) |
24921
036b2fb4944f
(isearch-quote-char): Call unibyte-char-to-multibyte for \200...\240 also.
Richard M. Stallman <rms@gnu.org>
parents:
24919
diff
changeset
|
1673 ;; Assume character codes 0200 - 0377 stand for characters in some |
24788
1d21edd48d82
(isearch-quote-char): Don't assume character codes
Kenichi Handa <handa@m17n.org>
parents:
23318
diff
changeset
|
1674 ;; single-byte character set, and convert them to Emacs |
1d21edd48d82
(isearch-quote-char): Don't assume character codes
Kenichi Handa <handa@m17n.org>
parents:
23318
diff
changeset
|
1675 ;; characters. |
19146
0f89b8543e19
(isearch-quote-char): Fix handling of control
Richard M. Stallman <rms@gnu.org>
parents:
19127
diff
changeset
|
1676 (and enable-multibyte-characters |
24921
036b2fb4944f
(isearch-quote-char): Call unibyte-char-to-multibyte for \200...\240 also.
Richard M. Stallman <rms@gnu.org>
parents:
24919
diff
changeset
|
1677 (>= char ?\200) |
19146
0f89b8543e19
(isearch-quote-char): Fix handling of control
Richard M. Stallman <rms@gnu.org>
parents:
19127
diff
changeset
|
1678 (<= char ?\377) |
24788
1d21edd48d82
(isearch-quote-char): Don't assume character codes
Kenichi Handa <handa@m17n.org>
parents:
23318
diff
changeset
|
1679 (setq char (unibyte-char-to-multibyte char))) |
19146
0f89b8543e19
(isearch-quote-char): Fix handling of control
Richard M. Stallman <rms@gnu.org>
parents:
19127
diff
changeset
|
1680 (isearch-process-search-char char))) |
725 | 1681 |
1682 (defun isearch-return-char () | |
1683 "Convert return into newline for incremental search. | |
1684 Obsolete." | |
1685 (interactive) | |
1686 (isearch-process-search-char ?\n)) | |
1687 | |
1688 (defun isearch-printing-char () | |
2533 | 1689 "Add this ordinary printing character to the search string and search." |
725 | 1690 (interactive) |
25823
4cecefebde6f
(isearch): Add :links in defgroup.
Dave Love <fx@gnu.org>
parents:
25644
diff
changeset
|
1691 (let ((char last-command-char)) |
20056
dd567e1fddd5
(isearch-printing-char): Change S-SPC to SPC.
Karl Heuer <kwzh@gnu.org>
parents:
19769
diff
changeset
|
1692 (if (= char ?\S-\ ) |
dd567e1fddd5
(isearch-printing-char): Change S-SPC to SPC.
Karl Heuer <kwzh@gnu.org>
parents:
19769
diff
changeset
|
1693 (setq char ?\ )) |
19587
7d59cb04d2d9
(isearch-printing-char): Handle nonascii-insert-offset.
Richard M. Stallman <rms@gnu.org>
parents:
19408
diff
changeset
|
1694 (if (and enable-multibyte-characters |
7d59cb04d2d9
(isearch-printing-char): Handle nonascii-insert-offset.
Richard M. Stallman <rms@gnu.org>
parents:
19408
diff
changeset
|
1695 (>= char ?\200) |
7d59cb04d2d9
(isearch-printing-char): Handle nonascii-insert-offset.
Richard M. Stallman <rms@gnu.org>
parents:
19408
diff
changeset
|
1696 (<= char ?\377)) |
29325
e67ef9cdfe51
(isearch-printing-char): If keyboard coding system is
Kenichi Handa <handa@m17n.org>
parents:
28504
diff
changeset
|
1697 (if (keyboard-coding-system) |
e67ef9cdfe51
(isearch-printing-char): If keyboard coding system is
Kenichi Handa <handa@m17n.org>
parents:
28504
diff
changeset
|
1698 (isearch-process-search-multibyte-characters char) |
e67ef9cdfe51
(isearch-printing-char): If keyboard coding system is
Kenichi Handa <handa@m17n.org>
parents:
28504
diff
changeset
|
1699 (isearch-process-search-char (unibyte-char-to-multibyte char))) |
19587
7d59cb04d2d9
(isearch-printing-char): Handle nonascii-insert-offset.
Richard M. Stallman <rms@gnu.org>
parents:
19408
diff
changeset
|
1700 (if current-input-method |
7d59cb04d2d9
(isearch-printing-char): Handle nonascii-insert-offset.
Richard M. Stallman <rms@gnu.org>
parents:
19408
diff
changeset
|
1701 (isearch-process-search-multibyte-characters char) |
7d59cb04d2d9
(isearch-printing-char): Handle nonascii-insert-offset.
Richard M. Stallman <rms@gnu.org>
parents:
19408
diff
changeset
|
1702 (isearch-process-search-char char))))) |
725 | 1703 |
1704 (defun isearch-whitespace-chars () | |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1705 "Match all whitespace chars, if in regexp mode. |
41014
fcd14406bac3
(isearch-mode): Handle negative search-slow-window-lines correctly.
Richard M. Stallman <rms@gnu.org>
parents:
40026
diff
changeset
|
1706 If you want to search for just a space, type \\<isearch-mode-map>\\[isearch-quote-char] SPC." |
725 | 1707 (interactive) |
49420
07a876ca33f0
(isearch-forward): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
49069
diff
changeset
|
1708 (if isearch-regexp |
15858
946a4fb104ef
(isearch-whitespace-chars): If isearch-invalid-regexp, insert just a space.
Richard M. Stallman <rms@gnu.org>
parents:
14939
diff
changeset
|
1709 (if (and search-whitespace-regexp (not isearch-within-brackets) |
946a4fb104ef
(isearch-whitespace-chars): If isearch-invalid-regexp, insert just a space.
Richard M. Stallman <rms@gnu.org>
parents:
14939
diff
changeset
|
1710 (not isearch-invalid-regexp)) |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1711 (isearch-process-search-string search-whitespace-regexp " ") |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1712 (isearch-printing-char)) |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1713 (progn |
3591
507f64624555
Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents:
3526
diff
changeset
|
1714 ;; 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
|
1715 ;; (setq isearch-word t) |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1716 ;; (setq isearch-adjusted t) |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1717 ;; (goto-char isearch-barrier) |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1718 (isearch-printing-char)))) |
725 | 1719 |
1720 (defun isearch-process-search-char (char) | |
1721 ;; Append the char to the search string, update the message and re-search. | |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
1722 (isearch-process-search-string |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
1723 (char-to-string char) |
24924
ef8649234d91
(isearch-process-search-char): Write octal 200 correctly.
Richard M. Stallman <rms@gnu.org>
parents:
24921
diff
changeset
|
1724 (if (>= char ?\200) |
17794
2fc1e3833259
(isearch-process-search-char): Use multibyte
Richard M. Stallman <rms@gnu.org>
parents:
17781
diff
changeset
|
1725 (char-to-string char) |
2fc1e3833259
(isearch-process-search-char): Use multibyte
Richard M. Stallman <rms@gnu.org>
parents:
17781
diff
changeset
|
1726 (isearch-text-char-description char)))) |
725 | 1727 |
1728 (defun isearch-process-search-string (string message) | |
1729 (setq isearch-string (concat isearch-string string) | |
1730 isearch-message (concat isearch-message message)) | |
1731 (isearch-search-and-update)) | |
1732 | |
1733 | |
1734 ;; Search Ring | |
1735 | |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1736 (defun isearch-ring-adjust1 (advance) |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1737 ;; Helper for isearch-ring-adjust |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1738 (let* ((ring (if isearch-regexp regexp-search-ring search-ring)) |
725 | 1739 (length (length ring)) |
1740 (yank-pointer-name (if isearch-regexp | |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1741 'regexp-search-ring-yank-pointer |
725 | 1742 'search-ring-yank-pointer)) |
1743 (yank-pointer (eval yank-pointer-name))) | |
1744 (if (zerop length) | |
1745 () | |
1746 (set yank-pointer-name | |
1747 (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
|
1748 (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
|
1749 (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
|
1750 length))) |
1146
02b2f761f9df
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1143
diff
changeset
|
1751 (setq isearch-string (nth yank-pointer ring) |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1752 isearch-message (mapconcat 'isearch-text-char-description |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1753 isearch-string ""))))) |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1754 |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1755 (defun isearch-ring-adjust (advance) |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1756 ;; Helper for isearch-ring-advance and isearch-ring-retreat |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1757 (isearch-ring-adjust1 advance) |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1758 (if search-ring-update |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1759 (progn |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1760 (isearch-search) |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1761 (isearch-update)) |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1762 (isearch-edit-string) |
16711
890b229ea0c7
(isearch-ring-adjust): Don't pop the state at the start.
Richard M. Stallman <rms@gnu.org>
parents:
16687
diff
changeset
|
1763 ) |
890b229ea0c7
(isearch-ring-adjust): Don't pop the state at the start.
Richard M. Stallman <rms@gnu.org>
parents:
16687
diff
changeset
|
1764 (isearch-push-state)) |
725 | 1765 |
1766 (defun isearch-ring-advance () | |
1767 "Advance to the next search string in the ring." | |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1768 ;; This could be more general to handle a prefix arg, but who would use it. |
725 | 1769 (interactive) |
1770 (isearch-ring-adjust 'advance)) | |
1771 | |
1772 (defun isearch-ring-retreat () | |
1773 "Retreat to the previous search string in the ring." | |
1774 (interactive) | |
1775 (isearch-ring-adjust nil)) | |
1776 | |
1146
02b2f761f9df
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1143
diff
changeset
|
1777 (defun isearch-ring-advance-edit (n) |
25823
4cecefebde6f
(isearch): Add :links in defgroup.
Dave Love <fx@gnu.org>
parents:
25644
diff
changeset
|
1778 "Insert the next element of the search history into the minibuffer. |
4cecefebde6f
(isearch): Add :links in defgroup.
Dave Love <fx@gnu.org>
parents:
25644
diff
changeset
|
1779 With prefix arg N, insert the Nth element." |
1146
02b2f761f9df
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1143
diff
changeset
|
1780 (interactive "p") |
02b2f761f9df
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1143
diff
changeset
|
1781 (let* ((yank-pointer-name (if isearch-regexp |
02b2f761f9df
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1143
diff
changeset
|
1782 'regexp-search-ring-yank-pointer |
02b2f761f9df
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1143
diff
changeset
|
1783 'search-ring-yank-pointer)) |
02b2f761f9df
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1143
diff
changeset
|
1784 (yank-pointer (eval yank-pointer-name)) |
02b2f761f9df
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1143
diff
changeset
|
1785 (ring (if isearch-regexp regexp-search-ring search-ring)) |
02b2f761f9df
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1143
diff
changeset
|
1786 (length (length ring))) |
02b2f761f9df
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1143
diff
changeset
|
1787 (if (zerop length) |
02b2f761f9df
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1143
diff
changeset
|
1788 () |
02b2f761f9df
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1143
diff
changeset
|
1789 (set yank-pointer-name |
02b2f761f9df
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1143
diff
changeset
|
1790 (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
|
1791 (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
|
1792 length))) |
725 | 1793 |
26350
3b7a732fbde2
(isearch-ring-advance-edit, isearch-complete-edit):
Gerd Moellmann <gerd@gnu.org>
parents:
26335
diff
changeset
|
1794 (delete-field) |
1184 | 1795 (insert (nth yank-pointer ring)) |
1380
a7003e65eb66
(isearch-ring-advance-edit): Delete spurious `)'.
Richard M. Stallman <rms@gnu.org>
parents:
1184
diff
changeset
|
1796 (goto-char (point-max))))) |
725 | 1797 |
1146
02b2f761f9df
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1143
diff
changeset
|
1798 (defun isearch-ring-retreat-edit (n) |
25823
4cecefebde6f
(isearch): Add :links in defgroup.
Dave Love <fx@gnu.org>
parents:
25644
diff
changeset
|
1799 "Insert the previous element of the search history into the minibuffer. |
4cecefebde6f
(isearch): Add :links in defgroup.
Dave Love <fx@gnu.org>
parents:
25644
diff
changeset
|
1800 With prefix arg N, insert the Nth element." |
1146
02b2f761f9df
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1143
diff
changeset
|
1801 (interactive "p") |
02b2f761f9df
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1143
diff
changeset
|
1802 (isearch-ring-advance-edit (- n))) |
02b2f761f9df
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1143
diff
changeset
|
1803 |
02b2f761f9df
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1143
diff
changeset
|
1804 ;;(defun isearch-ring-adjust-edit (advance) |
02b2f761f9df
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1143
diff
changeset
|
1805 ;; "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
|
1806 ;; (isearch-ring-adjust1 advance) |
02b2f761f9df
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1143
diff
changeset
|
1807 ;; (erase-buffer) |
02b2f761f9df
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1143
diff
changeset
|
1808 ;; (insert isearch-string)) |
02b2f761f9df
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1143
diff
changeset
|
1809 |
02b2f761f9df
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1143
diff
changeset
|
1810 ;;(defun isearch-ring-advance-edit () |
02b2f761f9df
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1143
diff
changeset
|
1811 ;; (interactive) |
02b2f761f9df
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1143
diff
changeset
|
1812 ;; (isearch-ring-adjust-edit 'advance)) |
02b2f761f9df
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1143
diff
changeset
|
1813 |
02b2f761f9df
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1143
diff
changeset
|
1814 ;;(defun isearch-ring-retreat-edit () |
02b2f761f9df
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1143
diff
changeset
|
1815 ;; "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
|
1816 ;; (interactive) |
02b2f761f9df
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
1143
diff
changeset
|
1817 ;; (isearch-ring-adjust-edit nil)) |
725 | 1818 |
1819 | |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1820 (defun isearch-complete1 () |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1821 ;; Helper for isearch-complete and isearch-complete-edit |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1822 ;; Return t if completion OK, nil if no completion exists. |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1823 (let* ((ring (if isearch-regexp regexp-search-ring search-ring)) |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1824 (completion-ignore-case case-fold-search) |
50733
f038a895a805
(isearch-complete1): Don't allocate unnecessarily.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49420
diff
changeset
|
1825 (completion (try-completion isearch-string ring))) |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1826 (cond |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1827 ((eq completion t) |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1828 ;; isearch-string stays the same |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1829 t) |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1830 ((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
|
1831 (= 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
|
1832 (if (equal completion isearch-string) ;; no extension? |
16566
45e694f5babe
(isearch-complete1): If no completion,
Richard M. Stallman <rms@gnu.org>
parents:
16495
diff
changeset
|
1833 (progn |
45e694f5babe
(isearch-complete1): If no completion,
Richard M. Stallman <rms@gnu.org>
parents:
16495
diff
changeset
|
1834 (if completion-auto-help |
45e694f5babe
(isearch-complete1): If no completion,
Richard M. Stallman <rms@gnu.org>
parents:
16495
diff
changeset
|
1835 (with-output-to-temp-buffer "*Isearch completions*" |
49420
07a876ca33f0
(isearch-forward): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
49069
diff
changeset
|
1836 (display-completion-list |
50733
f038a895a805
(isearch-complete1): Don't allocate unnecessarily.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49420
diff
changeset
|
1837 (all-completions isearch-string ring)))) |
16566
45e694f5babe
(isearch-complete1): If no completion,
Richard M. Stallman <rms@gnu.org>
parents:
16495
diff
changeset
|
1838 t) |
45e694f5babe
(isearch-complete1): If no completion,
Richard M. Stallman <rms@gnu.org>
parents:
16495
diff
changeset
|
1839 (and completion |
45e694f5babe
(isearch-complete1): If no completion,
Richard M. Stallman <rms@gnu.org>
parents:
16495
diff
changeset
|
1840 (setq isearch-string completion)))) |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1841 (t |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1842 (message "No completion") ; waits a second if in minibuffer |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1843 nil)))) |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1844 |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1845 (defun isearch-complete () |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1846 "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
|
1847 The completed string is then editable in the minibuffer. |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1848 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
|
1849 (interactive) |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1850 (if (isearch-complete1) |
50783
f26c6004759f
(isearch-complete): Update isearch-message.
Richard M. Stallman <rms@gnu.org>
parents:
50733
diff
changeset
|
1851 (progn (setq isearch-message |
f26c6004759f
(isearch-complete): Update isearch-message.
Richard M. Stallman <rms@gnu.org>
parents:
50733
diff
changeset
|
1852 (mapconcat 'isearch-text-char-description |
f26c6004759f
(isearch-complete): Update isearch-message.
Richard M. Stallman <rms@gnu.org>
parents:
50733
diff
changeset
|
1853 isearch-string "")) |
f26c6004759f
(isearch-complete): Update isearch-message.
Richard M. Stallman <rms@gnu.org>
parents:
50733
diff
changeset
|
1854 (isearch-edit-string)) |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1855 ;; else |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1856 (sit-for 1) |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1857 (isearch-update))) |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1858 |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1859 (defun isearch-complete-edit () |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1860 "Same as `isearch-complete' except in the minibuffer." |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1861 (interactive) |
50733
f038a895a805
(isearch-complete1): Don't allocate unnecessarily.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49420
diff
changeset
|
1862 (setq isearch-string (field-string)) |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1863 (if (isearch-complete1) |
725 | 1864 (progn |
26350
3b7a732fbde2
(isearch-ring-advance-edit, isearch-complete-edit):
Gerd Moellmann <gerd@gnu.org>
parents:
26335
diff
changeset
|
1865 (delete-field) |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1866 (insert isearch-string)))) |
725 | 1867 |
1868 | |
1869 ;; Message string | |
1870 | |
1871 (defun isearch-message (&optional c-q-hack ellipsis) | |
1872 ;; Generate and print the message string. | |
1873 (let ((cursor-in-echo-area ellipsis) | |
1874 (m (concat | |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1875 (isearch-message-prefix c-q-hack ellipsis isearch-nonincremental) |
56170
b3821f47a6d4
(isearch-repeat): Avoid testing old match data.
Richard M. Stallman <rms@gnu.org>
parents:
55950
diff
changeset
|
1876 (if (and (not isearch-success) |
b3821f47a6d4
(isearch-repeat): Avoid testing old match data.
Richard M. Stallman <rms@gnu.org>
parents:
55950
diff
changeset
|
1877 (string-match " +$" isearch-message)) |
b3821f47a6d4
(isearch-repeat): Avoid testing old match data.
Richard M. Stallman <rms@gnu.org>
parents:
55950
diff
changeset
|
1878 (concat |
b3821f47a6d4
(isearch-repeat): Avoid testing old match data.
Richard M. Stallman <rms@gnu.org>
parents:
55950
diff
changeset
|
1879 (substring isearch-message 0 (match-beginning 0)) |
b3821f47a6d4
(isearch-repeat): Avoid testing old match data.
Richard M. Stallman <rms@gnu.org>
parents:
55950
diff
changeset
|
1880 (propertize (substring isearch-message (match-beginning 0)) |
b3821f47a6d4
(isearch-repeat): Avoid testing old match data.
Richard M. Stallman <rms@gnu.org>
parents:
55950
diff
changeset
|
1881 'face 'trailing-whitespace)) |
b3821f47a6d4
(isearch-repeat): Avoid testing old match data.
Richard M. Stallman <rms@gnu.org>
parents:
55950
diff
changeset
|
1882 isearch-message) |
725 | 1883 (isearch-message-suffix c-q-hack ellipsis) |
1884 ))) | |
10397
8fe0c72ba336
(isearch-edit-string): Disable message logging.
Karl Heuer <kwzh@gnu.org>
parents:
10257
diff
changeset
|
1885 (if c-q-hack |
8fe0c72ba336
(isearch-edit-string): Disable message logging.
Karl Heuer <kwzh@gnu.org>
parents:
10257
diff
changeset
|
1886 m |
8fe0c72ba336
(isearch-edit-string): Disable message logging.
Karl Heuer <kwzh@gnu.org>
parents:
10257
diff
changeset
|
1887 (let ((message-log-max nil)) |
8fe0c72ba336
(isearch-edit-string): Disable message logging.
Karl Heuer <kwzh@gnu.org>
parents:
10257
diff
changeset
|
1888 (message "%s" m))))) |
725 | 1889 |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1890 (defun isearch-message-prefix (&optional c-q-hack ellipsis nonincremental) |
725 | 1891 ;; If about to search, and previous search regexp was invalid, |
1892 ;; check that it still is. If it is valid now, | |
1893 ;; let the message we display while searching say that it is valid. | |
1894 (and isearch-invalid-regexp ellipsis | |
1895 (condition-case () | |
1896 (progn (re-search-forward isearch-string (point) t) | |
7378 | 1897 (setq isearch-invalid-regexp nil |
1898 isearch-within-brackets nil)) | |
725 | 1899 (error nil))) |
1900 ;; If currently failing, display no ellipsis. | |
1901 (or isearch-success (setq ellipsis nil)) | |
1902 (let ((m (concat (if isearch-success "" "failing ") | |
56905
661d52db56de
(isearch-toggle-regexp): Set `isearch-success' and `isearch-adjusted' to `t'.
Juri Linkov <juri@jurta.org>
parents:
56868
diff
changeset
|
1903 (if isearch-adjusted "pending " "") |
13254
7ed0775e99af
(isearch-message-prefix):
Richard M. Stallman <rms@gnu.org>
parents:
13112
diff
changeset
|
1904 (if (and isearch-wrapped |
56868
bec9907cc422
* isearch.el (isearch-wrap-function)
Juri Linkov <juri@jurta.org>
parents:
56867
diff
changeset
|
1905 (not isearch-wrap-function) |
13254
7ed0775e99af
(isearch-message-prefix):
Richard M. Stallman <rms@gnu.org>
parents:
13112
diff
changeset
|
1906 (if isearch-forward |
7ed0775e99af
(isearch-message-prefix):
Richard M. Stallman <rms@gnu.org>
parents:
13112
diff
changeset
|
1907 (> (point) isearch-opoint) |
7ed0775e99af
(isearch-message-prefix):
Richard M. Stallman <rms@gnu.org>
parents:
13112
diff
changeset
|
1908 (< (point) isearch-opoint))) |
7ed0775e99af
(isearch-message-prefix):
Richard M. Stallman <rms@gnu.org>
parents:
13112
diff
changeset
|
1909 "over") |
725 | 1910 (if isearch-wrapped "wrapped ") |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1911 (if isearch-word "word " "") |
725 | 1912 (if isearch-regexp "regexp " "") |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
1913 (if nonincremental "search" "I-search") |
17006 | 1914 (if isearch-forward "" " backward") |
19408
7457b6e05a60
(isearch-multibyte-characters-flag): Deleted.
Kenichi Handa <handa@m17n.org>
parents:
19146
diff
changeset
|
1915 (if current-input-method |
7457b6e05a60
(isearch-multibyte-characters-flag): Deleted.
Kenichi Handa <handa@m17n.org>
parents:
19146
diff
changeset
|
1916 (concat " [" current-input-method-title "]: ") |
17006 | 1917 ": ") |
725 | 1918 ))) |
44472
9d117150b0a2
(isearch-mode): Don't call make-frame-visible
Richard M. Stallman <rms@gnu.org>
parents:
44457
diff
changeset
|
1919 (propertize (concat (upcase (substring m 0 1)) (substring m 1)) |
9d117150b0a2
(isearch-mode): Don't call make-frame-visible
Richard M. Stallman <rms@gnu.org>
parents:
44457
diff
changeset
|
1920 'face 'minibuffer-prompt))) |
725 | 1921 |
1922 (defun isearch-message-suffix (&optional c-q-hack ellipsis) | |
1923 (concat (if c-q-hack "^Q" "") | |
1924 (if isearch-invalid-regexp | |
1925 (concat " [" isearch-invalid-regexp "]") | |
1926 ""))) | |
1927 | |
1928 | |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
1929 ;; Searching |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
1930 |
56170
b3821f47a6d4
(isearch-repeat): Avoid testing old match data.
Richard M. Stallman <rms@gnu.org>
parents:
55950
diff
changeset
|
1931 (defvar isearch-search-fun-function nil |
b3821f47a6d4
(isearch-repeat): Avoid testing old match data.
Richard M. Stallman <rms@gnu.org>
parents:
55950
diff
changeset
|
1932 "Override `isearch-search-fun'. |
b3821f47a6d4
(isearch-repeat): Avoid testing old match data.
Richard M. Stallman <rms@gnu.org>
parents:
55950
diff
changeset
|
1933 This function should return the search function for isearch to use. |
b3821f47a6d4
(isearch-repeat): Avoid testing old match data.
Richard M. Stallman <rms@gnu.org>
parents:
55950
diff
changeset
|
1934 It will call this function with three arguments |
b3821f47a6d4
(isearch-repeat): Avoid testing old match data.
Richard M. Stallman <rms@gnu.org>
parents:
55950
diff
changeset
|
1935 as if it were `search-forward'.") |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
1936 |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
1937 (defun isearch-search-fun () |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
1938 "Return the function to use for the search. |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
1939 Can be changed via `isearch-search-fun-function' for special needs." |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
1940 (if isearch-search-fun-function |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
1941 (funcall isearch-search-fun-function) |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
1942 (cond |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
1943 (isearch-word |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
1944 (if isearch-forward 'word-search-forward 'word-search-backward)) |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
1945 (isearch-regexp |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
1946 (if isearch-forward 're-search-forward 're-search-backward)) |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
1947 (t |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
1948 (if isearch-forward 'search-forward 'search-backward))))) |
725 | 1949 |
1950 (defun isearch-search () | |
1951 ;; Do the search with the current search string. | |
1952 (isearch-message nil t) | |
7294
4ff0c1e7c8e2
(isearch-case-fold-search): new possible value `yes'
Richard M. Stallman <rms@gnu.org>
parents:
6736
diff
changeset
|
1953 (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
|
1954 (setq isearch-case-fold-search |
ac5c322cea84
(search-upper-case): Make `no-yanks' the default.
Richard M. Stallman <rms@gnu.org>
parents:
3476
diff
changeset
|
1955 (isearch-no-upper-case-p isearch-string isearch-regexp))) |
725 | 1956 (condition-case lossage |
18866
04d56f77da0d
(search-invisible): Fix typo.
Richard M. Stallman <rms@gnu.org>
parents:
18783
diff
changeset
|
1957 (let ((inhibit-point-motion-hooks search-invisible) |
04d56f77da0d
(search-invisible): Fix typo.
Richard M. Stallman <rms@gnu.org>
parents:
18783
diff
changeset
|
1958 (inhibit-quit nil) |
16990
a2fc2ef460e3
(isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents:
16737
diff
changeset
|
1959 (case-fold-search isearch-case-fold-search) |
a2fc2ef460e3
(isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents:
16737
diff
changeset
|
1960 (retry t)) |
725 | 1961 (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
|
1962 (setq isearch-within-brackets nil) |
16990
a2fc2ef460e3
(isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents:
16737
diff
changeset
|
1963 (while retry |
a2fc2ef460e3
(isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents:
16737
diff
changeset
|
1964 (setq isearch-success |
a2fc2ef460e3
(isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents:
16737
diff
changeset
|
1965 (funcall |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
1966 (isearch-search-fun) |
16990
a2fc2ef460e3
(isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents:
16737
diff
changeset
|
1967 isearch-string nil t)) |
a2fc2ef460e3
(isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents:
16737
diff
changeset
|
1968 ;; Clear RETRY unless we matched some invisible text |
a2fc2ef460e3
(isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents:
16737
diff
changeset
|
1969 ;; and we aren't supposed to do that. |
18236
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
1970 (if (or (eq search-invisible t) |
16990
a2fc2ef460e3
(isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents:
16737
diff
changeset
|
1971 (not isearch-success) |
a2fc2ef460e3
(isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents:
16737
diff
changeset
|
1972 (bobp) (eobp) |
a2fc2ef460e3
(isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents:
16737
diff
changeset
|
1973 (= (match-beginning 0) (match-end 0)) |
a2fc2ef460e3
(isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents:
16737
diff
changeset
|
1974 (not (isearch-range-invisible |
a2fc2ef460e3
(isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents:
16737
diff
changeset
|
1975 (match-beginning 0) (match-end 0)))) |
a2fc2ef460e3
(isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents:
16737
diff
changeset
|
1976 (setq retry nil))) |
13799
49b7cd70c43c
(isearch-done): Use executing-kbd-macro.
Karl Heuer <kwzh@gnu.org>
parents:
13682
diff
changeset
|
1977 (setq isearch-just-started nil) |
725 | 1978 (if isearch-success |
1979 (setq isearch-other-end | |
1980 (if isearch-forward (match-beginning 0) (match-end 0))))) | |
1981 | |
5196 | 1982 (quit (isearch-unread ?\C-g) |
725 | 1983 (setq isearch-success nil)) |
1984 | |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
1985 (invalid-regexp |
725 | 1986 (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
|
1987 (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
|
1988 isearch-invalid-regexp)) |
725 | 1989 (if (string-match |
1990 "\\`Premature \\|\\`Unmatched \\|\\`Invalid " | |
1991 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
|
1992 (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
|
1993 (error |
35362
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
1994 ;; stack overflow in regexp search. |
35234
c6a74e51d185
(isearch-search): In the condition-case handler for
Gerd Moellmann <gerd@gnu.org>
parents:
35225
diff
changeset
|
1995 (setq isearch-invalid-regexp (format "%s" lossage)))) |
725 | 1996 |
1997 (if isearch-success | |
1998 nil | |
1999 ;; Ding if failed this time after succeeding last time. | |
56867
16f3ec82330a
Remove ancient Change Log section.
Juri Linkov <juri@jurta.org>
parents:
56681
diff
changeset
|
2000 (and (isearch-success-state (car isearch-cmds)) |
725 | 2001 (ding)) |
56868
bec9907cc422
* isearch.el (isearch-wrap-function)
Juri Linkov <juri@jurta.org>
parents:
56867
diff
changeset
|
2002 (if (functionp (isearch-pop-fun-state (car isearch-cmds))) |
bec9907cc422
* isearch.el (isearch-wrap-function)
Juri Linkov <juri@jurta.org>
parents:
56867
diff
changeset
|
2003 (funcall (isearch-pop-fun-state (car isearch-cmds)) (car isearch-cmds))) |
56867
16f3ec82330a
Remove ancient Change Log section.
Juri Linkov <juri@jurta.org>
parents:
56681
diff
changeset
|
2004 (goto-char (isearch-point-state (car isearch-cmds))))) |
725 | 2005 |
18236
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2006 |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
2007 ;; Called when opening an overlay, and we are still in isearch. |
18236
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2008 (defun isearch-open-overlay-temporary (ov) |
49420
07a876ca33f0
(isearch-forward): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
49069
diff
changeset
|
2009 (if (not (null (overlay-get ov 'isearch-open-invisible-temporary))) |
18236
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2010 ;; Some modes would want to open the overlays temporary during |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2011 ;; isearch in their own way, they should set the |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2012 ;; `isearch-open-invisible-temporary' to a function doing this. |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2013 (funcall (overlay-get ov 'isearch-open-invisible-temporary) ov nil) |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2014 ;; Store the values for the `invisible' and `intangible' |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2015 ;; properties, and then set them to nil. This way the text hidden |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2016 ;; by this overlay becomes visible. |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2017 |
35098
63af2c5d55f9
(isearch-lazy-highlight-remove-overlays): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
35083
diff
changeset
|
2018 ;; Do we really need to set the `intangible' property to t? Can we |
18236
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2019 ;; have the point inside an overlay with an `intangible' property? |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2020 ;; In 19.34 this does not exist so I cannot test it. |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2021 (overlay-put ov 'isearch-invisible (overlay-get ov 'invisible)) |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2022 (overlay-put ov 'isearch-intangible (overlay-get ov 'intangible)) |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2023 (overlay-put ov 'invisible nil) |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2024 (overlay-put ov 'intangible nil))) |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2025 |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2026 |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
2027 ;; This is called at the end of isearch. It will open the overlays |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
2028 ;; that contain the latest match. Obviously in case of a C-g the |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
2029 ;; point returns to the original location which surely is not contain |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
2030 ;; in any of these overlays, se we are safe in this case too. |
18236
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2031 (defun isearch-open-necessary-overlays (ov) |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
2032 (let ((inside-overlay (and (> (point) (overlay-start ov)) |
18236
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2033 (< (point) (overlay-end ov)))) |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2034 ;; If this exists it means that the overlay was opened using |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2035 ;; this function, not by us tweaking the overlay properties. |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2036 (fct-temp (overlay-get ov 'isearch-open-invisible-temporary))) |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2037 (when (or inside-overlay (not fct-temp)) |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2038 ;; restore the values for the `invisible' and `intangible' |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2039 ;; properties |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2040 (overlay-put ov 'invisible (overlay-get ov 'isearch-invisible)) |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2041 (overlay-put ov 'intangible (overlay-get ov 'isearch-intangible)) |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2042 (overlay-put ov 'isearch-invisible nil) |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2043 (overlay-put ov 'isearch-intangible nil)) |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2044 (if inside-overlay |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2045 (funcall (overlay-get ov 'isearch-open-invisible) ov) |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2046 (if fct-temp |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2047 (funcall fct-temp ov t))))) |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2048 |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
2049 ;; This is called when exiting isearch. It closes the temporary |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
2050 ;; opened overlays, except the ones that contain the latest match. |
18236
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2051 (defun isearch-clean-overlays () |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2052 (when isearch-opened-overlays |
33704
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
2053 (mapc 'isearch-open-necessary-overlays isearch-opened-overlays) |
18236
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2054 (setq isearch-opened-overlays nil))) |
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2055 |
39189
45d6d104c4f2
(isearch-intersects-p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
39047
diff
changeset
|
2056 |
45d6d104c4f2
(isearch-intersects-p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
39047
diff
changeset
|
2057 (defun isearch-intersects-p (start0 end0 start1 end1) |
45d6d104c4f2
(isearch-intersects-p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
39047
diff
changeset
|
2058 "Return t if regions START0..END0 and START1..END1 intersect." |
39256
cc4b3cf1bfcd
(isearch-intersects-p): Fix end checks.
Gerd Moellmann <gerd@gnu.org>
parents:
39189
diff
changeset
|
2059 (or (and (>= start0 start1) (< start0 end1)) |
cc4b3cf1bfcd
(isearch-intersects-p): Fix end checks.
Gerd Moellmann <gerd@gnu.org>
parents:
39189
diff
changeset
|
2060 (and (> end0 start1) (<= end0 end1)) |
cc4b3cf1bfcd
(isearch-intersects-p): Fix end checks.
Gerd Moellmann <gerd@gnu.org>
parents:
39189
diff
changeset
|
2061 (and (>= start1 start0) (< start1 end0)) |
cc4b3cf1bfcd
(isearch-intersects-p): Fix end checks.
Gerd Moellmann <gerd@gnu.org>
parents:
39189
diff
changeset
|
2062 (and (> end1 start0) (<= end1 end0)))) |
39189
45d6d104c4f2
(isearch-intersects-p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
39047
diff
changeset
|
2063 |
45d6d104c4f2
(isearch-intersects-p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
39047
diff
changeset
|
2064 |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
2065 ;; Verify if the current match is outside of each element of |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
2066 ;; `isearch-opened-overlays', if so close that overlay. |
39189
45d6d104c4f2
(isearch-intersects-p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
39047
diff
changeset
|
2067 |
45d6d104c4f2
(isearch-intersects-p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
39047
diff
changeset
|
2068 (defun isearch-close-unnecessary-overlays (begin end) |
45d6d104c4f2
(isearch-intersects-p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
39047
diff
changeset
|
2069 (let ((overlays isearch-opened-overlays)) |
18236
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2070 (setq isearch-opened-overlays nil) |
39189
45d6d104c4f2
(isearch-intersects-p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
39047
diff
changeset
|
2071 (dolist (ov overlays) |
45d6d104c4f2
(isearch-intersects-p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
39047
diff
changeset
|
2072 (if (isearch-intersects-p begin end (overlay-start ov) (overlay-end ov)) |
45d6d104c4f2
(isearch-intersects-p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
39047
diff
changeset
|
2073 (push ov isearch-opened-overlays) |
45d6d104c4f2
(isearch-intersects-p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
39047
diff
changeset
|
2074 (let ((fct-temp (overlay-get ov 'isearch-open-invisible-temporary))) |
45d6d104c4f2
(isearch-intersects-p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
39047
diff
changeset
|
2075 (if fct-temp |
45d6d104c4f2
(isearch-intersects-p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
39047
diff
changeset
|
2076 ;; If this exists it means that the overlay was opened |
45d6d104c4f2
(isearch-intersects-p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
39047
diff
changeset
|
2077 ;; using this function, not by us tweaking the overlay |
45d6d104c4f2
(isearch-intersects-p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
39047
diff
changeset
|
2078 ;; properties. |
45d6d104c4f2
(isearch-intersects-p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
39047
diff
changeset
|
2079 (funcall fct-temp ov t) |
45d6d104c4f2
(isearch-intersects-p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
39047
diff
changeset
|
2080 (overlay-put ov 'invisible (overlay-get ov 'isearch-invisible)) |
45d6d104c4f2
(isearch-intersects-p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
39047
diff
changeset
|
2081 (overlay-put ov 'intangible (overlay-get ov 'isearch-intangible)) |
45d6d104c4f2
(isearch-intersects-p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
39047
diff
changeset
|
2082 (overlay-put ov 'isearch-invisible nil) |
45d6d104c4f2
(isearch-intersects-p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
39047
diff
changeset
|
2083 (overlay-put ov 'isearch-intangible nil))))))) |
45d6d104c4f2
(isearch-intersects-p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
39047
diff
changeset
|
2084 |
18236
f249cd470d71
(isearch-hide-immediately): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18037
diff
changeset
|
2085 |
16990
a2fc2ef460e3
(isearch-search): Refuse to match invisible text.
Richard M. Stallman <rms@gnu.org>
parents:
16737
diff
changeset
|
2086 (defun isearch-range-invisible (beg end) |
18866
04d56f77da0d
(search-invisible): Fix typo.
Richard M. Stallman <rms@gnu.org>
parents:
18783
diff
changeset
|
2087 "Return t if all the text from BEG to END is invisible." |
48201
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2088 (when (/= beg end) |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2089 ;; Check that invisibility runs up to END. |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2090 (save-excursion |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2091 (goto-char beg) |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2092 (let (;; can-be-opened keeps track if we can open some overlays. |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2093 (can-be-opened (eq search-invisible 'open)) |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2094 ;; the list of overlays that could be opened |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2095 (crt-overlays nil)) |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2096 (when (and can-be-opened isearch-hide-immediately) |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2097 (isearch-close-unnecessary-overlays beg end)) |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2098 ;; If the following character is currently invisible, |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2099 ;; skip all characters with that same `invisible' property value. |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2100 ;; Do that over and over. |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2101 (while (and (< (point) end) |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2102 (let ((prop |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2103 (get-char-property (point) 'invisible))) |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2104 (if (eq buffer-invisibility-spec t) |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2105 prop |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2106 (or (memq prop buffer-invisibility-spec) |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2107 (assq prop buffer-invisibility-spec))))) |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2108 (if (get-text-property (point) 'invisible) |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2109 (progn |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2110 (goto-char (next-single-property-change (point) 'invisible |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2111 nil end)) |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2112 ;; if text is hidden by an `invisible' text property |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2113 ;; we cannot open it at all. |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2114 (setq can-be-opened nil)) |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2115 (when can-be-opened |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2116 (let ((overlays (overlays-at (point))) |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2117 ov-list |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2118 o |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2119 invis-prop) |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2120 (while overlays |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2121 (setq o (car overlays) |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2122 invis-prop (overlay-get o 'invisible)) |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2123 (if (if (eq buffer-invisibility-spec t) |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2124 invis-prop |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2125 (or (memq invis-prop buffer-invisibility-spec) |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2126 (assq invis-prop buffer-invisibility-spec))) |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2127 (if (overlay-get o 'isearch-open-invisible) |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2128 (setq ov-list (cons o ov-list)) |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2129 ;; We found one overlay that cannot be |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2130 ;; opened, that means the whole chunk |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2131 ;; cannot be opened. |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2132 (setq can-be-opened nil))) |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2133 (setq overlays (cdr overlays))) |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2134 (if can-be-opened |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2135 ;; It makes sense to append to the open |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2136 ;; overlays list only if we know that this is |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2137 ;; t. |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2138 (setq crt-overlays (append ov-list crt-overlays))))) |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2139 (goto-char (next-overlay-change (point))))) |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2140 ;; See if invisibility reaches up thru END. |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2141 (if (>= (point) end) |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2142 (if (and can-be-opened (consp crt-overlays)) |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2143 (progn |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2144 (setq isearch-opened-overlays |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2145 (append isearch-opened-overlays crt-overlays)) |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2146 (mapc 'isearch-open-overlay-temporary crt-overlays) |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2147 nil) |
f233dc0ca0aa
(isearch-hidden): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47341
diff
changeset
|
2148 (setq isearch-hidden t))))))) |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
2149 |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
2150 |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
2151 ;; Highlighting |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
2152 |
3526
ac5c322cea84
(search-upper-case): Make `no-yanks' the default.
Richard M. Stallman <rms@gnu.org>
parents:
3476
diff
changeset
|
2153 (defvar isearch-overlay nil) |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
2154 |
3526
ac5c322cea84
(search-upper-case): Make `no-yanks' the default.
Richard M. Stallman <rms@gnu.org>
parents:
3476
diff
changeset
|
2155 (defun isearch-highlight (beg end) |
35661
6c4ff52315a3
(isearch-highlight): Don't punt if the display
Eli Zaretskii <eliz@gnu.org>
parents:
35458
diff
changeset
|
2156 (unless (null search-highlight) |
32402
b8defc3b27e2
(isearch-set-lazy-highlight-faces-at): New function.
Miles Bader <miles@gnu.org>
parents:
32083
diff
changeset
|
2157 (cond (isearch-overlay |
b8defc3b27e2
(isearch-set-lazy-highlight-faces-at): New function.
Miles Bader <miles@gnu.org>
parents:
32083
diff
changeset
|
2158 ;; Overlay already exists, just move it. |
b8defc3b27e2
(isearch-set-lazy-highlight-faces-at): New function.
Miles Bader <miles@gnu.org>
parents:
32083
diff
changeset
|
2159 (move-overlay isearch-overlay beg end (current-buffer))) |
b8defc3b27e2
(isearch-set-lazy-highlight-faces-at): New function.
Miles Bader <miles@gnu.org>
parents:
32083
diff
changeset
|
2160 |
b8defc3b27e2
(isearch-set-lazy-highlight-faces-at): New function.
Miles Bader <miles@gnu.org>
parents:
32083
diff
changeset
|
2161 (t |
b8defc3b27e2
(isearch-set-lazy-highlight-faces-at): New function.
Miles Bader <miles@gnu.org>
parents:
32083
diff
changeset
|
2162 ;; Overlay doesn't exist, create it. |
b8defc3b27e2
(isearch-set-lazy-highlight-faces-at): New function.
Miles Bader <miles@gnu.org>
parents:
32083
diff
changeset
|
2163 (setq isearch-overlay (make-overlay beg end)) |
35362
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2164 (overlay-put isearch-overlay 'face isearch) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2165 (overlay-put isearch-overlay 'priority 1) ;higher than lazy overlays |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2166 )))) |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
2167 |
3526
ac5c322cea84
(search-upper-case): Make `no-yanks' the default.
Richard M. Stallman <rms@gnu.org>
parents:
3476
diff
changeset
|
2168 (defun isearch-dehighlight (totally) |
32402
b8defc3b27e2
(isearch-set-lazy-highlight-faces-at): New function.
Miles Bader <miles@gnu.org>
parents:
32083
diff
changeset
|
2169 (when isearch-overlay |
b8defc3b27e2
(isearch-set-lazy-highlight-faces-at): New function.
Miles Bader <miles@gnu.org>
parents:
32083
diff
changeset
|
2170 (delete-overlay isearch-overlay))) |
b8defc3b27e2
(isearch-set-lazy-highlight-faces-at): New function.
Miles Bader <miles@gnu.org>
parents:
32083
diff
changeset
|
2171 |
725 | 2172 |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
2173 ;; General utilities |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
2174 |
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
2175 |
3526
ac5c322cea84
(search-upper-case): Make `no-yanks' the default.
Richard M. Stallman <rms@gnu.org>
parents:
3476
diff
changeset
|
2176 (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
|
2177 "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
|
2178 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
|
2179 since they have special meaning in a regexp." |
49420
07a876ca33f0
(isearch-forward): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
49069
diff
changeset
|
2180 (let (quote-flag (i 0) (len (length string)) found) |
16635
1b774e82752f
(isearch-no-upper-case-p): Use downcase
Richard M. Stallman <rms@gnu.org>
parents:
16620
diff
changeset
|
2181 (while (and (not found) (< i len)) |
1b774e82752f
(isearch-no-upper-case-p): Use downcase
Richard M. Stallman <rms@gnu.org>
parents:
16620
diff
changeset
|
2182 (let ((char (aref string i))) |
1b774e82752f
(isearch-no-upper-case-p): Use downcase
Richard M. Stallman <rms@gnu.org>
parents:
16620
diff
changeset
|
2183 (if (and regexp-flag (eq char ?\\)) |
1b774e82752f
(isearch-no-upper-case-p): Use downcase
Richard M. Stallman <rms@gnu.org>
parents:
16620
diff
changeset
|
2184 (setq quote-flag (not quote-flag)) |
1b774e82752f
(isearch-no-upper-case-p): Use downcase
Richard M. Stallman <rms@gnu.org>
parents:
16620
diff
changeset
|
2185 (if (and (not quote-flag) (not (eq char (downcase char)))) |
48775
25ef28e528f4
(isearch-no-upper-case-p): \\ only quotes one character.
Richard M. Stallman <rms@gnu.org>
parents:
48206
diff
changeset
|
2186 (setq found t)) |
25ef28e528f4
(isearch-no-upper-case-p): \\ only quotes one character.
Richard M. Stallman <rms@gnu.org>
parents:
48206
diff
changeset
|
2187 (setq quote-flag nil))) |
16635
1b774e82752f
(isearch-no-upper-case-p): Use downcase
Richard M. Stallman <rms@gnu.org>
parents:
16620
diff
changeset
|
2188 (setq i (1+ i))) |
1b774e82752f
(isearch-no-upper-case-p): Use downcase
Richard M. Stallman <rms@gnu.org>
parents:
16620
diff
changeset
|
2189 (not found))) |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
2190 |
3526
ac5c322cea84
(search-upper-case): Make `no-yanks' the default.
Richard M. Stallman <rms@gnu.org>
parents:
3476
diff
changeset
|
2191 ;; Portability functions to support various Emacs versions. |
725 | 2192 |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
2193 (defun isearch-text-char-description (c) |
31974
9b1d5a50bddd
(isearch-text-char-description): Pointless rewrite.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30476
diff
changeset
|
2194 (cond |
9b1d5a50bddd
(isearch-text-char-description): Pointless rewrite.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30476
diff
changeset
|
2195 ((< c ?\ ) (format "^%c" (+ c 64))) |
9b1d5a50bddd
(isearch-text-char-description): Pointless rewrite.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30476
diff
changeset
|
2196 ((= c ?\^?) "^?") |
9b1d5a50bddd
(isearch-text-char-description): Pointless rewrite.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30476
diff
changeset
|
2197 (t (char-to-string c)))) |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
2198 |
9934
4c3ab9b8d1a9
(isearch-unread): Always use unread-command-events.
Richard M. Stallman <rms@gnu.org>
parents:
9768
diff
changeset
|
2199 ;; General function to unread characters or events. |
13799
49b7cd70c43c
(isearch-done): Use executing-kbd-macro.
Karl Heuer <kwzh@gnu.org>
parents:
13682
diff
changeset
|
2200 ;; 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
|
2201 (defun isearch-unread (&rest char-or-events) |
33704
f14d787f4b33
(isearch-mode-map): Fix docstring. Init in defvar.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32402
diff
changeset
|
2202 (mapc '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
|
2203 (setq unread-command-events |
4c3ab9b8d1a9
(isearch-unread): Always use unread-command-events.
Richard M. Stallman <rms@gnu.org>
parents:
9768
diff
changeset
|
2204 (append char-or-events unread-command-events))) |
1142
7fc9de9d8cef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
853
diff
changeset
|
2205 |
26408 | 2206 |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
2207 ;; isearch-lazy-highlight feature |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
2208 ;; by Bob Glickstein <http://www.zanshin.com/~bobg/> |
26408 | 2209 |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
2210 ;; When active, *every* match for the current search string is |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
2211 ;; highlighted: the current one using the normal isearch match color |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
2212 ;; and all the others using `isearch-lazy-highlight-face'. The extra |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
2213 ;; highlighting makes it easier to anticipate where the cursor will |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
2214 ;; land each time you press C-s or C-r to repeat a pending search. |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
2215 ;; Highlighting of these additional matches happens in a deferred |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
2216 ;; fashion using "idle timers," so the cycles needed do not rob |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
2217 ;; isearch of its usual snappy response. |
26408 | 2218 |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
2219 ;; IMPLEMENTATION NOTE: This depends on some isearch internals. |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
2220 ;; Specifically: |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
2221 ;; - `isearch-update' is expected to be called (at least) every time |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
2222 ;; the search string or window-start changes; |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
2223 ;; - `isearch-string' is expected to contain the current search |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
2224 ;; string as entered by the user; |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
2225 ;; - the type of the current search is expected to be given by |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
2226 ;; `isearch-word' and `isearch-regexp'; |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
2227 ;; - the direction of the current search is expected to be given by |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
2228 ;; `isearch-forward'; |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
2229 ;; - the variable `isearch-invalid-regexp' is expected to be true |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
2230 ;; iff `isearch-string' is an invalid regexp. |
26408 | 2231 |
2232 (defgroup isearch-lazy-highlight nil | |
2233 "Lazy highlighting feature for incremental search." | |
2234 :prefix "isearch-lazy-highlight-" | |
35344
44f290e19a70
(isearch-lazy-highlight): Add :version.
Dave Love <fx@gnu.org>
parents:
35234
diff
changeset
|
2235 :version "21.1" |
26408 | 2236 :group 'isearch) |
2237 | |
2238 (defcustom isearch-lazy-highlight t | |
2239 "*Controls the lazy-highlighting during incremental searches. | |
2240 When non-nil, all text in the buffer matching the current search | |
2241 string is highlighted lazily (see `isearch-lazy-highlight-initial-delay' | |
2242 and `isearch-lazy-highlight-interval')." | |
2243 :type 'boolean | |
2244 :group 'isearch-lazy-highlight) | |
2245 | |
2246 (defcustom isearch-lazy-highlight-cleanup t | |
2247 "*Controls whether to remove extra highlighting after a search. | |
2248 If this is nil, extra highlighting can be \"manually\" removed with | |
2249 \\[isearch-lazy-highlight-cleanup]." | |
2250 :type 'boolean | |
2251 :group 'isearch-lazy-highlight) | |
2252 | |
35454
9890c94c01ea
(isearch-lazy-highlight-initial-delay): Set default
Gerd Moellmann <gerd@gnu.org>
parents:
35435
diff
changeset
|
2253 (defcustom isearch-lazy-highlight-initial-delay 0.25 |
26408 | 2254 "*Seconds to wait before beginning to lazily highlight all matches." |
2255 :type 'number | |
2256 :group 'isearch-lazy-highlight) | |
2257 | |
35363
01853844ff61
(isearch-lazy-highlight-initial-delay)
Gerd Moellmann <gerd@gnu.org>
parents:
35362
diff
changeset
|
2258 (defcustom isearch-lazy-highlight-interval 0 ; 0.0625 |
26408 | 2259 "*Seconds between lazily highlighting successive matches." |
2260 :type 'number | |
2261 :group 'isearch-lazy-highlight) | |
2262 | |
35362
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2263 (defcustom isearch-lazy-highlight-max-at-a-time 20 |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2264 "*Maximum matches to highlight at a time (for `isearch-lazy-highlight'). |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2265 Larger values may reduce isearch's responsiveness to user input; |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2266 smaller values make matches highlight slowly. |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2267 A value of nil means highlight all matches." |
34603
dab8fe8d55f4
(isearch-lazy-highlight-max): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
33725
diff
changeset
|
2268 :type '(choice (const :tag "All" nil) |
dab8fe8d55f4
(isearch-lazy-highlight-max): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
33725
diff
changeset
|
2269 (integer :tag "Some")) |
dab8fe8d55f4
(isearch-lazy-highlight-max): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
33725
diff
changeset
|
2270 :group 'isearch-lazy-highlight) |
dab8fe8d55f4
(isearch-lazy-highlight-max): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
33725
diff
changeset
|
2271 |
32080
ce5196c4aa6f
(isearch-faces): New custom group.
Gerd Moellmann <gerd@gnu.org>
parents:
31974
diff
changeset
|
2272 (defgroup isearch-faces nil |
ce5196c4aa6f
(isearch-faces): New custom group.
Gerd Moellmann <gerd@gnu.org>
parents:
31974
diff
changeset
|
2273 "Lazy highlighting feature for incremental search." |
ce5196c4aa6f
(isearch-faces): New custom group.
Gerd Moellmann <gerd@gnu.org>
parents:
31974
diff
changeset
|
2274 :version "21.1" |
ce5196c4aa6f
(isearch-faces): New custom group.
Gerd Moellmann <gerd@gnu.org>
parents:
31974
diff
changeset
|
2275 :group 'isearch) |
ce5196c4aa6f
(isearch-faces): New custom group.
Gerd Moellmann <gerd@gnu.org>
parents:
31974
diff
changeset
|
2276 |
ce5196c4aa6f
(isearch-faces): New custom group.
Gerd Moellmann <gerd@gnu.org>
parents:
31974
diff
changeset
|
2277 (defface isearch |
54154
88158cece6fb
(isearch, isearch-lazy-highlight-face): Use `min-colors'.
Eli Zaretskii <eliz@gnu.org>
parents:
52965
diff
changeset
|
2278 '((((class color) (min-colors 88) (background light)) |
41255 | 2279 ;; The background must not be too dark, for that means |
2280 ;; the character is hard to see when the cursor is there. | |
41230
32198f207db2
(isearch): Use magenta2 as bg for (background light)
Richard M. Stallman <rms@gnu.org>
parents:
41014
diff
changeset
|
2281 (:background "magenta2" :foreground "lightskyblue1")) |
54154
88158cece6fb
(isearch, isearch-lazy-highlight-face): Use `min-colors'.
Eli Zaretskii <eliz@gnu.org>
parents:
52965
diff
changeset
|
2282 (((class color) (min-colors 88) (background dark)) |
35158
7e92991883c2
(isearch, isearch-lazy-highlight-face): New
Eli Zaretskii <eliz@gnu.org>
parents:
35120
diff
changeset
|
2283 (:background "palevioletred2" :foreground "brown4")) |
54154
88158cece6fb
(isearch, isearch-lazy-highlight-face): Use `min-colors'.
Eli Zaretskii <eliz@gnu.org>
parents:
52965
diff
changeset
|
2284 (((class color) (min-colors 16)) |
88158cece6fb
(isearch, isearch-lazy-highlight-face): Use `min-colors'.
Eli Zaretskii <eliz@gnu.org>
parents:
52965
diff
changeset
|
2285 (:background "magenta4" :foreground "cyan1")) |
88158cece6fb
(isearch, isearch-lazy-highlight-face): Use `min-colors'.
Eli Zaretskii <eliz@gnu.org>
parents:
52965
diff
changeset
|
2286 (((class color) (min-colors 8)) |
88158cece6fb
(isearch, isearch-lazy-highlight-face): Use `min-colors'.
Eli Zaretskii <eliz@gnu.org>
parents:
52965
diff
changeset
|
2287 (:background "magenta4" :foreground "cyan1")) |
35158
7e92991883c2
(isearch, isearch-lazy-highlight-face): New
Eli Zaretskii <eliz@gnu.org>
parents:
35120
diff
changeset
|
2288 (t (:inverse-video t))) |
7e92991883c2
(isearch, isearch-lazy-highlight-face): New
Eli Zaretskii <eliz@gnu.org>
parents:
35120
diff
changeset
|
2289 "Face for highlighting Isearch matches." |
32080
ce5196c4aa6f
(isearch-faces): New custom group.
Gerd Moellmann <gerd@gnu.org>
parents:
31974
diff
changeset
|
2290 :group 'isearch-faces) |
ce5196c4aa6f
(isearch-faces): New custom group.
Gerd Moellmann <gerd@gnu.org>
parents:
31974
diff
changeset
|
2291 (defvar isearch 'isearch) |
ce5196c4aa6f
(isearch-faces): New custom group.
Gerd Moellmann <gerd@gnu.org>
parents:
31974
diff
changeset
|
2292 |
ce5196c4aa6f
(isearch-faces): New custom group.
Gerd Moellmann <gerd@gnu.org>
parents:
31974
diff
changeset
|
2293 (defface isearch-lazy-highlight-face |
54154
88158cece6fb
(isearch, isearch-lazy-highlight-face): Use `min-colors'.
Eli Zaretskii <eliz@gnu.org>
parents:
52965
diff
changeset
|
2294 '((((class color) (min-colors 88) (background light)) |
88158cece6fb
(isearch, isearch-lazy-highlight-face): Use `min-colors'.
Eli Zaretskii <eliz@gnu.org>
parents:
52965
diff
changeset
|
2295 (:background "paleturquoise")) |
88158cece6fb
(isearch, isearch-lazy-highlight-face): Use `min-colors'.
Eli Zaretskii <eliz@gnu.org>
parents:
52965
diff
changeset
|
2296 (((class color) (min-colors 88) (background dark)) |
88158cece6fb
(isearch, isearch-lazy-highlight-face): Use `min-colors'.
Eli Zaretskii <eliz@gnu.org>
parents:
52965
diff
changeset
|
2297 (:background "paleturquoise4")) |
88158cece6fb
(isearch, isearch-lazy-highlight-face): Use `min-colors'.
Eli Zaretskii <eliz@gnu.org>
parents:
52965
diff
changeset
|
2298 (((class color) (min-colors 16)) |
35158
7e92991883c2
(isearch, isearch-lazy-highlight-face): New
Eli Zaretskii <eliz@gnu.org>
parents:
35120
diff
changeset
|
2299 (:background "turquoise3")) |
54154
88158cece6fb
(isearch, isearch-lazy-highlight-face): Use `min-colors'.
Eli Zaretskii <eliz@gnu.org>
parents:
52965
diff
changeset
|
2300 (((class color) (min-colors 8)) |
88158cece6fb
(isearch, isearch-lazy-highlight-face): Use `min-colors'.
Eli Zaretskii <eliz@gnu.org>
parents:
52965
diff
changeset
|
2301 (:background "turquoise3")) |
35158
7e92991883c2
(isearch, isearch-lazy-highlight-face): New
Eli Zaretskii <eliz@gnu.org>
parents:
35120
diff
changeset
|
2302 (t (:underline t))) |
7e92991883c2
(isearch, isearch-lazy-highlight-face): New
Eli Zaretskii <eliz@gnu.org>
parents:
35120
diff
changeset
|
2303 "Face for lazy highlighting of Isearch matches other than the current one." |
32080
ce5196c4aa6f
(isearch-faces): New custom group.
Gerd Moellmann <gerd@gnu.org>
parents:
31974
diff
changeset
|
2304 :group 'isearch-faces) |
ce5196c4aa6f
(isearch-faces): New custom group.
Gerd Moellmann <gerd@gnu.org>
parents:
31974
diff
changeset
|
2305 (defvar isearch-lazy-highlight-face 'isearch-lazy-highlight-face) |
26408 | 2306 |
2307 (defvar isearch-lazy-highlight-overlays nil) | |
35362
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2308 (defvar isearch-lazy-highlight-wrapped nil) |
26408 | 2309 (defvar isearch-lazy-highlight-start nil) |
2310 (defvar isearch-lazy-highlight-end nil) | |
2311 (defvar isearch-lazy-highlight-timer nil) | |
2312 (defvar isearch-lazy-highlight-last-string nil) | |
35362
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2313 (defvar isearch-lazy-highlight-window nil) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2314 (defvar isearch-lazy-highlight-window-start nil) |
52965
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
2315 (defvar isearch-lazy-highlight-window-end nil) |
35458
52a68daf83b8
(isearch-lazy-highlight-case-fold-search)
Gerd Moellmann <gerd@gnu.org>
parents:
35454
diff
changeset
|
2316 (defvar isearch-lazy-highlight-case-fold-search nil) |
52a68daf83b8
(isearch-lazy-highlight-case-fold-search)
Gerd Moellmann <gerd@gnu.org>
parents:
35454
diff
changeset
|
2317 (defvar isearch-lazy-highlight-regexp nil) |
26408 | 2318 |
35362
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2319 (defun isearch-lazy-highlight-cleanup (&optional force) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2320 "Stop lazy highlighting and remove extra highlighting from current buffer. |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2321 FORCE non-nil means do it whether or not `isearch-lazy-highlight-cleanup' |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2322 is nil. This function is called when exiting an incremental search if |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2323 `isearch-lazy-highlight-cleanup' is non-nil." |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2324 (interactive '(t)) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2325 (if (or force isearch-lazy-highlight-cleanup) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2326 (while isearch-lazy-highlight-overlays |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2327 (delete-overlay (car isearch-lazy-highlight-overlays)) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2328 (setq isearch-lazy-highlight-overlays |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2329 (cdr isearch-lazy-highlight-overlays)))) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2330 (when isearch-lazy-highlight-timer |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2331 (cancel-timer isearch-lazy-highlight-timer) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2332 (setq isearch-lazy-highlight-timer nil))) |
26408 | 2333 |
2334 (defun isearch-lazy-highlight-new-loop () | |
35362
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2335 "Cleanup any previous `isearch-lazy-highlight' loop and begin a new one. |
26408 | 2336 This happens when `isearch-update' is invoked (which can cause the |
35362
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2337 search string to change or the window to scroll)." |
35012
444b43c38978
Do highlighting of alternative matches all at once,
Richard M. Stallman <rms@gnu.org>
parents:
34603
diff
changeset
|
2338 (when (and isearch-lazy-highlight |
43129
67d86dad5454
(isearch-update): Don't update display in kbd macro.
Richard M. Stallman <rms@gnu.org>
parents:
42196
diff
changeset
|
2339 (null executing-kbd-macro) |
35362
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2340 (sit-for 0) ;make sure (window-start) is credible |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2341 (or (not (equal isearch-string |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2342 isearch-lazy-highlight-last-string)) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2343 (not (eq (selected-window) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2344 isearch-lazy-highlight-window)) |
35458
52a68daf83b8
(isearch-lazy-highlight-case-fold-search)
Gerd Moellmann <gerd@gnu.org>
parents:
35454
diff
changeset
|
2345 (not (eq isearch-lazy-highlight-case-fold-search |
52a68daf83b8
(isearch-lazy-highlight-case-fold-search)
Gerd Moellmann <gerd@gnu.org>
parents:
35454
diff
changeset
|
2346 isearch-case-fold-search)) |
52a68daf83b8
(isearch-lazy-highlight-case-fold-search)
Gerd Moellmann <gerd@gnu.org>
parents:
35454
diff
changeset
|
2347 (not (eq isearch-lazy-highlight-regexp |
52a68daf83b8
(isearch-lazy-highlight-case-fold-search)
Gerd Moellmann <gerd@gnu.org>
parents:
35454
diff
changeset
|
2348 isearch-regexp)) |
35362
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2349 (not (= (window-start) |
52965
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
2350 isearch-lazy-highlight-window-start)) |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
2351 (not (= (window-end) ; Window may have been split/joined. |
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
2352 isearch-lazy-highlight-window-end)))) |
35362
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2353 ;; something important did indeed change |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2354 (isearch-lazy-highlight-cleanup t) ;kill old loop & remove overlays |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2355 (when (not isearch-invalid-regexp) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2356 (setq isearch-lazy-highlight-window (selected-window) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2357 isearch-lazy-highlight-window-start (window-start) |
52965
0f3d00e06554
(isearch-unread-key-sequence): New function, extracted from
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
2358 isearch-lazy-highlight-window-end (window-end) |
35362
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2359 isearch-lazy-highlight-start (point) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2360 isearch-lazy-highlight-end (point) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2361 isearch-lazy-highlight-last-string isearch-string |
35458
52a68daf83b8
(isearch-lazy-highlight-case-fold-search)
Gerd Moellmann <gerd@gnu.org>
parents:
35454
diff
changeset
|
2362 isearch-lazy-highlight-case-fold-search isearch-case-fold-search |
52a68daf83b8
(isearch-lazy-highlight-case-fold-search)
Gerd Moellmann <gerd@gnu.org>
parents:
35454
diff
changeset
|
2363 isearch-lazy-highlight-regexp isearch-regexp |
35362
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2364 isearch-lazy-highlight-wrapped nil) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2365 (setq isearch-lazy-highlight-timer |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2366 (run-with-idle-timer isearch-lazy-highlight-initial-delay nil |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2367 'isearch-lazy-highlight-update))))) |
35012
444b43c38978
Do highlighting of alternative matches all at once,
Richard M. Stallman <rms@gnu.org>
parents:
34603
diff
changeset
|
2368 |
35362
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2369 (defun isearch-lazy-highlight-search () |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2370 "Search ahead for the next or previous match, for lazy highlighting. |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2371 Attempt to do the search exactly the way the pending isearch would." |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
2372 (let ((case-fold-search isearch-case-fold-search)) |
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
2373 (funcall (isearch-search-fun) |
35362
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2374 isearch-string |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2375 (if isearch-forward |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2376 (if isearch-lazy-highlight-wrapped |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2377 isearch-lazy-highlight-start |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2378 (window-end)) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2379 (if isearch-lazy-highlight-wrapped |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2380 isearch-lazy-highlight-end |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2381 (window-start))) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2382 t))) |
26408 | 2383 |
2384 (defun isearch-lazy-highlight-update () | |
35362
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2385 "Update highlighting of other matches for current search." |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2386 (let ((max isearch-lazy-highlight-max-at-a-time) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2387 (looping t) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2388 nomore) |
35225
eee3a978c12e
(isearch-lazy-highlight-update):
Richard M. Stallman <rms@gnu.org>
parents:
35212
diff
changeset
|
2389 (save-excursion |
eee3a978c12e
(isearch-lazy-highlight-update):
Richard M. Stallman <rms@gnu.org>
parents:
35212
diff
changeset
|
2390 (save-match-data |
35362
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2391 (goto-char (if isearch-forward |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2392 isearch-lazy-highlight-end |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2393 isearch-lazy-highlight-start)) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2394 (while looping |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2395 (let ((found (isearch-lazy-highlight-search))) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2396 (when max |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2397 (setq max (1- max)) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2398 (if (<= max 0) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2399 (setq looping nil))) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2400 (if found |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2401 (let ((mb (match-beginning 0)) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2402 (me (match-end 0))) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2403 (if (= mb me) ;zero-length match |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2404 (forward-char 1) |
32402
b8defc3b27e2
(isearch-set-lazy-highlight-faces-at): New function.
Miles Bader <miles@gnu.org>
parents:
32083
diff
changeset
|
2405 |
35362
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2406 ;; non-zero-length match |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2407 (let ((ov (make-overlay mb me))) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2408 (overlay-put ov 'face isearch-lazy-highlight-face) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2409 (overlay-put ov 'priority 0) ;lower than main overlay |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2410 (overlay-put ov 'window (selected-window)) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2411 (push ov isearch-lazy-highlight-overlays))) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2412 (if isearch-forward |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2413 (setq isearch-lazy-highlight-end (point)) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2414 (setq isearch-lazy-highlight-start (point)))) |
32083
b716f8518dd7
(isearch-lazy-highlight-update): Don't put a lazy
Gerd Moellmann <gerd@gnu.org>
parents:
32080
diff
changeset
|
2415 |
35362
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2416 ;; not found |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2417 (if isearch-lazy-highlight-wrapped |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2418 (setq looping nil |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2419 nomore t) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2420 (setq isearch-lazy-highlight-wrapped t) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2421 (if isearch-forward |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2422 (progn |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2423 (setq isearch-lazy-highlight-end (window-start)) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2424 (goto-char (window-start))) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2425 (setq isearch-lazy-highlight-start (window-end)) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2426 (goto-char (window-end))))))) |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2427 (unless nomore |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2428 (setq isearch-lazy-highlight-timer |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2429 (run-at-time isearch-lazy-highlight-interval nil |
f6b85f5a5397
(isearch-highlight): Set isearch-overlay priority to
Gerd Moellmann <gerd@gnu.org>
parents:
35344
diff
changeset
|
2430 'isearch-lazy-highlight-update))))))) |
26408 | 2431 |
30476
26fe451fc5f7
(isearch-resume): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29377
diff
changeset
|
2432 (defun isearch-resume (search regexp word forward message case-fold) |
26fe451fc5f7
(isearch-resume): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29377
diff
changeset
|
2433 "Resume an incremental search. |
26fe451fc5f7
(isearch-resume): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29377
diff
changeset
|
2434 SEARCH is the string or regexp searched for. |
26fe451fc5f7
(isearch-resume): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29377
diff
changeset
|
2435 REGEXP non-nil means the resumed search was a regexp search. |
26fe451fc5f7
(isearch-resume): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29377
diff
changeset
|
2436 WORD non-nil means resume a word search. |
26fe451fc5f7
(isearch-resume): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29377
diff
changeset
|
2437 FORWARD non-nil means resume a forward search. |
26fe451fc5f7
(isearch-resume): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29377
diff
changeset
|
2438 MESSAGE is the echo-area message recorded for the search resumed. |
26fe451fc5f7
(isearch-resume): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29377
diff
changeset
|
2439 CASE-FOLD non-nil means the search was case-insensitive." |
26fe451fc5f7
(isearch-resume): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29377
diff
changeset
|
2440 (isearch-mode forward regexp nil nil word) |
26fe451fc5f7
(isearch-resume): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29377
diff
changeset
|
2441 (setq isearch-string search |
26fe451fc5f7
(isearch-resume): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29377
diff
changeset
|
2442 isearch-message message |
26fe451fc5f7
(isearch-resume): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29377
diff
changeset
|
2443 isearch-case-fold-search case-fold) |
26fe451fc5f7
(isearch-resume): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29377
diff
changeset
|
2444 (isearch-search)) |
47341
bbfc60a6c247
(isearch-cmds): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44893
diff
changeset
|
2445 |
56352
f0e5e08dd63e
(isearch-query-replace): Pass the regexp-ness and delimited-ness of
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56349
diff
changeset
|
2446 ;; arch-tag: 74850515-f7d8-43a6-8a2c-ca90a4c1e675 |
2230
6314334d7c2b
Add standard library headers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2055
diff
changeset
|
2447 ;;; isearch.el ends here |