annotate lisp/iswitchb.el @ 42307:922f0ef2951b

(balance-windows): Use new PRESERVE-BEFORE arg to enlarge-window. Use save-selected-window. Don't try to resize windows that end at the bottom "level". Retry changing the sizes until the windows get the desired sizes. Discount the minibuffer when computing total height available.
author Richard M. Stallman <rms@gnu.org>
date Tue, 25 Dec 2001 10:34:39 +0000
parents 8748b5403232
children 4b1e92d76a10
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1 ;;; iswitchb.el --- switch between buffers using substrings
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2
35570
4308e62b25c8 (iswitchb-make-buflist): When nconc'ing lists, don't
Gerd Moellmann <gerd@gnu.org>
parents: 34208
diff changeset
3 ;; Copyright (C) 1996, 1997, 2000, 2001 Free Software Foundation, Inc.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4
41161
e72cd74733bb Change maintainer email address.
Richard M. Stallman <rms@gnu.org>
parents: 35570
diff changeset
5 ;; Author: Stephen Eglen <stephen@gnu.org>
e72cd74733bb Change maintainer email address.
Richard M. Stallman <rms@gnu.org>
parents: 35570
diff changeset
6 ;; Maintainer: Stephen Eglen <stephen@gnu.org>
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
7 ;; Keywords: completion convenience
23785
ef0150f917c9 Update author email and web page.
Stephen Eglen <stephen@gnu.org>
parents: 22380
diff changeset
8 ;; location: http://www.anc.ed.ac.uk/~stephen/emacs/
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
9
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
10 ;; This file is part of GNU Emacs.
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
11
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
12 ;; GNU Emacs is free software; you can redistribute it and/or modify
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 ;; it under the terms of the GNU General Public License as published by
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14 ;; the Free Software Foundation; either version 2, or (at your option)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15 ;; any later version.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20 ;; GNU General Public License for more details.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
22 ;; You should have received a copy of the GNU General Public License
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
23 ;; along with GNU Emacs; see the file COPYING. If not, write to the
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
24 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
25 ;; Boston, MA 02111-1307, USA.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26
21058
f2c4ac206a48 (iswitchb-default-method): Remove :tag entries.
Stephen Eglen <stephen@gnu.org>
parents: 20470
diff changeset
27 ;;; Commentary:
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
28
21058
f2c4ac206a48 (iswitchb-default-method): Remove :tag entries.
Stephen Eglen <stephen@gnu.org>
parents: 20470
diff changeset
29 ;; Installation:
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
30 ;; To get the functions in this package bound to keys, use
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
31 ;; M-x iswitchb-mode or customize the option `iswitchb-mode'.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33 ;; As you type in a substring, the list of buffers currently matching
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
34 ;; the substring is displayed as you type. The list is ordered so
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35 ;; that the most recent buffers visited come at the start of the list.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
36 ;; The buffer at the start of the list will be the one visited when
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
37 ;; you press return. By typing more of the substring, the list is
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
38 ;; narrowed down so that gradually the buffer you want will be at the
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
39 ;; top of the list. Alternatively, you can use C-s and C-r to rotate
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
40 ;; buffer names in the list until the one you want is at the top of
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
41 ;; the list. Completion is also available so that you can see what is
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
42 ;; common to all of the matching buffers as you type.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
43
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
44 ;; This code is similar to a couple of other packages. Michael R Cook
28619
79fd94833204 (iswitchb-case): New function. If the user input
Gerd Moellmann <gerd@gnu.org>
parents: 27497
diff changeset
45 ;; <cook@sightpath.com> wrote a similar buffer switching package, but
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
46 ;; does exact matching rather than substring matching on buffer names.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47 ;; I also modified a couple of functions from icomplete.el to provide
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
48 ;; the completion feedback in the minibuffer.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
49
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
50 ;;; Example
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
51
41926
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
52 ;; If I have two buffers called "123456" and "123", with "123456" the
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
53 ;; most recent, when I use iswitchb, I first of all get presented with
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
54 ;; the list of all the buffers
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
55 ;;
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
56 ;; iswitch {123456,123}
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
57 ;;
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
58 ;; If I then press 2:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
59 ;; iswitch 2[3]{123456,123}
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
60 ;;
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
61 ;; The list in {} are the matching buffers, most recent first (buffers
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62 ;; visible in the current frame are put at the end of the list by
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63 ;; default). At any time I can select the item at the head of the
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
64 ;; list by pressing RET. I can also bring the put the first element
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
65 ;; at the end of the list by pressing C-s, or put the last element at
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
66 ;; the head of the list by pressing C-r. The item in [] indicates
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
67 ;; what can be added to my input by pressing TAB. In this case, I
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
68 ;; will get "3" added to my input. So, press TAB:
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
69 ;; iswitch 23{123456,123}
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
70 ;;
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
71 ;; At this point, I still have two matching buffers.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
72 ;; If I want the first buffer in the list, I simply press RET. If I
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
73 ;; wanted the second in the list, I could press C-s to move it to the
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
74 ;; top of the list and then RET to select it.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
75 ;;
41926
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
76 ;; However, if I type 4, I only have one match left:
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
77 ;; iswitch 234[123456] [Matched]
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
78 ;;
41926
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
79 ;; Since there is only one matching buffer left, it is given in [] and we
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
80 ;; see the text [Matched] afterwards. I can now press TAB or RET to go
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
81 ;; to that buffer.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
82 ;;
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
83 ;; If however, I now type "a":
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
84 ;; iswitch 234a [No match]
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
85 ;; There are no matching buffers. If I press RET or TAB, I can be
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
86 ;; prompted to create a new buffer called "234a".
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
87 ;;
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
88 ;; Of course, where this function comes in really useful is when you
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
89 ;; can specify the buffer using only a few keystrokes. In the above
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
90 ;; example, the quickest way to get to the "123456" buffer would be
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
91 ;; just to type 4 and then RET (assuming there isn't any newer buffer
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
92 ;; with 4 in its name).
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
93
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
94 ;; To see a full list of all matching buffers in a separate buffer,
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
95 ;; hit ? or press TAB when there are no further completions to the
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
96 ;; substring. Repeated TAB presses will scroll you through this
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
97 ;; separate buffer.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
98
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
99 ;; The buffer at the head of the list can be killed by pressing C-k.
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
100 ;; If the buffer needs saving, you will be queried before the buffer
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
101 ;; is killed.
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
102
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
103 ;; If you find that the file you are after is not in a buffer, you can
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
104 ;; press C-x C-f to immediately drop into find-file.
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
105
41926
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
106 ;; See the doc string of iswitchb for full keybindings and features.
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
107 ;; (describe-function 'iswitchb)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
108
28619
79fd94833204 (iswitchb-case): New function. If the user input
Gerd Moellmann <gerd@gnu.org>
parents: 27497
diff changeset
109 ;; Case matching: The case of strings when matching can be ignored or
79fd94833204 (iswitchb-case): New function. If the user input
Gerd Moellmann <gerd@gnu.org>
parents: 27497
diff changeset
110 ;; used depending on the value of iswitchb-case (default is the same
79fd94833204 (iswitchb-case): New function. If the user input
Gerd Moellmann <gerd@gnu.org>
parents: 27497
diff changeset
111 ;; as case-fold-search, normally t). Imagine you have the following
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
112 ;; buffers:
28619
79fd94833204 (iswitchb-case): New function. If the user input
Gerd Moellmann <gerd@gnu.org>
parents: 27497
diff changeset
113 ;;
79fd94833204 (iswitchb-case): New function. If the user input
Gerd Moellmann <gerd@gnu.org>
parents: 27497
diff changeset
114 ;; INBOX *info* *scratch*
79fd94833204 (iswitchb-case): New function. If the user input
Gerd Moellmann <gerd@gnu.org>
parents: 27497
diff changeset
115 ;;
79fd94833204 (iswitchb-case): New function. If the user input
Gerd Moellmann <gerd@gnu.org>
parents: 27497
diff changeset
116 ;; Then these will be the matching buffers, depending on how you type
79fd94833204 (iswitchb-case): New function. If the user input
Gerd Moellmann <gerd@gnu.org>
parents: 27497
diff changeset
117 ;; the two letters `in' and the value of iswitchb-case:
79fd94833204 (iswitchb-case): New function. If the user input
Gerd Moellmann <gerd@gnu.org>
parents: 27497
diff changeset
118 ;;
79fd94833204 (iswitchb-case): New function. If the user input
Gerd Moellmann <gerd@gnu.org>
parents: 27497
diff changeset
119 ;; iswitchb-case user input | matching buffers
79fd94833204 (iswitchb-case): New function. If the user input
Gerd Moellmann <gerd@gnu.org>
parents: 27497
diff changeset
120 ;; ----------------------------------------------
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
121 ;; nil in | *info*
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
122 ;; t in | INBOX, *info*
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
123 ;; t IN | INBOX
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
124 ;; t In | [No match]
28619
79fd94833204 (iswitchb-case): New function. If the user input
Gerd Moellmann <gerd@gnu.org>
parents: 27497
diff changeset
125
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
126 ;;; Customisation
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
127
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
128 ;; See the User Variables section below for easy ways to change the
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
129 ;; functionality of the program. These are accessible using the
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
130 ;; custom package.
41287
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
131 ;; To modify the keybindings, use something like:
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
132 ;;
41287
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
133 ;;(add-hook 'iswitchb-mode-hook 'iswitchb-my-keys)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
134 ;;(defun iswitchb-my-keys ()
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
135 ;; "Add my keybindings for iswitchb."
41287
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
136 ;; (define-key iswitchb-mode-map " " 'iswitchb-next-match))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
137 ;;
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
138 ;; Seeing all the matching buffers
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
139 ;;
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
140 ;; If you have many matching buffers, they may not all fit onto one
34208
6059c5943d9f Update customization commentary.
Gerd Moellmann <gerd@gnu.org>
parents: 33818
diff changeset
141 ;; line of the minibuffer. In Emacs 21, the variable
6059c5943d9f Update customization commentary.
Gerd Moellmann <gerd@gnu.org>
parents: 33818
diff changeset
142 ;; `resize-mini-windows' controls how many lines of the minibuffer can
6059c5943d9f Update customization commentary.
Gerd Moellmann <gerd@gnu.org>
parents: 33818
diff changeset
143 ;; be seen. For older versions of emacs, you can use
6059c5943d9f Update customization commentary.
Gerd Moellmann <gerd@gnu.org>
parents: 33818
diff changeset
144 ;; `resize-minibuffer-mode'. You can also limit iswitchb so that it
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
145 ;; only shows a certain number of lines -- see the documentation for
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
146 ;; `iswitchb-minibuffer-setup-hook'.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
147
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
148 ;; Changing the list of buffers
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
149
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
150 ;; By default, the list of current buffers is most recent first,
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
151 ;; oldest last, with the exception that the buffers visible in the
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
152 ;; current frame are put at the end of the list. A hook exists to
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
153 ;; allow other functions to order the list. For example, if you add:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
154 ;;
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
155 ;; (add-hook 'iswitchb-make-buflist-hook 'iswitchb-summaries-to-end)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
156 ;;
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
157 ;; then all buffers matching "Summary" are moved to the end of the
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
158 ;; list. (I find this handy for keeping the INBOX Summary and so on
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
159 ;; out of the way.) It also moves buffers matching "output\*$" to the
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
160 ;; end of the list (these are created by AUC TeX when compiling.)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
161 ;; Other functions could be made available which alter the list of
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
162 ;; matching buffers (either deleting or rearranging elements.)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
163
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
164 ;; Font-Lock
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
165
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
166 ;; If you have font-lock loaded, the first matching buffer is
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
167 ;; highlighted. To switch this off, set (setq iswitchb-use-fonts nil)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
168 ;; I don't use font-lock that much, so I've hardcoded the faces. If
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
169 ;; this is too harsh, let me know. Colouring of the matching buffer
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
170 ;; name was suggested by Carsten Dominik (dominik@strw.leidenuniv.nl)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
171
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
172 ;; Replacement for read-buffer
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
173
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
174 ;; iswitchb-read-buffer has been written to be a drop in replacement
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
175 ;; for the normal buffer selection routine `read-buffer'. To use
21058
f2c4ac206a48 (iswitchb-default-method): Remove :tag entries.
Stephen Eglen <stephen@gnu.org>
parents: 20470
diff changeset
176 ;; iswitch for all buffer selections in Emacs, add:
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
177 ;; (setq read-buffer-function 'iswitchb-read-buffer)
41926
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
178 ;; (This variable was introduced in Emacs 20.3.)
21058
f2c4ac206a48 (iswitchb-default-method): Remove :tag entries.
Stephen Eglen <stephen@gnu.org>
parents: 20470
diff changeset
179 ;; XEmacs users can get the same behaviour by doing:
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
180 ;; (defalias 'read-buffer 'iswitchb-read-buffer)
21058
f2c4ac206a48 (iswitchb-default-method): Remove :tag entries.
Stephen Eglen <stephen@gnu.org>
parents: 20470
diff changeset
181 ;; since `read-buffer' is defined in lisp.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
182
41926
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
183 ;; Using iswitchb for other completion tasks.
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
184
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
185 ;; Kin Cho (kin@neoscale.com sent the following suggestion to use
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
186 ;; iswitchb for other completion tasks.
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
187 ;;
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
188 ;; (defun my-icompleting-read (prompt choices)
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
189 ;; "Use iswitch as a completing-read replacement to choose from
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
190 ;; choices. PROMPT is a string to prompt with. CHOICES is a list of
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
191 ;; strings to choose from."
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
192 ;; (let ((iswitchb-make-buflist-hook
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
193 ;; (lambda ()
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
194 ;; (setq iswitchb-temp-buflist choices))))
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
195 ;; (iswitchb-read-buffer prompt)))
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
196 ;;
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
197 ;; example:
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
198 ;; (my-icompleting-read "Which fruit? " '
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
199 ;; ("apple" "pineapple" "pear" "bananas" "oranges") )
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
200
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
201 ;; Other lisp packages extend iswitchb behaviour to other tasks. See
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
202 ;; ido.el (by Kim Storm) and mcomplete.el (Yuji Minejima).
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
203
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
204 ;; Window managers: Switching frames/focus follows mouse; Sawfish.
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
205
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
206 ;; If you switch to a buffer that is visible in another frame,
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
207 ;; iswitchb can switch focus to that frame. If your window manager
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
208 ;; uses "click to focus" policy for window selection, you should also
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
209 ;; set focus-follows-mouse to nil.
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
210
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
211 ;; iswitch functionality has also been implemented for switching
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
212 ;; between windows in the Sawfish window manager.
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
213
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
214 ;; Regexp matching
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
215
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
216 ;; There is limited provision for regexp matching within iswitchb,
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
217 ;; enabled through `iswitchb-regexp'. This allows you to type `c$'
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
218 ;; for example and see all buffer names ending in `c'. This facility
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
219 ;; is quite limited though in two respects. First, you can't
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
220 ;; currently type in expressions like `[0-9]' directly -- you have to
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
221 ;; type them in when iswitchb-regexp is nil and then toggle on the
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
222 ;; regexp functionality. Likewise, don't enter an expression
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
223 ;; containing `\' in regexp mode. If you try, iswitchb gets confused,
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
224 ;; so just hit C-g and try again. Secondly, no completion mechanism
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
225 ;; is currently offered when regexp searching.
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
226
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
227 ;;; TODO
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
228
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
229 ;;; Acknowledgements
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
230
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
231 ;; Thanks to Jari Aalto <jari.aalto@poboxes.com> for help with the
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
232 ;; first version of this package, iswitch-buffer. Thanks also to many
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
233 ;; others for testing earlier versions.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
234
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
235 ;;; Code:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
236
21058
f2c4ac206a48 (iswitchb-default-method): Remove :tag entries.
Stephen Eglen <stephen@gnu.org>
parents: 20470
diff changeset
237 ;; CL needed for cadr and last
21706
a0c3ee34362d Only require cl if cadr and last are not defined (thanks to Dave Love.)
Stephen Eglen <stephen@gnu.org>
parents: 21326
diff changeset
238 (if (not (and (fboundp 'cadr)
a0c3ee34362d Only require cl if cadr and last are not defined (thanks to Dave Love.)
Stephen Eglen <stephen@gnu.org>
parents: 21326
diff changeset
239 (fboundp 'last)))
a0c3ee34362d Only require cl if cadr and last are not defined (thanks to Dave Love.)
Stephen Eglen <stephen@gnu.org>
parents: 21326
diff changeset
240 (require 'cl))
21058
f2c4ac206a48 (iswitchb-default-method): Remove :tag entries.
Stephen Eglen <stephen@gnu.org>
parents: 20470
diff changeset
241
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
242 ;; Set up the custom library.
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
243 ;; taken from http://www.dina.kvl.dk/~abraham/custom/
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
244 (eval-and-compile
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
245 (condition-case ()
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
246 (require 'custom)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
247 (error nil))
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
248 (if (and (featurep 'custom) (fboundp 'custom-declare-variable))
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
249 nil ;; We've got what we needed
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
250 ;; We have the old custom-library, hack around it!
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
251 (defmacro defgroup (&rest args)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
252 nil)
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
253 (defmacro defcustom (var value doc &rest args)
26455
03d8424273d3 Use new backquote syntax.
Gerd Moellmann <gerd@gnu.org>
parents: 26155
diff changeset
254 `(defvar ,var ,value ,doc))))
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
255
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
256 ;;; User Variables
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
257 ;;
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
258 ;; These are some things you might want to change.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
259
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
260 (defgroup iswitchb nil
21058
f2c4ac206a48 (iswitchb-default-method): Remove :tag entries.
Stephen Eglen <stephen@gnu.org>
parents: 20470
diff changeset
261 "Switch between buffers using substrings."
22250
a77d473867b8 *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 21706
diff changeset
262 :group 'convenience
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
263 :group 'completion
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
264 :link '(emacs-commentary-link :tag "Commentary" "iswitchb.el")
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
265 :link '(url-link "http://www.anc.ed.ac.uk/~stephen/emacs/")
21706
a0c3ee34362d Only require cl if cadr and last are not defined (thanks to Dave Love.)
Stephen Eglen <stephen@gnu.org>
parents: 21326
diff changeset
266 :link '(emacs-library-link :tag "Lisp File" "iswitchb.el"))
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
267
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
268 (defcustom iswitchb-case case-fold-search
28619
79fd94833204 (iswitchb-case): New function. If the user input
Gerd Moellmann <gerd@gnu.org>
parents: 27497
diff changeset
269 "*Non-nil if searching of buffer names should ignore case.
79fd94833204 (iswitchb-case): New function. If the user input
Gerd Moellmann <gerd@gnu.org>
parents: 27497
diff changeset
270 If this is non-nil but the user input has any upper case letters, matching
79fd94833204 (iswitchb-case): New function. If the user input
Gerd Moellmann <gerd@gnu.org>
parents: 27497
diff changeset
271 is temporarily case sensitive."
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
272 :type 'boolean
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
273 :group 'iswitchb)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
274
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
275 (defcustom iswitchb-buffer-ignore
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
276 '("^ ")
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
277 "*List of regexps or functions matching buffer names to ignore.
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
278 For example, traditional behavior is not to list buffers whose names begin
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
279 with a space, for which the regexp is `^ '. See the source file for
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
280 example functions that filter buffernames."
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
281 :type '(repeat regexp)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
282 :group 'iswitchb)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
283
41273
793fceb3e6de (iswitchb-cannot-complete-hook): New variable to
Richard M. Stallman <rms@gnu.org>
parents: 41161
diff changeset
284 (defcustom iswitchb-cannot-complete-hook 'iswitchb-completion-help
793fceb3e6de (iswitchb-cannot-complete-hook): New variable to
Richard M. Stallman <rms@gnu.org>
parents: 41161
diff changeset
285 "*Hook run when `iswitchb-complete' can't complete any more.
793fceb3e6de (iswitchb-cannot-complete-hook): New variable to
Richard M. Stallman <rms@gnu.org>
parents: 41161
diff changeset
286 The most useful values are `iswitchb-completion-help', which pops up a
793fceb3e6de (iswitchb-cannot-complete-hook): New variable to
Richard M. Stallman <rms@gnu.org>
parents: 41161
diff changeset
287 window with completion alternatives, or `iswitchb-next-match' or
793fceb3e6de (iswitchb-cannot-complete-hook): New variable to
Richard M. Stallman <rms@gnu.org>
parents: 41161
diff changeset
288 `iswitchb-prev-match', which cycle the buffer list."
793fceb3e6de (iswitchb-cannot-complete-hook): New variable to
Richard M. Stallman <rms@gnu.org>
parents: 41161
diff changeset
289 :type 'hook
793fceb3e6de (iswitchb-cannot-complete-hook): New variable to
Richard M. Stallman <rms@gnu.org>
parents: 41161
diff changeset
290 :group 'iswitchb)
793fceb3e6de (iswitchb-cannot-complete-hook): New variable to
Richard M. Stallman <rms@gnu.org>
parents: 41161
diff changeset
291
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
292 ;;; Examples for setting the value of iswitchb-buffer-ignore
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
293 ;(defun iswitchb-ignore-c-mode (name)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
294 ; "Ignore all c mode buffers -- example function for iswitchb."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
295 ; (save-excursion
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
296 ; (set-buffer name)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
297 ; (string-match "^C$" mode-name)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
298
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
299 ;(setq iswitchb-buffer-ignore '("^ " iswitchb-ignore-c-mode))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
300 ;(setq iswitchb-buffer-ignore '("^ " "\\.c$" "\\.h$"))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
301
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
302 (defcustom iswitchb-default-method 'always-frame
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
303 "*How to switch to new buffer when using `iswitchb-buffer'.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
304 Possible values:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
305 `samewindow' Show new buffer in same window
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
306 `otherwindow' Show new buffer in another window (same frame)
17618
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
307 `display' Display buffer in another window without switching to it
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
308 `otherframe' Show new buffer in another frame
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
309 `maybe-frame' If a buffer is visible in another frame, prompt to ask if you
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
310 you want to see the buffer in the same window of the current
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
311 frame or in the other frame.
21058
f2c4ac206a48 (iswitchb-default-method): Remove :tag entries.
Stephen Eglen <stephen@gnu.org>
parents: 20470
diff changeset
312 `always-frame' If a buffer is visible in another frame, raise that
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
313 frame. Otherwise, visit the buffer in the same window."
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
314 :type '(choice (const samewindow)
21058
f2c4ac206a48 (iswitchb-default-method): Remove :tag entries.
Stephen Eglen <stephen@gnu.org>
parents: 20470
diff changeset
315 (const otherwindow)
f2c4ac206a48 (iswitchb-default-method): Remove :tag entries.
Stephen Eglen <stephen@gnu.org>
parents: 20470
diff changeset
316 (const display)
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
317 (const otherframe)
21058
f2c4ac206a48 (iswitchb-default-method): Remove :tag entries.
Stephen Eglen <stephen@gnu.org>
parents: 20470
diff changeset
318 (const maybe-frame)
f2c4ac206a48 (iswitchb-default-method): Remove :tag entries.
Stephen Eglen <stephen@gnu.org>
parents: 20470
diff changeset
319 (const always-frame))
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
320 :group 'iswitchb)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
321
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
322 (defcustom iswitchb-regexp nil
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
323 "*Non-nil means that `iswitchb' will do regexp matching.
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
324 Value can be toggled within `iswitchb' using `iswitchb-toggle-regexp'."
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
325 :type 'boolean
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
326 :group 'iswitchb)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
327
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
328 (defcustom iswitchb-newbuffer t
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
329 "*Non-nil means create new buffer if no buffer matches substring.
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
330 See also `iswitchb-prompt-newbuffer'."
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
331 :type 'boolean
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
332 :group 'iswitchb)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
333
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
334 (defcustom iswitchb-prompt-newbuffer t
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
335 "*Non-nil means prompt user to confirm before creating new buffer.
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
336 See also `iswitchb-newbuffer'."
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
337 :type 'boolean
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
338 :group 'iswitchb)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
339
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
340 (defcustom iswitchb-use-fonts t
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
341 "*Non-nil means use font-lock fonts for showing first match."
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
342 :type 'boolean
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
343 :group 'iswitchb)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
344
27497
7f8974c3b6f8 (iswitchb-use-frame-buffer-list): New configuration
Gerd Moellmann <gerd@gnu.org>
parents: 26455
diff changeset
345 (defcustom iswitchb-use-frame-buffer-list nil
7f8974c3b6f8 (iswitchb-use-frame-buffer-list): New configuration
Gerd Moellmann <gerd@gnu.org>
parents: 26455
diff changeset
346 "*Non-nil means use the currently selected frame's buffer list."
7f8974c3b6f8 (iswitchb-use-frame-buffer-list): New configuration
Gerd Moellmann <gerd@gnu.org>
parents: 26455
diff changeset
347 :type 'boolean
7f8974c3b6f8 (iswitchb-use-frame-buffer-list): New configuration
Gerd Moellmann <gerd@gnu.org>
parents: 26455
diff changeset
348 :group 'iswitchb)
7f8974c3b6f8 (iswitchb-use-frame-buffer-list): New configuration
Gerd Moellmann <gerd@gnu.org>
parents: 26455
diff changeset
349
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
350 (defcustom iswitchb-make-buflist-hook nil
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
351 "Hook to run when list of matching buffers is created."
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
352 :type 'hook
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
353 :group 'iswitchb)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
354
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
355 (defvar iswitchb-all-frames 'visible
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
356 "*Argument to pass to `walk-windows' when finding visible buffers.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
357 See documentation of `walk-windows' for useful values.")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
358
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
359 (defcustom iswitchb-minibuffer-setup-hook nil
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
360 "Iswitchb-specific customization of minibuffer setup.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
361
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
362 This hook is run during minibuffer setup iff `iswitchb' will be active.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
363 It is intended for use in customizing iswitchb for interoperation
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
364 with other packages."
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
365 ;;; For instance:
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
366
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
367 ;;; \(add-hook 'iswitchb-minibuffer-setup-hook
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
368 ;;; \(function
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
369 ;;; \(lambda ()
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
370 ;;; \(make-local-variable 'resize-minibuffer-window-max-height)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
371 ;;; \(setq resize-minibuffer-window-max-height 3))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
372
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
373 ;;; will constrain rsz-mini to a maximum minibuffer height of 3 lines when
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
374 ;;; iswitchb is running. Copied from `icomplete-minibuffer-setup-hook'."
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
375 :type 'hook
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
376 :group 'iswitchb)
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
377
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
378 ;; Do we need the variable iswitchb-use-mycompletion?
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
379
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
380 ;;; Internal Variables
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
381
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
382 (defvar iswitchb-method nil
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
383 "Stores the method for viewing the selected buffer.
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
384 Its value is one of `samewindow', `otherwindow', `display', `otherframe',
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
385 `maybe-frame' or `always-frame'. See `iswitchb-default-method' for
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
386 details of values.")
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
387
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
388 (defvar iswitchb-eoinput 1
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
389 "Point where minibuffer input ends and completion info begins.
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
390 Copied from `icomplete-eoinput'.")
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
391 (make-variable-buffer-local 'iswitchb-eoinput)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
392
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
393 (defvar iswitchb-buflist nil
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
394 "Stores the current list of buffers that will be searched through.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
395 The list is ordered, so that the most recent buffers come first,
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
396 although by default, the buffers visible in the current frame are put
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
397 at the end of the list. Created by `iswitchb-make-buflist'.")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
398
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
399 ;; todo -- is this necessary?
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
400
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
401 (defvar iswitchb-use-mycompletion nil
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
402 "Non-nil means use `iswitchb-buffer' completion feedback.
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
403 Should only be set to t by iswitchb functions, so that it doesn't
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
404 interfere with other minibuffer usage.")
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
405
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
406 (defvar iswitchb-change-word-sub nil
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
407 "Private variable used by `iswitchb-word-matching-substring'.")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
408
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
409 (defvar iswitchb-common-match-string nil
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
410 "Stores the string that is common to all matching buffers.")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
411
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
412 (defvar iswitchb-rescan nil
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
413 "Non-nil means we need to regenerate the list of matching buffers.")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
414
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
415 (defvar iswitchb-text nil
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
416 "Stores the users string as it is typed in.")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
417
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
418 (defvar iswitchb-matches nil
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
419 "List of buffers currently matching `iswitchb-text'.")
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
420
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
421 (defvar iswitchb-mode-map
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
422 (let ((map (make-sparse-keymap)))
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
423 (set-keymap-parent map minibuffer-local-map)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
424 (define-key map "?" 'iswitchb-completion-help)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
425 (define-key map "\C-s" 'iswitchb-next-match)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
426 (define-key map "\C-r" 'iswitchb-prev-match)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
427 (define-key map "\t" 'iswitchb-complete)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
428 (define-key map "\C-j" 'iswitchb-select-buffer-text)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
429 (define-key map "\C-t" 'iswitchb-toggle-regexp)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
430 (define-key map "\C-x\C-f" 'iswitchb-find-file)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
431 (define-key map "\C-c" 'iswitchb-toggle-case)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
432 (define-key map "\C-k" 'iswitchb-kill-buffer)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
433 (define-key map "\C-m" 'iswitchb-exit-minibuffer)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
434 map)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
435 "Minibuffer keymap for `iswitchb-buffer'.")
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
436
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
437 (defvar iswitchb-global-map
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
438 (let ((map (make-sparse-keymap)))
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
439 (substitute-key-definition 'switch-to-buffer ; normally C-x b
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
440 'iswitchb-buffer map global-map)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
441 (substitute-key-definition 'switch-to-buffer-other-window ; C-x 4 b
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
442 'iswitchb-buffer-other-window map global-map)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
443 (substitute-key-definition 'switch-to-buffer-other-frame ; C-x 5 b
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
444 'iswitchb-buffer-other-frame map global-map)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
445 (substitute-key-definition 'display-buffer ; C-x 4 C-o
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
446 'iswitchb-display-buffer map global-map)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
447 map)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
448 "Global keymap for `iswtichb-mode'.")
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
449
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
450 (defvar iswitchb-history nil
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
451 "History of buffers selected using `iswitchb-buffer'.")
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
452
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
453 (defvar iswitchb-exit nil
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
454 "Flag to monitor how `iswitchb-buffer' exits.
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
455 If equal to `takeprompt', we use the prompt as the buffer name to be
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
456 selected.")
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
457
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
458 (defvar iswitchb-buffer-ignore-orig nil
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
459 "Stores original value of `iswitchb-buffer-ignore'.")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
460
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
461 (defvar iswitchb-xemacs (string-match "XEmacs" (emacs-version))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
462 "Non-nil if we are running XEmacs. Otherwise, assume we are running Emacs.")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
463
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
464 (defvar iswitchb-default nil
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
465 "Default buffer for iswitchb.")
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
466
22380
2645c2c3829f (iswitchb-require-match, iswitchb-temp-buflist, iswitchb-bufs-in-frame):
Stephen Eglen <stephen@gnu.org>
parents: 22354
diff changeset
467 ;; The following variables are needed to keep the byte compiler quiet.
2645c2c3829f (iswitchb-require-match, iswitchb-temp-buflist, iswitchb-bufs-in-frame):
Stephen Eglen <stephen@gnu.org>
parents: 22354
diff changeset
468 (defvar iswitchb-require-match nil
2645c2c3829f (iswitchb-require-match, iswitchb-temp-buflist, iswitchb-bufs-in-frame):
Stephen Eglen <stephen@gnu.org>
parents: 22354
diff changeset
469 "Non-nil if matching buffer must be selected.")
2645c2c3829f (iswitchb-require-match, iswitchb-temp-buflist, iswitchb-bufs-in-frame):
Stephen Eglen <stephen@gnu.org>
parents: 22354
diff changeset
470
2645c2c3829f (iswitchb-require-match, iswitchb-temp-buflist, iswitchb-bufs-in-frame):
Stephen Eglen <stephen@gnu.org>
parents: 22354
diff changeset
471 (defvar iswitchb-temp-buflist nil
2645c2c3829f (iswitchb-require-match, iswitchb-temp-buflist, iswitchb-bufs-in-frame):
Stephen Eglen <stephen@gnu.org>
parents: 22354
diff changeset
472 "Stores a temporary version of the buffer list being created.")
2645c2c3829f (iswitchb-require-match, iswitchb-temp-buflist, iswitchb-bufs-in-frame):
Stephen Eglen <stephen@gnu.org>
parents: 22354
diff changeset
473
2645c2c3829f (iswitchb-require-match, iswitchb-temp-buflist, iswitchb-bufs-in-frame):
Stephen Eglen <stephen@gnu.org>
parents: 22354
diff changeset
474 (defvar iswitchb-bufs-in-frame nil
2645c2c3829f (iswitchb-require-match, iswitchb-temp-buflist, iswitchb-bufs-in-frame):
Stephen Eglen <stephen@gnu.org>
parents: 22354
diff changeset
475 "List of the buffers visible in the current frame.")
2645c2c3829f (iswitchb-require-match, iswitchb-temp-buflist, iswitchb-bufs-in-frame):
Stephen Eglen <stephen@gnu.org>
parents: 22354
diff changeset
476
33818
42ed3c6a1d89 (iswitchb-minibuf-depth): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 32288
diff changeset
477 (defvar iswitchb-minibuf-depth nil
42ed3c6a1d89 (iswitchb-minibuf-depth): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 32288
diff changeset
478 "Value we expect to be returned by `minibuffer-depth' in the minibuffer.")
42ed3c6a1d89 (iswitchb-minibuf-depth): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 32288
diff changeset
479
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
480 ;;; FUNCTIONS
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
481
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
482 ;;; ISWITCHB KEYMAP
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
483 (defun iswitchb-define-mode-map ()
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
484 "Set up the keymap for `iswitchb-buffer'.
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
485 This is obsolete. Use \\[iswitchb-mode] or customize the
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
486 variable `iswitchb-mode'."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
487 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
488 (let (map)
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
489 ;; generated every time so that it can inherit new functions.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
490 ;;(or iswitchb-mode-map
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
491
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
492 (setq map (copy-keymap minibuffer-local-map))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
493 (define-key map "?" 'iswitchb-completion-help)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
494 (define-key map "\C-s" 'iswitchb-next-match)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
495 (define-key map "\C-r" 'iswitchb-prev-match)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
496 (define-key map "\t" 'iswitchb-complete)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
497 (define-key map "\C-j" 'iswitchb-select-buffer-text)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
498 (define-key map "\C-t" 'iswitchb-toggle-regexp)
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
499 (define-key map "\C-x\C-f" 'iswitchb-find-file)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
500 ;;(define-key map "\C-a" 'iswitchb-toggle-ignore)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
501 (define-key map "\C-c" 'iswitchb-toggle-case)
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
502 (define-key map "\C-k" 'iswitchb-kill-buffer)
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
503 (define-key map "\C-m" 'iswitchb-exit-minibuffer)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
504 (setq iswitchb-mode-map map)
21706
a0c3ee34362d Only require cl if cadr and last are not defined (thanks to Dave Love.)
Stephen Eglen <stephen@gnu.org>
parents: 21326
diff changeset
505 (run-hooks 'iswitchb-define-mode-map-hook)))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
506
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
507 ;;; MAIN FUNCTION
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
508 (defun iswitchb ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
509 "Switch to buffer matching a substring.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
510 As you type in a string, all of the buffers matching the string are
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
511 displayed. When you have found the buffer you want, it can then be
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
512 selected. As you type, most keys have their normal keybindings,
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
513 except for the following:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
514 \\<iswitchb-mode-map>
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
515
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
516 RET Select the buffer at the front of the list of matches. If the
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
517 list is empty, possibly prompt to create new buffer.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
518
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
519 \\[iswitchb-select-buffer-text] Select the current prompt as the buffer.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
520 If no buffer is found, prompt for a new one.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
521
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
522 \\[iswitchb-next-match] Put the first element at the end of the list.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
523 \\[iswitchb-prev-match] Put the last element at the start of the list.
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
524 \\[iswitchb-complete] Complete a common suffix to the current string that
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
525 matches all buffers. If there is only one match, select that buffer.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
526 If there is no common suffix, show a list of all matching buffers
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
527 in a separate window.
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
528 \\[iswitchb-toggle-regexp] Toggle regexp searching.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
529 \\[iswitchb-toggle-case] Toggle case-sensitive searching of buffer names.
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
530 \\[iswitchb-completion-help] Show list of matching buffers in separate window.
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
531 \\[iswitchb-find-file] Exit iswitchb and drop into `find-file'.
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
532 \\[iswitchb-kill-buffer] Kill buffer at head of buffer list."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
533 ;;\\[iswitchb-toggle-ignore] Toggle ignoring certain buffers (see \
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
534 ;;`iswitchb-buffer-ignore')
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
535
41287
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
536 (let* ((prompt "iswitch ")
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
537 (buf (iswitchb-read-buffer prompt)))
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
538
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
539 ;;(message "chosen text %s" iswitchb-final-text)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
540 ;; Choose the buffer name: either the text typed in, or the head
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
541 ;; of the list of matches
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
542
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
543 (cond ( (eq iswitchb-exit 'findfile)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
544 (call-interactively 'find-file))
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
545
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
546 (t
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
547 ;; View the buffer
21058
f2c4ac206a48 (iswitchb-default-method): Remove :tag entries.
Stephen Eglen <stephen@gnu.org>
parents: 20470
diff changeset
548 ;;(message "go to buf %s" buf)
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
549 ;; Check buf is non-nil.
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
550 (if buf
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
551 (if (get-buffer buf)
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
552 ;; buffer exists, so view it and then exit
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
553 (iswitchb-visit-buffer buf)
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
554 ;; else buffer doesn't exist
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
555 (iswitchb-possible-new-buffer buf)))
21706
a0c3ee34362d Only require cl if cadr and last are not defined (thanks to Dave Love.)
Stephen Eglen <stephen@gnu.org>
parents: 21326
diff changeset
556 ))))
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
557
22354
2319cdbf38e5 *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 22250
diff changeset
558 ;;;###autoload
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
559 (defun iswitchb-read-buffer (prompt &optional default require-match)
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
560 "Replacement for the built-in `read-buffer'.
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
561 Return the name of a buffer selected.
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
562 PROMPT is the prompt to give to the user. DEFAULT if given is the default
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
563 buffer to be selected, which will go to the front of the list.
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
564 If REQUIRE-MATCH is non-nil, an existing-buffer must be selected."
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
565 (let
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
566 (
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
567 buf-sel
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
568 iswitchb-final-text
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
569 (icomplete-mode nil) ;; prevent icomplete starting up
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
570 ;; can only use fonts if they have been bound.
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
571 (iswitchb-use-fonts (and iswitchb-use-fonts
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
572 (boundp 'font-lock-comment-face)
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
573 (boundp 'font-lock-function-name-face))))
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
574
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
575 (iswitchb-define-mode-map)
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
576 (setq iswitchb-exit nil)
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
577 (setq iswitchb-rescan t)
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
578 (setq iswitchb-text "")
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
579 (setq iswitchb-default
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
580 (if (bufferp default)
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
581 (buffer-name default)
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
582 default))
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
583 (iswitchb-make-buflist iswitchb-default)
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
584 (iswitchb-set-matches)
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
585 (let
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
586 ((minibuffer-local-completion-map iswitchb-mode-map)
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
587 (iswitchb-prepost-hooks t)
33818
42ed3c6a1d89 (iswitchb-minibuf-depth): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 32288
diff changeset
588 ;; Record the minibuffer depth that we expect to find once
42ed3c6a1d89 (iswitchb-minibuf-depth): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 32288
diff changeset
589 ;; the minibuffer is set up and iswitchb-entryfn-p is called.
42ed3c6a1d89 (iswitchb-minibuf-depth): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 32288
diff changeset
590 (iswitchb-minibuf-depth (1+ (minibuffer-depth)))
21706
a0c3ee34362d Only require cl if cadr and last are not defined (thanks to Dave Love.)
Stephen Eglen <stephen@gnu.org>
parents: 21326
diff changeset
591 (iswitchb-require-match require-match))
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
592 ;; prompt the user for the buffer name
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
593 (setq iswitchb-final-text (completing-read
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
594 prompt ;the prompt
32288
47476840057c (iswitchb-mode): Add :require.
Dave Love <fx@gnu.org>
parents: 31797
diff changeset
595 '(("dummy" . 1)) ;table
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
596 nil ;predicate
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
597 nil ;require-match [handled elsewhere]
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
598 nil ;initial-contents
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
599 'iswitchb-history)))
41287
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
600 (if (get-buffer iswitchb-final-text)
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
601 ;; This happens for example if the buffer was chosen with the mouse.
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
602 (setq iswitchb-matches (list iswitchb-final-text)))
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
603
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
604 ;; Handling the require-match must be done in a better way.
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
605 (if (and require-match (not (iswitchb-existing-buffer-p)))
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
606 (error "Must specify valid buffer"))
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
607
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
608 (if (or
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
609 (eq iswitchb-exit 'takeprompt)
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
610 (null iswitchb-matches))
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
611 (setq buf-sel iswitchb-final-text)
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
612 ;; else take head of list
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
613 (setq buf-sel (car iswitchb-matches)))
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
614
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
615 ;; Or possibly choose the default buffer
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
616 (if (equal iswitchb-final-text "")
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
617 (setq buf-sel
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
618 (car iswitchb-matches)))
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
619
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
620 buf-sel))
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
621
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
622 (defun iswitchb-existing-buffer-p ()
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
623 "Return non-nil if there is a matching buffer."
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
624 (not (null iswitchb-matches)))
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
625
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
626 ;;; COMPLETION CODE
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
627
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
628 (defun iswitchb-set-common-completion ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
629 "Find common completion of `iswitchb-text' in `iswitchb-matches'.
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
630 The result is stored in `iswitchb-common-match-string'."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
631
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
632 (let* (val)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
633 (setq iswitchb-common-match-string nil)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
634 (if (and iswitchb-matches
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
635 (not iswitchb-regexp) ;; testing
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
636 (stringp iswitchb-text)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
637 (> (length iswitchb-text) 0))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
638 (if (setq val (iswitchb-find-common-substring
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
639 iswitchb-matches iswitchb-text))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
640 (setq iswitchb-common-match-string val)))
21706
a0c3ee34362d Only require cl if cadr and last are not defined (thanks to Dave Love.)
Stephen Eglen <stephen@gnu.org>
parents: 21326
diff changeset
641 val))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
642
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
643 (defun iswitchb-complete ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
644 "Try and complete the current pattern amongst the buffer names."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
645 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
646 (let (res)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
647 (cond ((not iswitchb-matches)
41273
793fceb3e6de (iswitchb-cannot-complete-hook): New variable to
Richard M. Stallman <rms@gnu.org>
parents: 41161
diff changeset
648 (run-hooks 'iswitchb-cannot-complete-hook))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
649
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
650 ((= 1 (length iswitchb-matches))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
651 ;; only one choice, so select it.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
652 (exit-minibuffer))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
653
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
654 (t
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
655 ;; else there could be some completions
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
656 (setq res iswitchb-common-match-string)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
657 (if (and (not (memq res '(t nil)))
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
658 (not (equal res iswitchb-text)))
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
659 ;; found something to complete, so put it in the minibuffer.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
660 (progn
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
661 (setq iswitchb-rescan nil)
25791
6413bcf4ea32 (iswitchb-complete): Use minibuffer-prompt-end
Gerd Moellmann <gerd@gnu.org>
parents: 25652
diff changeset
662 (delete-region (minibuffer-prompt-end) (point))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
663 (insert res))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
664 ;; else nothing to complete
41273
793fceb3e6de (iswitchb-cannot-complete-hook): New variable to
Richard M. Stallman <rms@gnu.org>
parents: 41161
diff changeset
665 (run-hooks 'iswitchb-cannot-complete-hook)
21706
a0c3ee34362d Only require cl if cadr and last are not defined (thanks to Dave Love.)
Stephen Eglen <stephen@gnu.org>
parents: 21326
diff changeset
666 )))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
667
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
668 ;;; TOGGLE FUNCTIONS
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
669
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
670 (defun iswitchb-toggle-case ()
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
671 "Toggle the value of variable `iswitchb-case'."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
672 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
673 (setq iswitchb-case (not iswitchb-case))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
674 ;; ask for list to be regenerated.
21706
a0c3ee34362d Only require cl if cadr and last are not defined (thanks to Dave Love.)
Stephen Eglen <stephen@gnu.org>
parents: 21326
diff changeset
675 (setq iswitchb-rescan t))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
676
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
677 (defun iswitchb-toggle-regexp ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
678 "Toggle the value of `iswitchb-regexp'."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
679 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
680 (setq iswitchb-regexp (not iswitchb-regexp))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
681 ;; ask for list to be regenerated.
21706
a0c3ee34362d Only require cl if cadr and last are not defined (thanks to Dave Love.)
Stephen Eglen <stephen@gnu.org>
parents: 21326
diff changeset
682 (setq iswitchb-rescan t))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
683
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
684 (defun iswitchb-toggle-ignore ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
685 "Toggle ignoring buffers specified with `iswitchb-buffer-ignore'."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
686 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
687 (if iswitchb-buffer-ignore
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
688 (progn
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
689 (setq iswitchb-buffer-ignore-orig iswitchb-buffer-ignore)
21706
a0c3ee34362d Only require cl if cadr and last are not defined (thanks to Dave Love.)
Stephen Eglen <stephen@gnu.org>
parents: 21326
diff changeset
690 (setq iswitchb-buffer-ignore nil))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
691 ;; else
21706
a0c3ee34362d Only require cl if cadr and last are not defined (thanks to Dave Love.)
Stephen Eglen <stephen@gnu.org>
parents: 21326
diff changeset
692 (setq iswitchb-buffer-ignore iswitchb-buffer-ignore-orig))
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
693 (iswitchb-make-buflist iswitchb-default)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
694 ;; ask for list to be regenerated.
21706
a0c3ee34362d Only require cl if cadr and last are not defined (thanks to Dave Love.)
Stephen Eglen <stephen@gnu.org>
parents: 21326
diff changeset
695 (setq iswitchb-rescan t))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
696
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
697 (defun iswitchb-exit-minibuffer ()
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
698 "Exit minibuffer, but make sure we have a match if one is needed."
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
699 (interactive)
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
700 (if (or (not iswitchb-require-match)
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
701 (iswitchb-existing-buffer-p))
21706
a0c3ee34362d Only require cl if cadr and last are not defined (thanks to Dave Love.)
Stephen Eglen <stephen@gnu.org>
parents: 21326
diff changeset
702 (throw 'exit nil)))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
703
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
704 (defun iswitchb-select-buffer-text ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
705 "Select the buffer named by the prompt.
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
706 If no buffer exactly matching the prompt exists, maybe create a new one."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
707 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
708 (setq iswitchb-exit 'takeprompt)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
709 (exit-minibuffer))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
710
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
711 (defun iswitchb-find-file ()
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
712 "Drop into `find-file' from buffer switching."
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
713 (interactive)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
714 (setq iswitchb-exit 'findfile)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
715 (exit-minibuffer))
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
716
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
717 (defun iswitchb-next-match ()
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
718 "Put first element of `iswitchb-matches' at the end of the list."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
719 (interactive)
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
720 (let ((next (cadr iswitchb-matches)))
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
721 (setq iswitchb-buflist (iswitchb-chop iswitchb-buflist next))
21706
a0c3ee34362d Only require cl if cadr and last are not defined (thanks to Dave Love.)
Stephen Eglen <stephen@gnu.org>
parents: 21326
diff changeset
722 (setq iswitchb-rescan t)))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
723
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
724 (defun iswitchb-prev-match ()
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
725 "Put last element of `iswitchb-matches' at the front of the list."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
726 (interactive)
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
727 (let ((prev (car (last iswitchb-matches))))
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
728 (setq iswitchb-buflist (iswitchb-chop iswitchb-buflist prev))
21706
a0c3ee34362d Only require cl if cadr and last are not defined (thanks to Dave Love.)
Stephen Eglen <stephen@gnu.org>
parents: 21326
diff changeset
729 (setq iswitchb-rescan t)))
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
730
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
731 (defun iswitchb-chop (list elem)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
732 "Remove all elements before ELEM and put them at the end of LIST."
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
733 (let ((ret nil)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
734 (next nil)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
735 (sofar nil))
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
736 (while (not ret)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
737 (setq next (car list))
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
738 (if (equal next elem)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
739 (setq ret (append list (nreverse sofar)))
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
740 ;; else
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
741 (progn
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
742 (setq list (cdr list))
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
743 (setq sofar (cons next sofar)))))
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
744 ret))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
745
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
746 ;;; CREATE LIST OF ALL CURRENT BUFFERS
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
747
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
748 (defun iswitchb-make-buflist (default)
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
749 "Set `iswitchb-buflist' to the current list of buffers.
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
750 Currently visible buffers are put at the end of the list.
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
751 The hook `iswitchb-make-buflist-hook' is run after the list has been
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
752 created to allow the user to further modify the order of the buffer names
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
753 in this list. If DEFAULT is non-nil, and corresponds to an existing buffer,
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
754 it is put to the start of the list."
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
755 (setq iswitchb-buflist
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
756 (let* ((iswitchb-current-buffers (iswitchb-get-buffers-in-frames))
35570
4308e62b25c8 (iswitchb-make-buflist): When nconc'ing lists, don't
Gerd Moellmann <gerd@gnu.org>
parents: 34208
diff changeset
757 (iswitchb-temp-buflist
4308e62b25c8 (iswitchb-make-buflist): When nconc'ing lists, don't
Gerd Moellmann <gerd@gnu.org>
parents: 34208
diff changeset
758 (delq nil
4308e62b25c8 (iswitchb-make-buflist): When nconc'ing lists, don't
Gerd Moellmann <gerd@gnu.org>
parents: 34208
diff changeset
759 (mapcar
4308e62b25c8 (iswitchb-make-buflist): When nconc'ing lists, don't
Gerd Moellmann <gerd@gnu.org>
parents: 34208
diff changeset
760 (lambda (x)
4308e62b25c8 (iswitchb-make-buflist): When nconc'ing lists, don't
Gerd Moellmann <gerd@gnu.org>
parents: 34208
diff changeset
761 (let ((b-name (buffer-name x)))
4308e62b25c8 (iswitchb-make-buflist): When nconc'ing lists, don't
Gerd Moellmann <gerd@gnu.org>
parents: 34208
diff changeset
762 (if (not
4308e62b25c8 (iswitchb-make-buflist): When nconc'ing lists, don't
Gerd Moellmann <gerd@gnu.org>
parents: 34208
diff changeset
763 (or
4308e62b25c8 (iswitchb-make-buflist): When nconc'ing lists, don't
Gerd Moellmann <gerd@gnu.org>
parents: 34208
diff changeset
764 (iswitchb-ignore-buffername-p b-name)
4308e62b25c8 (iswitchb-make-buflist): When nconc'ing lists, don't
Gerd Moellmann <gerd@gnu.org>
parents: 34208
diff changeset
765 (memq b-name iswitchb-current-buffers)))
4308e62b25c8 (iswitchb-make-buflist): When nconc'ing lists, don't
Gerd Moellmann <gerd@gnu.org>
parents: 34208
diff changeset
766 b-name)))
4308e62b25c8 (iswitchb-make-buflist): When nconc'ing lists, don't
Gerd Moellmann <gerd@gnu.org>
parents: 34208
diff changeset
767 (buffer-list (and iswitchb-use-frame-buffer-list
4308e62b25c8 (iswitchb-make-buflist): When nconc'ing lists, don't
Gerd Moellmann <gerd@gnu.org>
parents: 34208
diff changeset
768 (selected-frame)))))))
4308e62b25c8 (iswitchb-make-buflist): When nconc'ing lists, don't
Gerd Moellmann <gerd@gnu.org>
parents: 34208
diff changeset
769 (setq iswitchb-temp-buflist
4308e62b25c8 (iswitchb-make-buflist): When nconc'ing lists, don't
Gerd Moellmann <gerd@gnu.org>
parents: 34208
diff changeset
770 (nconc iswitchb-temp-buflist iswitchb-current-buffers))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
771 (run-hooks 'iswitchb-make-buflist-hook)
35570
4308e62b25c8 (iswitchb-make-buflist): When nconc'ing lists, don't
Gerd Moellmann <gerd@gnu.org>
parents: 34208
diff changeset
772 ;; Should this be after the hooks, or should the hooks be the
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
773 ;; final thing to be run?
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
774 (if default
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
775 (progn
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
776 (setq iswitchb-temp-buflist
22380
2645c2c3829f (iswitchb-require-match, iswitchb-temp-buflist, iswitchb-bufs-in-frame):
Stephen Eglen <stephen@gnu.org>
parents: 22354
diff changeset
777 (delete default iswitchb-temp-buflist))
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
778 (setq iswitchb-temp-buflist
22380
2645c2c3829f (iswitchb-require-match, iswitchb-temp-buflist, iswitchb-bufs-in-frame):
Stephen Eglen <stephen@gnu.org>
parents: 22354
diff changeset
779 (cons default iswitchb-temp-buflist))))
2645c2c3829f (iswitchb-require-match, iswitchb-temp-buflist, iswitchb-bufs-in-frame):
Stephen Eglen <stephen@gnu.org>
parents: 22354
diff changeset
780 iswitchb-temp-buflist)))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
781
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
782 (defun iswitchb-to-end (lst)
22380
2645c2c3829f (iswitchb-require-match, iswitchb-temp-buflist, iswitchb-bufs-in-frame):
Stephen Eglen <stephen@gnu.org>
parents: 22354
diff changeset
783 "Move the elements from LST to the end of `iswitchb-temp-buflist'."
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
784 (mapcar
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
785 (lambda (elem)
22380
2645c2c3829f (iswitchb-require-match, iswitchb-temp-buflist, iswitchb-bufs-in-frame):
Stephen Eglen <stephen@gnu.org>
parents: 22354
diff changeset
786 (setq iswitchb-temp-buflist (delq elem iswitchb-temp-buflist)))
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
787 lst)
35570
4308e62b25c8 (iswitchb-make-buflist): When nconc'ing lists, don't
Gerd Moellmann <gerd@gnu.org>
parents: 34208
diff changeset
788 (setq iswitchb-temp-buflist (nconc iswitchb-temp-buflist lst)))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
789
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
790 (defun iswitchb-get-buffers-in-frames (&optional current)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
791 "Return the list of buffers that are visible in the current frame.
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
792 If optional argument CURRENT is given, restrict searching to the
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
793 current frame, rather than all frames, regardless of value of
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
794 `iswitchb-all-frames'."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
795 (let ((iswitchb-bufs-in-frame nil))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
796 (walk-windows 'iswitchb-get-bufname nil
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
797 (if current
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
798 nil
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
799 iswitchb-all-frames))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
800 iswitchb-bufs-in-frame))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
801
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
802 (defun iswitchb-get-bufname (win)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
803 "Used by `iswitchb-get-buffers-in-frames' to walk through all windows."
18928
fff55212f6a7 (iswitchb-get-bufname): Only add buffer of current
Richard M. Stallman <rms@gnu.org>
parents: 18776
diff changeset
804 (let ((buf (buffer-name (window-buffer win))))
fff55212f6a7 (iswitchb-get-bufname): Only add buffer of current
Richard M. Stallman <rms@gnu.org>
parents: 18776
diff changeset
805 (if (not (member buf iswitchb-bufs-in-frame))
fff55212f6a7 (iswitchb-get-bufname): Only add buffer of current
Richard M. Stallman <rms@gnu.org>
parents: 18776
diff changeset
806 ;; Only add buf if it is not already in list.
fff55212f6a7 (iswitchb-get-bufname): Only add buffer of current
Richard M. Stallman <rms@gnu.org>
parents: 18776
diff changeset
807 ;; This prevents same buf in two different windows being
fff55212f6a7 (iswitchb-get-bufname): Only add buffer of current
Richard M. Stallman <rms@gnu.org>
parents: 18776
diff changeset
808 ;; put into the list twice.
fff55212f6a7 (iswitchb-get-bufname): Only add buffer of current
Richard M. Stallman <rms@gnu.org>
parents: 18776
diff changeset
809 (setq iswitchb-bufs-in-frame
fff55212f6a7 (iswitchb-get-bufname): Only add buffer of current
Richard M. Stallman <rms@gnu.org>
parents: 18776
diff changeset
810 (cons buf iswitchb-bufs-in-frame)))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
811
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
812 ;;; FIND MATCHING BUFFERS
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
813
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
814 (defun iswitchb-set-matches ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
815 "Set `iswitchb-matches' to the list of buffers matching prompt."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
816 (if iswitchb-rescan
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
817 (setq iswitchb-matches
21706
a0c3ee34362d Only require cl if cadr and last are not defined (thanks to Dave Love.)
Stephen Eglen <stephen@gnu.org>
parents: 21326
diff changeset
818 (let* ((buflist iswitchb-buflist))
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
819 (iswitchb-get-matched-buffers iswitchb-text iswitchb-regexp
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
820 buflist)))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
821
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
822 (defun iswitchb-get-matched-buffers (regexp
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
823 &optional string-format buffer-list)
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
824 "Return buffers matching REGEXP.
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
825 If STRING-FORMAT is nil, consider REGEXP as just a string.
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
826 BUFFER-LIST can be list of buffers or list of strings."
28619
79fd94833204 (iswitchb-case): New function. If the user input
Gerd Moellmann <gerd@gnu.org>
parents: 27497
diff changeset
827 (let* ((case-fold-search (iswitchb-case))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
828 ;; need reverse since we are building up list backwards
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
829 (list (reverse buffer-list))
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
830 (do-string (stringp (car list)))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
831 name
21706
a0c3ee34362d Only require cl if cadr and last are not defined (thanks to Dave Love.)
Stephen Eglen <stephen@gnu.org>
parents: 21326
diff changeset
832 ret)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
833 (mapcar
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
834 (lambda (x)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
835
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
836 (if do-string
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
837 (setq name x) ;We already have the name
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
838 (setq name (buffer-name x)))
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
839
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
840 (cond
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
841 ((and (or (and string-format (string-match regexp name))
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
842 (and (null string-format)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
843 (string-match (regexp-quote regexp) name)))
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
844
21706
a0c3ee34362d Only require cl if cadr and last are not defined (thanks to Dave Love.)
Stephen Eglen <stephen@gnu.org>
parents: 21326
diff changeset
845 (not (iswitchb-ignore-buffername-p name)))
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
846 (setq ret (cons name ret))
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
847 )))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
848 list)
21706
a0c3ee34362d Only require cl if cadr and last are not defined (thanks to Dave Love.)
Stephen Eglen <stephen@gnu.org>
parents: 21326
diff changeset
849 ret))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
850
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
851 (defun iswitchb-ignore-buffername-p (bufname)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
852 "Return t if the buffer BUFNAME should be ignored."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
853 (let ((data (match-data))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
854 (re-list iswitchb-buffer-ignore)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
855 ignorep
21706
a0c3ee34362d Only require cl if cadr and last are not defined (thanks to Dave Love.)
Stephen Eglen <stephen@gnu.org>
parents: 21326
diff changeset
856 nextstr)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
857 (while re-list
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
858 (setq nextstr (car re-list))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
859 (cond
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
860 ((stringp nextstr)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
861 (if (string-match nextstr bufname)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
862 (progn
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
863 (setq ignorep t)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
864 (setq re-list nil))))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
865 ((fboundp nextstr)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
866 (if (funcall nextstr bufname)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
867 (progn
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
868 (setq ignorep t)
21706
a0c3ee34362d Only require cl if cadr and last are not defined (thanks to Dave Love.)
Stephen Eglen <stephen@gnu.org>
parents: 21326
diff changeset
869 (setq re-list nil)))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
870 (setq re-list (cdr re-list)))
21156
cbdbd307fdb7 (iswitchb-ignore-buffername-p): store-match-data => set-match-data.
Richard M. Stallman <rms@gnu.org>
parents: 21058
diff changeset
871 (set-match-data data)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
872
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
873 ;; return the result
21706
a0c3ee34362d Only require cl if cadr and last are not defined (thanks to Dave Love.)
Stephen Eglen <stephen@gnu.org>
parents: 21326
diff changeset
874 ignorep))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
875
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
876 (defun iswitchb-word-matching-substring (word)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
877 "Return part of WORD before 1st match to `iswitchb-change-word-sub'.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
878 If `iswitchb-change-word-sub' cannot be found in WORD, return nil."
28619
79fd94833204 (iswitchb-case): New function. If the user input
Gerd Moellmann <gerd@gnu.org>
parents: 27497
diff changeset
879 (let ((case-fold-search (iswitchb-case)))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
880 (let ((m (string-match iswitchb-change-word-sub word)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
881 (if m
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
882 (substring word m)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
883 ;; else no match
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
884 nil))))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
885
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
886 (defun iswitchb-find-common-substring (lis subs)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
887 "Return common string following SUBS in each element of LIS."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
888 (let (res
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
889 alist
21706
a0c3ee34362d Only require cl if cadr and last are not defined (thanks to Dave Love.)
Stephen Eglen <stephen@gnu.org>
parents: 21326
diff changeset
890 iswitchb-change-word-sub)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
891 (setq iswitchb-change-word-sub
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
892 (if iswitchb-regexp
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
893 subs
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
894 (regexp-quote subs)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
895 (setq res (mapcar 'iswitchb-word-matching-substring lis))
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
896 (setq res (delq nil res)) ;; remove any nil elements (shouldn't happen)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
897 (setq alist (mapcar 'iswitchb-makealist res)) ;; could use an OBARRAY
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
898
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
899 ;; try-completion returns t if there is an exact match.
28619
79fd94833204 (iswitchb-case): New function. If the user input
Gerd Moellmann <gerd@gnu.org>
parents: 27497
diff changeset
900 (let ((completion-ignore-case (iswitchb-case)))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
901
21706
a0c3ee34362d Only require cl if cadr and last are not defined (thanks to Dave Love.)
Stephen Eglen <stephen@gnu.org>
parents: 21326
diff changeset
902 (try-completion subs alist))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
903
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
904 (defun iswitchb-makealist (res)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
905 "Return dotted pair (RES . 1)."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
906 (cons res 1))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
907
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
908 ;; from Wayne Mesard <wmesard@esd.sgi.com>
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
909 (defun iswitchb-rotate-list (lis)
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
910 "Destructively remove the last element from LIS.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
911 Return the modified list with the last element prepended to it."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
912 (if (<= (length lis) 1)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
913 lis
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
914 (let ((las lis)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
915 (prev lis))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
916 (while (consp (cdr las))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
917 (setq prev las
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
918 las (cdr las)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
919 (setcdr prev nil)
21706
a0c3ee34362d Only require cl if cadr and last are not defined (thanks to Dave Love.)
Stephen Eglen <stephen@gnu.org>
parents: 21326
diff changeset
920 (cons (car las) lis))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
921
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
922 (defun iswitchb-completion-help ()
41287
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
923 "Show possible completions in a *Completions* buffer."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
924 ;; we could allow this buffer to be used to select match, but I think
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
925 ;; choose-completion-string will need redefining, so it just inserts
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
926 ;; choice with out any previous input.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
927 (interactive)
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
928 (setq iswitchb-rescan nil)
41287
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
929 (let ((buf (current-buffer))
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
930 (temp-buf "*Completions*")
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
931 (win))
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
932
41287
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
933 (if (eq last-command this-command)
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
934 ;; scroll buffer
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
935 (progn
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
936 (set-buffer temp-buf)
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
937 (setq win (get-buffer-window temp-buf))
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
938 (if (pos-visible-in-window-p (point-max) win)
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
939 (set-window-start win (point-min))
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
940 (scroll-other-window))
21706
a0c3ee34362d Only require cl if cadr and last are not defined (thanks to Dave Love.)
Stephen Eglen <stephen@gnu.org>
parents: 21326
diff changeset
941 (set-buffer buf))
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
942
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
943 (with-output-to-temp-buffer temp-buf
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
944 (if iswitchb-xemacs
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
945
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
946 ;; XEmacs extents are put on by default, doesn't seem to be
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
947 ;; any way of switching them off.
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
948 (display-completion-list (if iswitchb-matches
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
949 iswitchb-matches
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
950 iswitchb-buflist)
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
951 :help-string "iswitchb "
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
952 :activate-callback
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
953 (lambda (x y z)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
954 (message "doesn't work yet, sorry!")))
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
955 ;; else running Emacs
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
956 (with-current-buffer standard-output
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
957 (fundamental-mode))
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
958 (display-completion-list (if iswitchb-matches
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
959 iswitchb-matches
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
960 iswitchb-buflist))
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
961 )))))
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
962
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
963 ;;; KILL CURRENT BUFFER
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
964
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
965 (defun iswitchb-kill-buffer ()
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
966 "Kill the buffer at the head of `iswitchb-matches'."
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
967 (interactive)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
968 (let ( (enable-recursive-minibuffers t)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
969 buf)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
970
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
971 (setq buf (car iswitchb-matches))
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
972 ;; check to see if buf is non-nil.
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
973 (if buf
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
974 (progn
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
975 (kill-buffer buf)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
976
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
977 ;; Check if buffer exists. XEmacs gnuserv.el makes alias
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
978 ;; for kill-buffer which does not return t if buffer is
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
979 ;; killed, so we can't rely on kill-buffer return value.
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
980 (if (get-buffer buf)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
981 ;; buffer couldn't be killed.
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
982 (setq iswitchb-rescan t)
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
983 ;; else buffer was killed so remove name from list.
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
984 (setq iswitchb-buflist (delq buf iswitchb-buflist)))))))
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
985
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
986 ;;; VISIT CHOSEN BUFFER
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
987 (defun iswitchb-visit-buffer (buffer)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
988 "Visit buffer named BUFFER according to `iswitchb-method'."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
989 (let* (win newframe)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
990 (cond
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
991 ((eq iswitchb-method 'samewindow)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
992 (switch-to-buffer buffer))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
993
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
994 ((memq iswitchb-method '(always-frame maybe-frame))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
995 (cond
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
996 ((and (setq win (iswitchb-window-buffer-p buffer))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
997 (or (eq iswitchb-method 'always-frame)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
998 (y-or-n-p "Jump to frame? ")))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
999 (setq newframe (window-frame win))
41926
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
1000 (if (not iswitchb-xemacs)
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
1001 (select-frame-set-input-focus newframe)
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
1002 (raise-frame newframe)
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
1003 (select-frame newframe)
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
1004 )
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
1005 (select-window win))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1006 (t
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1007 ;; No buffer in other frames...
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1008 (switch-to-buffer buffer)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1009 )))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1010
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1011 ((eq iswitchb-method 'otherwindow)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1012 (switch-to-buffer-other-window buffer))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1013
17618
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
1014 ((eq iswitchb-method 'display)
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
1015 (display-buffer buffer))
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
1016
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1017 ((eq iswitchb-method 'otherframe)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1018 (progn
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1019 (switch-to-buffer-other-frame buffer)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1020 (if (not iswitchb-xemacs)
41926
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
1021 (select-frame-set-input-focus (selected-frame)))
21706
a0c3ee34362d Only require cl if cadr and last are not defined (thanks to Dave Love.)
Stephen Eglen <stephen@gnu.org>
parents: 21326
diff changeset
1022 )))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1023
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1024 (defun iswitchb-possible-new-buffer (buf)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1025 "Possibly create and visit a new buffer called BUF."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1026
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1027 (let ((newbufcreated))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1028 (if (and iswitchb-newbuffer
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1029 (or
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1030 (not iswitchb-prompt-newbuffer)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1031
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1032 (and iswitchb-prompt-newbuffer
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1033 (y-or-n-p
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1034 (format
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1035 "No buffer matching `%s', create one? "
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1036 buf)))))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1037 ;; then create a new buffer
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1038 (progn
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1039 (setq newbufcreated (get-buffer-create buf))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1040 (if (fboundp 'set-buffer-major-mode)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1041 (set-buffer-major-mode newbufcreated))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1042 (iswitchb-visit-buffer newbufcreated))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1043 ;; else wont create new buffer
21706
a0c3ee34362d Only require cl if cadr and last are not defined (thanks to Dave Love.)
Stephen Eglen <stephen@gnu.org>
parents: 21326
diff changeset
1044 (message (format "no buffer matching `%s'" buf)))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1045
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1046 (defun iswitchb-window-buffer-p (buffer)
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1047 "Return window pointer if BUFFER is visible in another frame.
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1048 If BUFFER is visible in the current frame, return nil."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1049 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1050 (let ((blist (iswitchb-get-buffers-in-frames 'current)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1051 ;;If the buffer is visible in current frame, return nil
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1052 (if (memq buffer blist)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1053 nil
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1054 ;; maybe in other frame or icon
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1055 (get-buffer-window buffer 0) ; better than 'visible
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1056 )))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1057
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1058 ;;;###autoload
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1059 (defun iswitchb-default-keybindings ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1060 "Set up default keybindings for `iswitchb-buffer'.
24820
788dc6ff04da Add iswitchb-minibuffer-setup to minibuffer-setup-hook in
Stephen Eglen <stephen@gnu.org>
parents: 23785
diff changeset
1061 Call this function to override the normal bindings. This function also
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1062 adds a hook to the minibuffer.
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1063
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1064 Obsolescent. Use `iswitchb-mode'."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1065 (interactive)
24820
788dc6ff04da Add iswitchb-minibuffer-setup to minibuffer-setup-hook in
Stephen Eglen <stephen@gnu.org>
parents: 23785
diff changeset
1066 (add-hook 'minibuffer-setup-hook 'iswitchb-minibuffer-setup)
26155
6f7db3f3698d iswitchb-default-keybindings: no-need for read-kbd-macro.
Stephen Eglen <stephen@gnu.org>
parents: 26065
diff changeset
1067 (global-set-key "\C-xb" 'iswitchb-buffer)
6f7db3f3698d iswitchb-default-keybindings: no-need for read-kbd-macro.
Stephen Eglen <stephen@gnu.org>
parents: 26065
diff changeset
1068 (global-set-key "\C-x4b" 'iswitchb-buffer-other-window)
6f7db3f3698d iswitchb-default-keybindings: no-need for read-kbd-macro.
Stephen Eglen <stephen@gnu.org>
parents: 26065
diff changeset
1069 (global-set-key "\C-x4\C-o" 'iswitchb-display-buffer)
6f7db3f3698d iswitchb-default-keybindings: no-need for read-kbd-macro.
Stephen Eglen <stephen@gnu.org>
parents: 26065
diff changeset
1070 (global-set-key "\C-x5b" 'iswitchb-buffer-other-frame))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1071
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1072 ;;;###autoload
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1073 (defun iswitchb-buffer ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1074 "Switch to another buffer.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1075
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1076 The buffer name is selected interactively by typing a substring. The
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1077 buffer is displayed according to `iswitchb-default-method' -- the
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1078 default is to show it in the same window, unless it is already visible
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1079 in another frame.
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1080 For details of keybindings, do `\\[describe-function] iswitchb'."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1081 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1082 (setq iswitchb-method iswitchb-default-method)
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1083 (iswitchb))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1084
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1085 ;;;###autoload
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1086 (defun iswitchb-buffer-other-window ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1087 "Switch to another buffer and show it in another window.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1088 The buffer name is selected interactively by typing a substring.
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1089 For details of keybindings, do `\\[describe-function] iswitchb'."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1090 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1091 (setq iswitchb-method 'otherwindow)
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1092 (iswitchb))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1093
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1094 ;;;###autoload
17618
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
1095 (defun iswitchb-display-buffer ()
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
1096 "Display a buffer in another window but don't select it.
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
1097 The buffer name is selected interactively by typing a substring.
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
1098 For details of keybindings, do `\\[describe-function] iswitchb'."
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
1099 (interactive)
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
1100 (setq iswitchb-method 'display)
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1101 (iswitchb))
17618
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
1102
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
1103 ;;;###autoload
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1104 (defun iswitchb-buffer-other-frame ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1105 "Switch to another buffer and show it in another frame.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1106 The buffer name is selected interactively by typing a substring.
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1107 For details of keybindings, do `\\[describe-function] iswitchb'."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1108 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1109 (setq iswitchb-method 'otherframe)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1110 (iswitchb))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1111
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1112 ;;; XEmacs hack for showing default buffer
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1113
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1114 ;; The first time we enter the minibuffer, Emacs puts up the default
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1115 ;; buffer to switch to, but XEmacs doesn't -- presumably there is a
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1116 ;; subtle difference in the two versions of post-command-hook. The
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1117 ;; default is shown for both whenever we delete all of our text
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1118 ;; though, indicating its just a problem the first time we enter the
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1119 ;; function. To solve this, we use another entry hook for emacs to
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1120 ;; show the default the first time we enter the minibuffer.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1121
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
1122 (defun iswitchb-init-XEmacs-trick ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1123 "Display default buffer when first entering minibuffer.
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1124 This is a hack for XEmacs, and should really be handled by `iswitchb-exhibit'."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1125 (if (iswitchb-entryfn-p)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1126 (progn
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1127 (iswitchb-exhibit)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1128 (goto-char (point-min)))))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1129
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1130 ;; add this hook for XEmacs only.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1131 (if iswitchb-xemacs
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1132 (add-hook 'iswitchb-minibuffer-setup-hook
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
1133 'iswitchb-init-XEmacs-trick))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1134
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1135 ;;; XEmacs / backspace key
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1136 ;; For some reason, if the backspace key is pressed in XEmacs, the
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1137 ;; line gets confused, so I've added a simple key definition to make
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1138 ;; backspace act like the normal delete key.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1139
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1140 (defun iswitchb-xemacs-backspacekey ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1141 "Bind backspace to `backward-delete-char'."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1142 (define-key iswitchb-mode-map '[backspace] 'backward-delete-char)
21706
a0c3ee34362d Only require cl if cadr and last are not defined (thanks to Dave Love.)
Stephen Eglen <stephen@gnu.org>
parents: 21326
diff changeset
1143 (define-key iswitchb-mode-map '[(meta backspace)] 'backward-kill-word))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1144
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1145 (if iswitchb-xemacs
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1146 (add-hook 'iswitchb-define-mode-map-hook
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1147 'iswitchb-xemacs-backspacekey))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1148
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1149 ;;; ICOMPLETE TYPE CODE
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1150
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1151 (defun iswitchb-exhibit ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1152 "Find matching buffers and display a list in the minibuffer.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1153 Copied from `icomplete-exhibit' with two changes:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1154 1. It prints a default buffer name when there is no text yet entered.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1155 2. It calls my completion routine rather than the standard completion."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1156 (if iswitchb-use-mycompletion
26065
852cd4f88b37 (iswitchb-exhibit): Extract user-input only
Gerd Moellmann <gerd@gnu.org>
parents: 25855
diff changeset
1157 (let ((contents (buffer-substring (minibuffer-prompt-end) (point-max)))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1158 (buffer-undo-list t))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1159 (save-excursion
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1160 (goto-char (point-max))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1161 ; Register the end of input, so we
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1162 ; know where the extra stuff
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1163 ; (match-status info) begins:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1164 (if (not (boundp 'iswitchb-eoinput))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1165 ;; In case it got wiped out by major mode business:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1166 (make-local-variable 'iswitchb-eoinput))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1167 (setq iswitchb-eoinput (point))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1168 ;; Update the list of matches
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1169 (setq iswitchb-text contents)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1170 (iswitchb-set-matches)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1171 (setq iswitchb-rescan t)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1172 (iswitchb-set-common-completion)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1173
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1174 ;; Insert the match-status information:
41534
2f19920361ab (iswitchb-exhibit): Use insert instead of insert-string.
Pavel Janík <Pavel@Janik.cz>
parents: 41287
diff changeset
1175 (insert (iswitchb-completions
2f19920361ab (iswitchb-exhibit): Use insert instead of insert-string.
Pavel Janík <Pavel@Janik.cz>
parents: 41287
diff changeset
1176 contents
2f19920361ab (iswitchb-exhibit): Use insert instead of insert-string.
Pavel Janík <Pavel@Janik.cz>
parents: 41287
diff changeset
1177 minibuffer-completion-table
2f19920361ab (iswitchb-exhibit): Use insert instead of insert-string.
Pavel Janík <Pavel@Janik.cz>
parents: 41287
diff changeset
1178 minibuffer-completion-predicate
2f19920361ab (iswitchb-exhibit): Use insert instead of insert-string.
Pavel Janík <Pavel@Janik.cz>
parents: 41287
diff changeset
1179 (not minibuffer-completion-confirm)))))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1180
30527
876c0335dead (iswitchb-entryfn-p): Test this-command instead
Gerd Moellmann <gerd@gnu.org>
parents: 28859
diff changeset
1181 (defun iswitchb-completions (name candidates predicate require-match)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1182 "Return the string that is displayed after the user's text.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1183 Modified from `icomplete-completions'."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1184
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1185 (let ((comps iswitchb-matches)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1186 ; "-determined" - only one candidate
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1187 (open-bracket-determined (if require-match "(" "["))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1188 (close-bracket-determined (if require-match ")" "]"))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1189 ;"-prospects" - more than one candidate
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1190 (open-bracket-prospects "{")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1191 (close-bracket-prospects "}")
21706
a0c3ee34362d Only require cl if cadr and last are not defined (thanks to Dave Love.)
Stephen Eglen <stephen@gnu.org>
parents: 21326
diff changeset
1192 first)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1193
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1194 (if (and iswitchb-use-fonts comps)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1195 (progn
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1196 (setq first (car comps))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1197 (setq first (format "%s" first))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1198 (put-text-property 0 (length first) 'face
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1199 (if (= (length comps) 1)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1200 'font-lock-comment-face
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1201 'font-lock-function-name-face)
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1202 first)
21706
a0c3ee34362d Only require cl if cadr and last are not defined (thanks to Dave Love.)
Stephen Eglen <stephen@gnu.org>
parents: 21326
diff changeset
1203 (setq comps (cons first (cdr comps)))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1204
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1205 (cond ((null comps) (format " %sNo match%s"
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1206 open-bracket-determined
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1207 close-bracket-determined))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1208
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1209 ((null (cdr comps)) ;one match
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1210 (concat (if (and (> (length (car comps))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1211 (length name)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1212 (concat open-bracket-determined
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1213 ;; when there is one match, show the
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1214 ;; matching buffer name in full
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1215 (car comps)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1216 close-bracket-determined)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1217 "")
21706
a0c3ee34362d Only require cl if cadr and last are not defined (thanks to Dave Love.)
Stephen Eglen <stephen@gnu.org>
parents: 21326
diff changeset
1218 (if (not iswitchb-use-fonts) " [Matched]")))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1219 (t ;multiple matches
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1220 (let* (
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1221 ;;(most (try-completion name candidates predicate))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1222 (most nil)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1223 (most-len (length most))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1224 most-is-exact
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1225 first
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1226 (alternatives
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1227 (apply
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1228 (function concat)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1229 (cdr (apply
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1230 (function nconc)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1231 (mapcar '(lambda (com)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1232 (if (= (length com) most-len)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1233 ;; Most is one exact match,
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1234 ;; note that and leave out
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1235 ;; for later indication:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1236 (progn
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1237 (setq most-is-exact t)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1238 ())
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1239 (list ","
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1240 (substring com
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1241 most-len))))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1242 comps))))))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1243
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1244 (concat
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1245
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1246 ;; put in common completion item -- what you get by
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1247 ;; pressing tab
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1248 (if (> (length iswitchb-common-match-string) (length name))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1249 (concat open-bracket-determined
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1250 (substring iswitchb-common-match-string
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1251 (length name))
21706
a0c3ee34362d Only require cl if cadr and last are not defined (thanks to Dave Love.)
Stephen Eglen <stephen@gnu.org>
parents: 21326
diff changeset
1252 close-bracket-determined))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1253 ;; end of partial matches...
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1254
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1255 ;; think this bit can be ignored.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1256 (and (> most-len (length name))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1257 (concat open-bracket-determined
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1258 (substring most (length name))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1259 close-bracket-determined))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1260
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1261 ;; list all alternatives
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1262 open-bracket-prospects
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1263 (if most-is-exact
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1264 (concat "," alternatives)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1265 alternatives)
21706
a0c3ee34362d Only require cl if cadr and last are not defined (thanks to Dave Love.)
Stephen Eglen <stephen@gnu.org>
parents: 21326
diff changeset
1266 close-bracket-prospects))))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1267
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1268 (defun iswitchb-minibuffer-setup ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1269 "Set up minibuffer for `iswitchb-buffer'.
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1270 Copied from `icomplete-minibuffer-setup-hook'."
41287
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
1271 (when (iswitchb-entryfn-p)
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
1272 (set (make-local-variable 'iswitchb-use-mycompletion) t)
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
1273 (add-hook 'pre-command-hook 'iswitchb-pre-command nil t)
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
1274 (add-hook 'post-command-hook 'iswitchb-post-command nil t)
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
1275 (run-hooks 'iswitchb-minibuffer-setup-hook)))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1276
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1277 (defun iswitchb-pre-command ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1278 "Run before command in `iswitchb-buffer'."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1279 (iswitchb-tidy))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1280
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1281 (defun iswitchb-post-command ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1282 "Run after command in `iswitchb-buffer'."
21706
a0c3ee34362d Only require cl if cadr and last are not defined (thanks to Dave Love.)
Stephen Eglen <stephen@gnu.org>
parents: 21326
diff changeset
1283 (iswitchb-exhibit))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1284
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1285 (defun iswitchb-tidy ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1286 "Remove completions display, if any, prior to new user input.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1287 Copied from `icomplete-tidy'."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1288
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1289 (if (and (boundp 'iswitchb-eoinput)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1290 iswitchb-eoinput)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1291
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1292 (if (> iswitchb-eoinput (point-max))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1293 ;; Oops, got rug pulled out from under us - reinit:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1294 (setq iswitchb-eoinput (point-max))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1295 (let ((buffer-undo-list buffer-undo-list )) ; prevent entry
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1296 (delete-region iswitchb-eoinput (point-max))))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1297
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1298 ;; Reestablish the local variable 'cause minibuffer-setup is weird:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1299 (make-local-variable 'iswitchb-eoinput)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1300 (setq iswitchb-eoinput 1)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1301
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1302 (defun iswitchb-entryfn-p ()
30527
876c0335dead (iswitchb-entryfn-p): Test this-command instead
Gerd Moellmann <gerd@gnu.org>
parents: 28859
diff changeset
1303 "Return non-nil if we are using `iswitchb-buffer'."
33818
42ed3c6a1d89 (iswitchb-minibuf-depth): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 32288
diff changeset
1304 (eq iswitchb-minibuf-depth (minibuffer-depth)))
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1305
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1306 (defun iswitchb-summaries-to-end ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1307 "Move the summaries to the end of the list.
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1308 This is an example function which can be hooked on to
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1309 `iswitchb-make-buflist-hook'. Any buffer matching the regexps
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1310 `Summary' or `output\*$'are put to the end of the list."
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1311 (let ((summaries (delq nil
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1312 (mapcar
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1313 (lambda (x)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1314 (if (string-match "Summary\\|output\\*$" x)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1315 x))
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1316 iswitchb-temp-buflist))))
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1317 (iswitchb-to-end summaries)))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1318
28619
79fd94833204 (iswitchb-case): New function. If the user input
Gerd Moellmann <gerd@gnu.org>
parents: 27497
diff changeset
1319 (defun iswitchb-case ()
79fd94833204 (iswitchb-case): New function. If the user input
Gerd Moellmann <gerd@gnu.org>
parents: 27497
diff changeset
1320 "Return non-nil iff we should ignore case when matching.
79fd94833204 (iswitchb-case): New function. If the user input
Gerd Moellmann <gerd@gnu.org>
parents: 27497
diff changeset
1321 See the variable `iswitchb-case' for details."
79fd94833204 (iswitchb-case): New function. If the user input
Gerd Moellmann <gerd@gnu.org>
parents: 27497
diff changeset
1322 (if iswitchb-case
79fd94833204 (iswitchb-case): New function. If the user input
Gerd Moellmann <gerd@gnu.org>
parents: 27497
diff changeset
1323 (if iswitchb-xemacs
79fd94833204 (iswitchb-case): New function. If the user input
Gerd Moellmann <gerd@gnu.org>
parents: 27497
diff changeset
1324 (isearch-no-upper-case-p iswitchb-text)
79fd94833204 (iswitchb-case): New function. If the user input
Gerd Moellmann <gerd@gnu.org>
parents: 27497
diff changeset
1325 (isearch-no-upper-case-p iswitchb-text t))))
79fd94833204 (iswitchb-case): New function. If the user input
Gerd Moellmann <gerd@gnu.org>
parents: 27497
diff changeset
1326
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1327 ;;;###autoload
41287
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
1328 (define-minor-mode iswitchb-mode
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1329 "Toggle Iswitchb global minor mode.
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1330 With arg, turn Iswitchb mode on if and only iff ARG is positive.
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1331 This mode enables switching between buffers using substrings. See
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1332 `iswitchb' for details."
41287
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
1333 nil nil iswitchb-global-map :global t :group 'iswitchb
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1334 (if iswitchb-mode
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1335 (add-hook 'minibuffer-setup-hook 'iswitchb-minibuffer-setup)
41287
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
1336 (remove-hook 'minibuffer-setup-hook 'iswitchb-minibuffer-setup)))
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1337
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1338 (provide 'iswitchb)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1339
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1340 ;;; iswitchb.el ends here