annotate lisp/iswitchb.el @ 97095:61de98ebc619

** mairix.el is an interface to mairix, a free tool for indexing and searching locally stored mail. It allows you to query mairix and display the search results with Rmail, Gnus and VM. Note that there is an existing Gnus back end, nnmairix.el, which should be used with Maildir/MH setups.
author Chong Yidong <cyd@stupidchicken.com>
date Tue, 29 Jul 2008 17:44:00 +0000
parents f118ad76e286
children d42aff5ca541
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
64762
41bb365f41c4 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64091
diff changeset
3 ;; Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004,
79721
73661ddc7ac7 Add 2008 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 78492
diff changeset
4 ;; 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5
41161
e72cd74733bb Change maintainer email address.
Richard M. Stallman <rms@gnu.org>
parents: 35570
diff changeset
6 ;; Author: Stephen Eglen <stephen@gnu.org>
e72cd74733bb Change maintainer email address.
Richard M. Stallman <rms@gnu.org>
parents: 35570
diff changeset
7 ;; Maintainer: Stephen Eglen <stephen@gnu.org>
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
8 ;; Keywords: completion convenience
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
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94030
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
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94030
diff changeset
14 ;; the Free Software Foundation, either version 3 of the License, or
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94030
diff changeset
15 ;; (at your option) any later version.
17616
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
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94030
diff changeset
23 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
24
21058
f2c4ac206a48 (iswitchb-default-method): Remove :tag entries.
Stephen Eglen <stephen@gnu.org>
parents: 20470
diff changeset
25 ;;; Commentary:
17616
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 ;; Installation:
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
28 ;; To get the functions in this package bound to keys, use
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
29 ;; M-x iswitchb-mode or customize the option `iswitchb-mode'.
52263
078527ad9cd8 Documentation update for installation.
Stephen Eglen <stephen@gnu.org>
parents: 51660
diff changeset
30 ;; Alternatively, add the following line to your .emacs:
078527ad9cd8 Documentation update for installation.
Stephen Eglen <stephen@gnu.org>
parents: 51660
diff changeset
31 ;; (iswitchb-mode 1)
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
51660
a7765f7f8c9e (iswitchb-read-buffer): Remove redudant variable
Stephen Eglen <stephen@gnu.org>
parents: 51366
diff changeset
64 ;; list by pressing RET. I can also put the first element at the end
a7765f7f8c9e (iswitchb-read-buffer): Remove redudant variable
Stephen Eglen <stephen@gnu.org>
parents: 51366
diff changeset
65 ;; of the list by pressing C-s, or put the last element at the head of
a7765f7f8c9e (iswitchb-read-buffer): Remove redudant variable
Stephen Eglen <stephen@gnu.org>
parents: 51366
diff changeset
66 ;; the list by pressing C-r. The item in [] indicates what can be
a7765f7f8c9e (iswitchb-read-buffer): Remove redudant variable
Stephen Eglen <stephen@gnu.org>
parents: 51366
diff changeset
67 ;; added to my input by pressing TAB. In this case, I will get "3"
a7765f7f8c9e (iswitchb-read-buffer): Remove redudant variable
Stephen Eglen <stephen@gnu.org>
parents: 51366
diff changeset
68 ;; 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
56754
5ea587a67aae Update AUCTeX information.
David Kastrup <dak@gnu.org>
parents: 55580
diff changeset
160 ;; end of the list (these are created by AUCTeX when compiling.)
17616
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
63012
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
166 ;; font-lock is used to highlight the first matching buffer. To
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
167 ;; switch this off, set (setq iswitchb-use-faces nil). Colouring of
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
168 ;; the matching buffer name was suggested by Carsten Dominik
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
169 ;; (dominik@strw.leidenuniv.nl)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
170
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
171 ;; Replacement for read-buffer
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
172
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
173 ;; 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
174 ;; 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
175 ;; 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
176 ;; (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
177 ;; (This variable was introduced in Emacs 20.3.)
96376
c3309dba6542 American English spelling fix.
Glenn Morris <rgm@gnu.org>
parents: 94678
diff changeset
178 ;; XEmacs users can get the same behavior by doing:
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
179 ;; (defalias 'read-buffer 'iswitchb-read-buffer)
21058
f2c4ac206a48 (iswitchb-default-method): Remove :tag entries.
Stephen Eglen <stephen@gnu.org>
parents: 20470
diff changeset
180 ;; since `read-buffer' is defined in lisp.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
181
41926
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
182 ;; 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
183
44557
4b1e92d76a10 Update commentary to include new function iswitchb-exclude-nonmatching.
Pavel Janík <Pavel@Janik.cz>
parents: 41926
diff changeset
184 ;; Kin Cho (kin@neoscale.com) sent the following suggestion to use
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47622
diff changeset
185 ;; iswitchb for other completion tasks.
41926
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
186 ;;
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
187 ;; (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
188 ;; "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
189 ;; 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
190 ;; strings to choose from."
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
191 ;; (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
192 ;; (lambda ()
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
193 ;; (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
194 ;; (iswitchb-read-buffer prompt)))
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
195 ;;
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
196 ;; example:
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
197 ;; (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
198 ;; ("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
199
44557
4b1e92d76a10 Update commentary to include new function iswitchb-exclude-nonmatching.
Pavel Janík <Pavel@Janik.cz>
parents: 41926
diff changeset
200 ;; Kin Cho also suggested the following defun. Once you have a subset of
4b1e92d76a10 Update commentary to include new function iswitchb-exclude-nonmatching.
Pavel Janík <Pavel@Janik.cz>
parents: 41926
diff changeset
201 ;; matching buffers matching your current prompt, you can then press
4b1e92d76a10 Update commentary to include new function iswitchb-exclude-nonmatching.
Pavel Janík <Pavel@Janik.cz>
parents: 41926
diff changeset
202 ;; e.g. C-o to restrict matching to those buffers and clearing the prompt:
4b1e92d76a10 Update commentary to include new function iswitchb-exclude-nonmatching.
Pavel Janík <Pavel@Janik.cz>
parents: 41926
diff changeset
203 ;; (defun iswitchb-exclude-nonmatching()
4b1e92d76a10 Update commentary to include new function iswitchb-exclude-nonmatching.
Pavel Janík <Pavel@Janik.cz>
parents: 41926
diff changeset
204 ;; "Make iswitchb work on only the currently matching names."
4b1e92d76a10 Update commentary to include new function iswitchb-exclude-nonmatching.
Pavel Janík <Pavel@Janik.cz>
parents: 41926
diff changeset
205 ;; (interactive)
4b1e92d76a10 Update commentary to include new function iswitchb-exclude-nonmatching.
Pavel Janík <Pavel@Janik.cz>
parents: 41926
diff changeset
206 ;; (setq iswitchb-buflist iswitchb-matches)
4b1e92d76a10 Update commentary to include new function iswitchb-exclude-nonmatching.
Pavel Janík <Pavel@Janik.cz>
parents: 41926
diff changeset
207 ;; (setq iswitchb-rescan t)
4b1e92d76a10 Update commentary to include new function iswitchb-exclude-nonmatching.
Pavel Janík <Pavel@Janik.cz>
parents: 41926
diff changeset
208 ;; (delete-minibuffer-contents))
4b1e92d76a10 Update commentary to include new function iswitchb-exclude-nonmatching.
Pavel Janík <Pavel@Janik.cz>
parents: 41926
diff changeset
209 ;;
4b1e92d76a10 Update commentary to include new function iswitchb-exclude-nonmatching.
Pavel Janík <Pavel@Janik.cz>
parents: 41926
diff changeset
210 ;; (add-hook 'iswitchb-define-mode-map-hook
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47622
diff changeset
211 ;; '(lambda () (define-key
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47622
diff changeset
212 ;; iswitchb-mode-map "\C-o"
44557
4b1e92d76a10 Update commentary to include new function iswitchb-exclude-nonmatching.
Pavel Janík <Pavel@Janik.cz>
parents: 41926
diff changeset
213 ;; 'iswitchb-exclude-nonmatching)))
4b1e92d76a10 Update commentary to include new function iswitchb-exclude-nonmatching.
Pavel Janík <Pavel@Janik.cz>
parents: 41926
diff changeset
214
96376
c3309dba6542 American English spelling fix.
Glenn Morris <rgm@gnu.org>
parents: 94678
diff changeset
215 ;; Other lisp packages extend iswitchb behavior to other tasks. See
41926
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
216 ;; 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
217
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
218 ;; 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
219
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
220 ;; 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
221 ;; 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
222 ;; 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
223 ;; 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
224
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
225 ;; 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
226 ;; 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
227
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
228 ;; Regexp matching
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
229
63012
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
230 ;; There is provision for regexp matching within iswitchb, enabled
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
231 ;; through `iswitchb-regexp'. This allows you to type `c$' for
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
232 ;; example and see all buffer names ending in `c'. No completion
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
233 ;; mechanism is currently offered when regexp searching.
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
234
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
235 ;;; TODO
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
236
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
237 ;;; Acknowledgements
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
238
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
239 ;; Thanks to Jari Aalto <jari.aalto@poboxes.com> for help with the
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
240 ;; first version of this package, iswitch-buffer. Thanks also to many
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
241 ;; others for testing earlier versions.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
242
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
243 ;;; Code:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
244
63012
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
245 (require 'font-lock)
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
246
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
247 ;;; User Variables
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
248 ;;
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
249 ;; These are some things you might want to change.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
250
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
251 (defgroup iswitchb nil
21058
f2c4ac206a48 (iswitchb-default-method): Remove :tag entries.
Stephen Eglen <stephen@gnu.org>
parents: 20470
diff changeset
252 "Switch between buffers using substrings."
22250
a77d473867b8 *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 21706
diff changeset
253 :group 'convenience
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
254 :group 'completion
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
255 :link '(emacs-commentary-link :tag "Commentary" "iswitchb.el")
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
256 :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
257 :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
258
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
259 (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
260 "*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
261 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
262 is temporarily case sensitive."
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
263 :type 'boolean
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
264 :group 'iswitchb)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
265
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
266 (defcustom iswitchb-buffer-ignore
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
267 '("^ ")
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
268 "*List of regexps or functions matching buffer names to ignore.
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
269 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
270 with a space, for which the regexp is `^ '. See the source file for
80278
7f99965bde0d (iswitchb-use-faces): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 79721
diff changeset
271 example functions that filter buffer names."
51366
4ca289edd9e3 (iswitchb-buffer-ignore): Update custom type to allow functions.
Stephen Eglen <stephen@gnu.org>
parents: 49597
diff changeset
272 :type '(repeat (choice regexp function))
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
273 :group 'iswitchb)
65833
fca34be2db31 (iswitchb-buffer-ignore): Label it risky.
Richard M. Stallman <rms@gnu.org>
parents: 65582
diff changeset
274 (put 'iswitchb-buffer-ignore 'risky-local-variable t)
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
275
54956
d0e2ba105b5a 2004-04-17 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 53805
diff changeset
276 (defcustom iswitchb-max-to-show nil
d0e2ba105b5a 2004-04-17 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 53805
diff changeset
277 "*If non-nil, limit the number of names shown in the minibuffer.
54985
b1572d70d407 (iswitchb-max-to-show): Update documentation and :type information.
Stephen Eglen <stephen@gnu.org>
parents: 54967
diff changeset
278 If this value is N, and N is greater than the number of matching
b1572d70d407 (iswitchb-max-to-show): Update documentation and :type information.
Stephen Eglen <stephen@gnu.org>
parents: 54967
diff changeset
279 buffers, the first N/2 and the last N/2 matching buffers are
b1572d70d407 (iswitchb-max-to-show): Update documentation and :type information.
Stephen Eglen <stephen@gnu.org>
parents: 54967
diff changeset
280 shown. This can greatly speed up iswitchb if you have a
b1572d70d407 (iswitchb-max-to-show): Update documentation and :type information.
Stephen Eglen <stephen@gnu.org>
parents: 54967
diff changeset
281 multitude of buffers open."
55038
ec9b32e16559 Update iswitchb-max-to-show.
Stephen Eglen <stephen@gnu.org>
parents: 55001
diff changeset
282 :type '(choice (const :tag "Show all" nil) integer)
54956
d0e2ba105b5a 2004-04-17 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 53805
diff changeset
283 :group 'iswitchb)
d0e2ba105b5a 2004-04-17 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 53805
diff changeset
284
55434
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
285 (defcustom iswitchb-use-virtual-buffers nil
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
286 "*If non-nil, refer to past buffers when none match.
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
287 This feature relies upon the `recentf' package, which will be
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
288 enabled if this variable is configured to a non-nil value."
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
289 :type 'boolean
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
290 :require 'recentf
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
291 :set (function
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
292 (lambda (sym value)
55580
cd398d1e6ab3 2004-05-13 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55434
diff changeset
293 (if value (recentf-mode 1))
55434
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
294 (set sym value)))
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
295 :group 'iswitchb)
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
296
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
297 (defvar iswitchb-virtual-buffers nil)
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
298
41273
793fceb3e6de (iswitchb-cannot-complete-hook): New variable to
Richard M. Stallman <rms@gnu.org>
parents: 41161
diff changeset
299 (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
300 "*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
301 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
302 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
303 `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
304 :type 'hook
793fceb3e6de (iswitchb-cannot-complete-hook): New variable to
Richard M. Stallman <rms@gnu.org>
parents: 41161
diff changeset
305 :group 'iswitchb)
793fceb3e6de (iswitchb-cannot-complete-hook): New variable to
Richard M. Stallman <rms@gnu.org>
parents: 41161
diff changeset
306
87566
0c4a74c24677 * progmodes/ada-xref.el (ada-prj-find-prj-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87384
diff changeset
307 ;; Examples for setting the value of iswitchb-buffer-ignore
0c4a74c24677 * progmodes/ada-xref.el (ada-prj-find-prj-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87384
diff changeset
308 ;;(defun iswitchb-ignore-c-mode (name)
0c4a74c24677 * progmodes/ada-xref.el (ada-prj-find-prj-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87384
diff changeset
309 ;; "Ignore all c mode buffers -- example function for iswitchb."
0c4a74c24677 * progmodes/ada-xref.el (ada-prj-find-prj-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87384
diff changeset
310 ;; (with-current-buffer name
0c4a74c24677 * progmodes/ada-xref.el (ada-prj-find-prj-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87384
diff changeset
311 ;; (derived-mode-p 'c-mode)))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
312
87566
0c4a74c24677 * progmodes/ada-xref.el (ada-prj-find-prj-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87384
diff changeset
313 ;;(setq iswitchb-buffer-ignore '("^ " iswitchb-ignore-c-mode))
0c4a74c24677 * progmodes/ada-xref.el (ada-prj-find-prj-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87384
diff changeset
314 ;;(setq iswitchb-buffer-ignore '("^ " "\\.c\\'" "\\.h\\'"))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
315
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
316 (defcustom iswitchb-default-method 'always-frame
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
317 "*How to switch to new buffer when using `iswitchb-buffer'.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
318 Possible values:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
319 `samewindow' Show new buffer in same window
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
320 `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
321 `display' Display buffer in another window without switching to it
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
322 `otherframe' Show new buffer in another frame
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
323 `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
324 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
325 frame or in the other frame.
21058
f2c4ac206a48 (iswitchb-default-method): Remove :tag entries.
Stephen Eglen <stephen@gnu.org>
parents: 20470
diff changeset
326 `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
327 frame. Otherwise, visit the buffer in the same window."
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
328 :type '(choice (const samewindow)
21058
f2c4ac206a48 (iswitchb-default-method): Remove :tag entries.
Stephen Eglen <stephen@gnu.org>
parents: 20470
diff changeset
329 (const otherwindow)
f2c4ac206a48 (iswitchb-default-method): Remove :tag entries.
Stephen Eglen <stephen@gnu.org>
parents: 20470
diff changeset
330 (const display)
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
331 (const otherframe)
21058
f2c4ac206a48 (iswitchb-default-method): Remove :tag entries.
Stephen Eglen <stephen@gnu.org>
parents: 20470
diff changeset
332 (const maybe-frame)
f2c4ac206a48 (iswitchb-default-method): Remove :tag entries.
Stephen Eglen <stephen@gnu.org>
parents: 20470
diff changeset
333 (const always-frame))
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
334 :group 'iswitchb)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
335
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
336 (defcustom iswitchb-regexp nil
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
337 "*Non-nil means that `iswitchb' will do regexp matching.
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
338 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
339 :type 'boolean
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
340 :group 'iswitchb)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
341
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
342 (defcustom iswitchb-newbuffer t
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
343 "*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
344 See also `iswitchb-prompt-newbuffer'."
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
345 :type 'boolean
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
346 :group 'iswitchb)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
347
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
348 (defcustom iswitchb-prompt-newbuffer t
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
349 "*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
350 See also `iswitchb-newbuffer'."
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
351 :type 'boolean
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
352 :group 'iswitchb)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
353
94030
81785f1ef0fa Move non-autoloaded define-obsolete-variable-alias calls for
Glenn Morris <rgm@gnu.org>
parents: 92692
diff changeset
354 (define-obsolete-variable-alias 'iswitchb-use-fonts 'iswitchb-use-faces "22.1")
81785f1ef0fa Move non-autoloaded define-obsolete-variable-alias calls for
Glenn Morris <rgm@gnu.org>
parents: 92692
diff changeset
355
63012
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
356 (defcustom iswitchb-use-faces t
80278
7f99965bde0d (iswitchb-use-faces): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 79721
diff changeset
357 "*Non-nil means use font-lock faces for showing first match."
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
358 :type 'boolean
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
359 :group 'iswitchb)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
360
27497
7f8974c3b6f8 (iswitchb-use-frame-buffer-list): New configuration
Gerd Moellmann <gerd@gnu.org>
parents: 26455
diff changeset
361 (defcustom iswitchb-use-frame-buffer-list nil
7f8974c3b6f8 (iswitchb-use-frame-buffer-list): New configuration
Gerd Moellmann <gerd@gnu.org>
parents: 26455
diff changeset
362 "*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
363 :type 'boolean
7f8974c3b6f8 (iswitchb-use-frame-buffer-list): New configuration
Gerd Moellmann <gerd@gnu.org>
parents: 26455
diff changeset
364 :group 'iswitchb)
7f8974c3b6f8 (iswitchb-use-frame-buffer-list): New configuration
Gerd Moellmann <gerd@gnu.org>
parents: 26455
diff changeset
365
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
366 (defcustom iswitchb-make-buflist-hook nil
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
367 "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
368 :type 'hook
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
369 :group 'iswitchb)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
370
96889
f118ad76e286 (iswitchb-delim): New variable, suggested by Ted Roden.
Stephen Eglen <stephen@gnu.org>
parents: 96376
diff changeset
371 (defcustom iswitchb-delim ","
f118ad76e286 (iswitchb-delim): New variable, suggested by Ted Roden.
Stephen Eglen <stephen@gnu.org>
parents: 96376
diff changeset
372 "Delimiter to put between buffer names when displaying results."
f118ad76e286 (iswitchb-delim): New variable, suggested by Ted Roden.
Stephen Eglen <stephen@gnu.org>
parents: 96376
diff changeset
373 :type 'string
f118ad76e286 (iswitchb-delim): New variable, suggested by Ted Roden.
Stephen Eglen <stephen@gnu.org>
parents: 96376
diff changeset
374 :group 'iswitchb)
f118ad76e286 (iswitchb-delim): New variable, suggested by Ted Roden.
Stephen Eglen <stephen@gnu.org>
parents: 96376
diff changeset
375
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
376 (defvar iswitchb-all-frames 'visible
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
377 "*Argument to pass to `walk-windows' when finding visible buffers.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
378 See documentation of `walk-windows' for useful values.")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
379
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
380 (defcustom iswitchb-minibuffer-setup-hook nil
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
381 "Iswitchb-specific customization of minibuffer setup.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
382
78492
7c8949dbfa0d Replace `iff' in doc-strings and comments.
Glenn Morris <rgm@gnu.org>
parents: 78236
diff changeset
383 This hook is run during minibuffer setup if `iswitchb' is active.
53805
dd6aac780c4b (iswitchb-minibuffer-setup-hook): Update doc string
Stephen Eglen <stephen@gnu.org>
parents: 53161
diff changeset
384 For instance:
dd6aac780c4b (iswitchb-minibuffer-setup-hook): Update doc string
Stephen Eglen <stephen@gnu.org>
parents: 53161
diff changeset
385 \(add-hook 'iswitchb-minibuffer-setup-hook
dd6aac780c4b (iswitchb-minibuffer-setup-hook): Update doc string
Stephen Eglen <stephen@gnu.org>
parents: 53161
diff changeset
386 '\(lambda () (set (make-local-variable 'max-mini-window-height) 3)))
dd6aac780c4b (iswitchb-minibuffer-setup-hook): Update doc string
Stephen Eglen <stephen@gnu.org>
parents: 53161
diff changeset
387 will constrain the minibuffer to a maximum height of 3 lines when
dd6aac780c4b (iswitchb-minibuffer-setup-hook): Update doc string
Stephen Eglen <stephen@gnu.org>
parents: 53161
diff changeset
388 iswitchb is running."
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
389 :type 'hook
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
390 :group 'iswitchb)
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
391
63075
7e902750d940 2005-06-06 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63012
diff changeset
392 (defface iswitchb-single-match
63012
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
393 '((t
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
394 (:inherit font-lock-comment-face)))
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
395 "Iswitchb face for single matching buffer name."
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
396 :version "22.1"
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
397 :group 'iswitchb)
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
398
63075
7e902750d940 2005-06-06 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63012
diff changeset
399 (defface iswitchb-current-match
63012
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
400 '((t
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
401 (:inherit font-lock-function-name-face)))
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
402 "Iswitchb face for current matching buffer name."
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
403 :version "22.1"
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
404 :group 'iswitchb)
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
405
63075
7e902750d940 2005-06-06 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63012
diff changeset
406 (defface iswitchb-virtual-matches
63012
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
407 '((t
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
408 (:inherit font-lock-builtin-face)))
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
409 "Iswitchb face for matching virtual buffer names.
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
410 See also `iswitchb-use-virtual-buffers'."
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
411 :version "22.1"
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
412 :group 'iswitchb)
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
413
63075
7e902750d940 2005-06-06 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63012
diff changeset
414 (defface iswitchb-invalid-regexp
63012
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
415 '((t
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
416 (:inherit font-lock-warning-face)))
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
417 "Iswitchb face for indicating invalid regexp. "
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
418 :version "22.1"
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
419 :group 'iswitchb)
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
420
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
421 ;; Do we need the variable iswitchb-use-mycompletion?
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
422
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
423 ;;; Internal Variables
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
424
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
425 (defvar iswitchb-method nil
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
426 "Stores the method for viewing the selected buffer.
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
427 Its value is one of `samewindow', `otherwindow', `display', `otherframe',
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
428 `maybe-frame' or `always-frame'. See `iswitchb-default-method' for
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
429 details of values.")
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
430
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
431 (defvar iswitchb-eoinput 1
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
432 "Point where minibuffer input ends and completion info begins.
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
433 Copied from `icomplete-eoinput'.")
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
434 (make-variable-buffer-local 'iswitchb-eoinput)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
435
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
436 (defvar iswitchb-buflist nil
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
437 "Stores the current list of buffers that will be searched through.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
438 The list is ordered, so that the most recent buffers come first,
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
439 although by default, the buffers visible in the current frame are put
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
440 at the end of the list. Created by `iswitchb-make-buflist'.")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
441
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
442 ;; todo -- is this necessary?
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
443
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
444 (defvar iswitchb-use-mycompletion nil
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
445 "Non-nil means use `iswitchb-buffer' completion feedback.
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
446 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
447 interfere with other minibuffer usage.")
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
448
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
449 (defvar iswitchb-change-word-sub nil
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
450 "Private variable used by `iswitchb-word-matching-substring'.")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
451
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
452 (defvar iswitchb-common-match-string nil
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
453 "Stores the string that is common to all matching buffers.")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
454
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
455 (defvar iswitchb-rescan nil
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
456 "Non-nil means we need to regenerate the list of matching buffers.")
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-text nil
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
459 "Stores the users string as it is typed in.")
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-matches nil
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
462 "List of buffers currently matching `iswitchb-text'.")
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
463
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
464 (defvar iswitchb-mode-map
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
465 (let ((map (make-sparse-keymap)))
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
466 (set-keymap-parent map minibuffer-local-map)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
467 (define-key map "?" 'iswitchb-completion-help)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
468 (define-key map "\C-s" 'iswitchb-next-match)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
469 (define-key map "\C-r" 'iswitchb-prev-match)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
470 (define-key map "\t" 'iswitchb-complete)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
471 (define-key map "\C-j" 'iswitchb-select-buffer-text)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
472 (define-key map "\C-t" 'iswitchb-toggle-regexp)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
473 (define-key map "\C-x\C-f" 'iswitchb-find-file)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
474 (define-key map "\C-c" 'iswitchb-toggle-case)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
475 (define-key map "\C-k" 'iswitchb-kill-buffer)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
476 (define-key map "\C-m" 'iswitchb-exit-minibuffer)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
477 map)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
478 "Minibuffer keymap for `iswitchb-buffer'.")
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
479
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
480 (defvar iswitchb-global-map
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
481 (let ((map (make-sparse-keymap)))
75067
ff242396ed7e (iswitchb-global-map): Use command-remapping if available.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 69538
diff changeset
482 (dolist (b '((switch-to-buffer . iswitchb-buffer)
ff242396ed7e (iswitchb-global-map): Use command-remapping if available.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 69538
diff changeset
483 (switch-to-buffer-other-window . iswitchb-buffer-other-window)
ff242396ed7e (iswitchb-global-map): Use command-remapping if available.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 69538
diff changeset
484 (switch-to-buffer-other-frame . iswitchb-buffer-other-frame)
ff242396ed7e (iswitchb-global-map): Use command-remapping if available.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 69538
diff changeset
485 (display-buffer . iswitchb-display-buffer)))
ff242396ed7e (iswitchb-global-map): Use command-remapping if available.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 69538
diff changeset
486 (if (fboundp 'command-remapping)
ff242396ed7e (iswitchb-global-map): Use command-remapping if available.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 69538
diff changeset
487 (define-key map (vector 'remap (car b)) (cdr b))
ff242396ed7e (iswitchb-global-map): Use command-remapping if available.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 69538
diff changeset
488 (substitute-key-definition (car b) (cdr b) map global-map)))
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
489 map)
55373
e1be47d1e62e (iswitchb-global-map): Fix typo. Removed unwanted ###autoloads from
Stephen Eglen <stephen@gnu.org>
parents: 55038
diff changeset
490 "Global keymap for `iswitchb-mode'.")
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
491
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
492 (defvar iswitchb-history nil
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
493 "History of buffers selected using `iswitchb-buffer'.")
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
494
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
495 (defvar iswitchb-exit nil
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
496 "Flag to monitor how `iswitchb-buffer' exits.
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
497 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
498 selected.")
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
499
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
500 (defvar iswitchb-buffer-ignore-orig nil
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
501 "Stores original value of `iswitchb-buffer-ignore'.")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
502
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
503 (defvar iswitchb-default nil
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
504 "Default buffer for iswitchb.")
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
505
22380
2645c2c3829f (iswitchb-require-match, iswitchb-temp-buflist, iswitchb-bufs-in-frame):
Stephen Eglen <stephen@gnu.org>
parents: 22354
diff changeset
506 ;; 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
507 (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
508 "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
509
2645c2c3829f (iswitchb-require-match, iswitchb-temp-buflist, iswitchb-bufs-in-frame):
Stephen Eglen <stephen@gnu.org>
parents: 22354
diff changeset
510 (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
511 "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
512
2645c2c3829f (iswitchb-require-match, iswitchb-temp-buflist, iswitchb-bufs-in-frame):
Stephen Eglen <stephen@gnu.org>
parents: 22354
diff changeset
513 (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
514 "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
515
33818
42ed3c6a1d89 (iswitchb-minibuf-depth): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 32288
diff changeset
516 (defvar iswitchb-minibuf-depth nil
42ed3c6a1d89 (iswitchb-minibuf-depth): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 32288
diff changeset
517 "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
518
63012
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
519 (defvar iswitchb-common-match-inserted nil
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
520 "Non-nil if we have just inserted a common match in the minibuffer.")
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
521
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
522 (defvar iswitchb-invalid-regexp)
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
523
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
524 ;;; FUNCTIONS
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
525
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
526 ;;; ISWITCHB KEYMAP
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
527 (defun iswitchb-define-mode-map ()
92508
15c28c0ed14e Don't check for `cadr' and `last'.
Juanma Barranquero <lekktu@gmail.com>
parents: 87566
diff changeset
528 "Set up the keymap for `iswitchb-buffer'."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
529 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
530 (let (map)
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
531 ;; generated every time so that it can inherit new functions.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
532 ;;(or iswitchb-mode-map
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
533
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
534 (setq map (copy-keymap minibuffer-local-map))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
535 (define-key map "?" 'iswitchb-completion-help)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
536 (define-key map "\C-s" 'iswitchb-next-match)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
537 (define-key map "\C-r" 'iswitchb-prev-match)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
538 (define-key map "\t" 'iswitchb-complete)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
539 (define-key map "\C-j" 'iswitchb-select-buffer-text)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
540 (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
541 (define-key map "\C-x\C-f" 'iswitchb-find-file)
68204
59d4f36d7a5c (iswitchb-define-mode-map): Use C-n for iswitchb-toggle-ignore. (This
Stephen Eglen <stephen@gnu.org>
parents: 66594
diff changeset
542 (define-key map "\C-n" 'iswitchb-toggle-ignore)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
543 (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
544 (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
545 (define-key map "\C-m" 'iswitchb-exit-minibuffer)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
546 (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
547 (run-hooks 'iswitchb-define-mode-map-hook)))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47622
diff changeset
548
92508
15c28c0ed14e Don't check for `cadr' and `last'.
Juanma Barranquero <lekktu@gmail.com>
parents: 87566
diff changeset
549 (make-obsolete 'iswitchb-define-mode-map
15c28c0ed14e Don't check for `cadr' and `last'.
Juanma Barranquero <lekktu@gmail.com>
parents: 87566
diff changeset
550 "use M-x iswitchb-mode or customize the variable `iswitchb-mode'."
15c28c0ed14e Don't check for `cadr' and `last'.
Juanma Barranquero <lekktu@gmail.com>
parents: 87566
diff changeset
551 "21.1")
15c28c0ed14e Don't check for `cadr' and `last'.
Juanma Barranquero <lekktu@gmail.com>
parents: 87566
diff changeset
552
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
553 ;;; MAIN FUNCTION
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
554 (defun iswitchb ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
555 "Switch to buffer matching a substring.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
556 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
557 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
558 selected. As you type, most keys have their normal keybindings,
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
559 except for the following:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
560 \\<iswitchb-mode-map>
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
561
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
562 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
563 list is empty, possibly prompt to create new buffer.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
564
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
565 \\[iswitchb-select-buffer-text] Select the current prompt as the buffer.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
566 If no buffer is found, prompt for a new one.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
567
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
568 \\[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
569 \\[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
570 \\[iswitchb-complete] Complete a common suffix to the current string that
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
571 matches all buffers. If there is only one match, select that buffer.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
572 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
573 in a separate window.
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
574 \\[iswitchb-toggle-regexp] Toggle regexp searching.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
575 \\[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
576 \\[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
577 \\[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
578 \\[iswitchb-kill-buffer] Kill buffer at head of buffer list."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
579 ;;\\[iswitchb-toggle-ignore] Toggle ignoring certain buffers (see \
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
580 ;;`iswitchb-buffer-ignore')
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47622
diff changeset
581
41287
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
582 (let* ((prompt "iswitch ")
63012
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
583 iswitchb-invalid-regexp
41287
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
584 (buf (iswitchb-read-buffer prompt)))
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
585
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
586 ;;(message "chosen text %s" iswitchb-final-text)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
587 ;; Choose the buffer name: either the text typed in, or the head
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
588 ;; of the list of matches
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
589
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
590 (cond ( (eq iswitchb-exit 'findfile)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
591 (call-interactively 'find-file))
63012
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
592 (iswitchb-invalid-regexp
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
593 (message "Won't make invalid regexp named buffer"))
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
594 (t
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
595 ;; View the buffer
21058
f2c4ac206a48 (iswitchb-default-method): Remove :tag entries.
Stephen Eglen <stephen@gnu.org>
parents: 20470
diff changeset
596 ;;(message "go to buf %s" buf)
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
597 ;; Check buf is non-nil.
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
598 (if buf
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
599 (if (get-buffer buf)
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
600 ;; 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
601 (iswitchb-visit-buffer buf)
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
602 ;; else buffer doesn't exist
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
603 (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
604 ))))
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
605
55434
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
606 (defun iswitchb-read-buffer (prompt &optional default require-match
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
607 start matches-set)
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
608 "Replacement for the built-in `read-buffer'.
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
609 Return the name of a buffer selected.
55434
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
610 PROMPT is the prompt to give to the user.
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
611 DEFAULT if given is the default buffer to be selected, which will
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
612 go to the front of the list.
80278
7f99965bde0d (iswitchb-use-faces): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 79721
diff changeset
613 If REQUIRE-MATCH is non-nil, an existing buffer must be selected.
55434
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
614 If START is a string, the selection process is started with that
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
615 string.
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
616 If MATCHES-SET is non-nil, the buflist is not updated before
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
617 the selection process begins. Used by isearchb.el."
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
618 (let
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 iswitchb-final-text
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
622 (icomplete-mode nil) ;; prevent icomplete starting up
63012
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
623 )
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
624
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
625 (iswitchb-define-mode-map)
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
626 (setq iswitchb-exit nil)
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
627 (setq iswitchb-default
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
628 (if (bufferp default)
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
629 (buffer-name default)
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
630 default))
55434
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
631 (setq iswitchb-text (or start ""))
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
632 (unless matches-set
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
633 (setq iswitchb-rescan t)
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
634 (iswitchb-make-buflist iswitchb-default)
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
635 (iswitchb-set-matches))
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
636 (let
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
637 ((minibuffer-local-completion-map iswitchb-mode-map)
33818
42ed3c6a1d89 (iswitchb-minibuf-depth): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 32288
diff changeset
638 ;; 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
639 ;; 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
640 (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
641 (iswitchb-require-match require-match))
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
642 ;; prompt the user for the buffer name
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
643 (setq iswitchb-final-text (completing-read
55434
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
644 prompt ;the prompt
32288
47476840057c (iswitchb-mode): Add :require.
Dave Love <fx@gnu.org>
parents: 31797
diff changeset
645 '(("dummy" . 1)) ;table
55434
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
646 nil ;predicate
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
647 nil ;require-match [handled elsewhere]
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
648 start ;initial-contents
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
649 'iswitchb-history)))
53161
779a274d72ed iswitchb-read-buffer: check that iswitchb-exit is not 'usefirst (set
Stephen Eglen <stephen@gnu.org>
parents: 52401
diff changeset
650 (if (and (not (eq iswitchb-exit 'usefirst))
779a274d72ed iswitchb-read-buffer: check that iswitchb-exit is not 'usefirst (set
Stephen Eglen <stephen@gnu.org>
parents: 52401
diff changeset
651 (get-buffer iswitchb-final-text))
41287
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
652 ;; This happens for example if the buffer was chosen with the mouse.
55434
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
653 (setq iswitchb-matches (list iswitchb-final-text)
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
654 iswitchb-virtual-buffers nil))
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
655
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
656 ;; If no buffer matched, but a virtual buffer was selected, visit
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
657 ;; that file now and act as though that buffer had been selected.
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
658 (if (and iswitchb-virtual-buffers
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
659 (not (iswitchb-existing-buffer-p)))
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
660 (let ((virt (car iswitchb-virtual-buffers)))
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
661 (find-file-noselect (cdr virt))
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
662 (setq iswitchb-matches (list (car virt))
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
663 iswitchb-virtual-buffers nil)))
41287
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
664
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
665 ;; Handling the require-match must be done in a better way.
55434
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
666 (if (and require-match
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
667 (not (iswitchb-existing-buffer-p)))
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
668 (error "Must specify valid buffer"))
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
669
55434
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
670 (if (or (eq iswitchb-exit 'takeprompt)
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
671 (null iswitchb-matches))
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
672 (setq buf-sel iswitchb-final-text)
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
673 ;; else take head of list
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
674 (setq buf-sel (car iswitchb-matches)))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47622
diff changeset
675
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
676 ;; Or possibly choose the default buffer
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
677 (if (equal iswitchb-final-text "")
55434
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
678 (setq buf-sel (car iswitchb-matches)))
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
679
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
680 buf-sel))
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
681
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
682 (defun iswitchb-existing-buffer-p ()
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
683 "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
684 (not (null iswitchb-matches)))
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
685
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
686 ;;; COMPLETION CODE
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
687
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
688 (defun iswitchb-set-common-completion ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
689 "Find common completion of `iswitchb-text' in `iswitchb-matches'.
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
690 The result is stored in `iswitchb-common-match-string'."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
691
92508
15c28c0ed14e Don't check for `cadr' and `last'.
Juanma Barranquero <lekktu@gmail.com>
parents: 87566
diff changeset
692 (let (val)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
693 (setq iswitchb-common-match-string nil)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
694 (if (and iswitchb-matches
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
695 (not iswitchb-regexp) ;; testing
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
696 (stringp iswitchb-text)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
697 (> (length iswitchb-text) 0))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
698 (if (setq val (iswitchb-find-common-substring
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
699 iswitchb-matches iswitchb-text))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
700 (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
701 val))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
702
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
703 (defun iswitchb-complete ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
704 "Try and complete the current pattern amongst the buffer names."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
705 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
706 (let (res)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
707 (cond ((not iswitchb-matches)
41273
793fceb3e6de (iswitchb-cannot-complete-hook): New variable to
Richard M. Stallman <rms@gnu.org>
parents: 41161
diff changeset
708 (run-hooks 'iswitchb-cannot-complete-hook))
63012
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
709 (iswitchb-invalid-regexp
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
710 ;; Do nothing
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
711 )
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
712 ((= 1 (length iswitchb-matches))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
713 ;; only one choice, so select it.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
714 (exit-minibuffer))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47622
diff changeset
715
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
716 (t
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
717 ;; else there could be some completions
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
718 (setq res iswitchb-common-match-string)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
719 (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
720 (not (equal res iswitchb-text)))
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
721 ;; found something to complete, so put it in the minibuffer.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
722 (progn
63012
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
723 (setq iswitchb-rescan nil
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
724 iswitchb-common-match-inserted t)
25791
6413bcf4ea32 (iswitchb-complete): Use minibuffer-prompt-end
Gerd Moellmann <gerd@gnu.org>
parents: 25652
diff changeset
725 (delete-region (minibuffer-prompt-end) (point))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
726 (insert res))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
727 ;; else nothing to complete
41273
793fceb3e6de (iswitchb-cannot-complete-hook): New variable to
Richard M. Stallman <rms@gnu.org>
parents: 41161
diff changeset
728 (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
729 )))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
730
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
731 ;;; TOGGLE FUNCTIONS
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
732
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
733 (defun iswitchb-toggle-case ()
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
734 "Toggle the value of variable `iswitchb-case'."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
735 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
736 (setq iswitchb-case (not iswitchb-case))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
737 ;; 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
738 (setq iswitchb-rescan t))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
739
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
740 (defun iswitchb-toggle-regexp ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
741 "Toggle the value of `iswitchb-regexp'."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
742 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
743 (setq iswitchb-regexp (not iswitchb-regexp))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
744 ;; 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
745 (setq iswitchb-rescan t))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
746
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
747 (defun iswitchb-toggle-ignore ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
748 "Toggle ignoring buffers specified with `iswitchb-buffer-ignore'."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
749 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
750 (if iswitchb-buffer-ignore
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
751 (progn
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
752 (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
753 (setq iswitchb-buffer-ignore nil))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
754 ;; 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
755 (setq iswitchb-buffer-ignore iswitchb-buffer-ignore-orig))
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
756 (iswitchb-make-buflist iswitchb-default)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
757 ;; 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
758 (setq iswitchb-rescan t))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
759
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
760 (defun iswitchb-exit-minibuffer ()
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
761 "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
762 (interactive)
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
763 (if (or (not iswitchb-require-match)
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
764 (iswitchb-existing-buffer-p))
53161
779a274d72ed iswitchb-read-buffer: check that iswitchb-exit is not 'usefirst (set
Stephen Eglen <stephen@gnu.org>
parents: 52401
diff changeset
765 (progn
779a274d72ed iswitchb-read-buffer: check that iswitchb-exit is not 'usefirst (set
Stephen Eglen <stephen@gnu.org>
parents: 52401
diff changeset
766 (setq iswitchb-exit 'usefirst)
779a274d72ed iswitchb-read-buffer: check that iswitchb-exit is not 'usefirst (set
Stephen Eglen <stephen@gnu.org>
parents: 52401
diff changeset
767 (throw 'exit nil))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
768
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
769 (defun iswitchb-select-buffer-text ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
770 "Select the buffer named by the prompt.
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
771 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
772 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
773 (setq iswitchb-exit 'takeprompt)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
774 (exit-minibuffer))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
775
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
776 (defun iswitchb-find-file ()
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
777 "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
778 (interactive)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
779 (setq iswitchb-exit 'findfile)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
780 (exit-minibuffer))
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
781
92508
15c28c0ed14e Don't check for `cadr' and `last'.
Juanma Barranquero <lekktu@gmail.com>
parents: 87566
diff changeset
782 (defvar recentf-list)
55434
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
783
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
784 (defun iswitchb-next-match ()
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
785 "Put first element of `iswitchb-matches' at the end of the list."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
786 (interactive)
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
787 (let ((next (cadr iswitchb-matches)))
55434
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
788 (if (and (null next) iswitchb-virtual-buffers)
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
789 (setq recentf-list
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
790 (iswitchb-chop recentf-list
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
791 (cdr (cadr iswitchb-virtual-buffers))))
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
792 (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
793 (setq iswitchb-rescan t)))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
794
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
795 (defun iswitchb-prev-match ()
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
796 "Put last element of `iswitchb-matches' at the front of the list."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
797 (interactive)
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
798 (let ((prev (car (last iswitchb-matches))))
55434
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
799 (if (and (null prev) iswitchb-virtual-buffers)
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
800 (setq recentf-list
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
801 (iswitchb-chop recentf-list
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
802 (cdr (car (last iswitchb-virtual-buffers)))))
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
803 (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
804 (setq iswitchb-rescan t)))
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
805
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
806 (defun iswitchb-chop (list elem)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
807 "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
808 (let ((ret nil)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
809 (next nil)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
810 (sofar nil))
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
811 (while (not ret)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
812 (setq next (car list))
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
813 (if (equal next elem)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
814 (setq ret (append list (nreverse sofar)))
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
815 ;; else
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
816 (progn
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
817 (setq list (cdr list))
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
818 (setq sofar (cons next sofar)))))
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
819 ret))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
820
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
821 ;;; CREATE LIST OF ALL CURRENT BUFFERS
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
822
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
823 (defun iswitchb-make-buflist (default)
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
824 "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
825 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
826 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
827 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
828 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
829 it is put to the start of the list."
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
830 (setq iswitchb-buflist
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
831 (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
832 (iswitchb-temp-buflist
4308e62b25c8 (iswitchb-make-buflist): When nconc'ing lists, don't
Gerd Moellmann <gerd@gnu.org>
parents: 34208
diff changeset
833 (delq nil
4308e62b25c8 (iswitchb-make-buflist): When nconc'ing lists, don't
Gerd Moellmann <gerd@gnu.org>
parents: 34208
diff changeset
834 (mapcar
4308e62b25c8 (iswitchb-make-buflist): When nconc'ing lists, don't
Gerd Moellmann <gerd@gnu.org>
parents: 34208
diff changeset
835 (lambda (x)
4308e62b25c8 (iswitchb-make-buflist): When nconc'ing lists, don't
Gerd Moellmann <gerd@gnu.org>
parents: 34208
diff changeset
836 (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
837 (if (not
4308e62b25c8 (iswitchb-make-buflist): When nconc'ing lists, don't
Gerd Moellmann <gerd@gnu.org>
parents: 34208
diff changeset
838 (or
4308e62b25c8 (iswitchb-make-buflist): When nconc'ing lists, don't
Gerd Moellmann <gerd@gnu.org>
parents: 34208
diff changeset
839 (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
840 (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
841 b-name)))
4308e62b25c8 (iswitchb-make-buflist): When nconc'ing lists, don't
Gerd Moellmann <gerd@gnu.org>
parents: 34208
diff changeset
842 (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
843 (selected-frame)))))))
4308e62b25c8 (iswitchb-make-buflist): When nconc'ing lists, don't
Gerd Moellmann <gerd@gnu.org>
parents: 34208
diff changeset
844 (setq iswitchb-temp-buflist
4308e62b25c8 (iswitchb-make-buflist): When nconc'ing lists, don't
Gerd Moellmann <gerd@gnu.org>
parents: 34208
diff changeset
845 (nconc iswitchb-temp-buflist iswitchb-current-buffers))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
846 (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
847 ;; 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
848 ;; final thing to be run?
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
849 (if default
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
850 (progn
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
851 (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
852 (delete default iswitchb-temp-buflist))
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
853 (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
854 (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
855 iswitchb-temp-buflist)))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
856
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
857 (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
858 "Move the elements from LST to the end of `iswitchb-temp-buflist'."
63436
eca4e949db45 (iswitchb-to-end): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63075
diff changeset
859 (dolist (elem lst)
eca4e949db45 (iswitchb-to-end): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63075
diff changeset
860 (setq iswitchb-temp-buflist (delq elem iswitchb-temp-buflist)))
35570
4308e62b25c8 (iswitchb-make-buflist): When nconc'ing lists, don't
Gerd Moellmann <gerd@gnu.org>
parents: 34208
diff changeset
861 (setq iswitchb-temp-buflist (nconc iswitchb-temp-buflist lst)))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
862
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
863 (defun iswitchb-get-buffers-in-frames (&optional current)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
864 "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
865 If optional argument CURRENT is given, restrict searching to the
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
866 current frame, rather than all frames, regardless of value of
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
867 `iswitchb-all-frames'."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
868 (let ((iswitchb-bufs-in-frame nil))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
869 (walk-windows 'iswitchb-get-bufname nil
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
870 (if current
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
871 nil
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
872 iswitchb-all-frames))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
873 iswitchb-bufs-in-frame))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
874
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
875 (defun iswitchb-get-bufname (win)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
876 "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
877 (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
878 (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
879 ;; 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
880 ;; 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
881 ;; put into the list twice.
fff55212f6a7 (iswitchb-get-bufname): Only add buffer of current
Richard M. Stallman <rms@gnu.org>
parents: 18776
diff changeset
882 (setq iswitchb-bufs-in-frame
fff55212f6a7 (iswitchb-get-bufname): Only add buffer of current
Richard M. Stallman <rms@gnu.org>
parents: 18776
diff changeset
883 (cons buf iswitchb-bufs-in-frame)))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
884
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
885 ;;; FIND MATCHING BUFFERS
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
886
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
887 (defun iswitchb-set-matches ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
888 "Set `iswitchb-matches' to the list of buffers matching prompt."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
889 (if iswitchb-rescan
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
890 (setq iswitchb-matches
92508
15c28c0ed14e Don't check for `cadr' and `last'.
Juanma Barranquero <lekktu@gmail.com>
parents: 87566
diff changeset
891 (let ((buflist iswitchb-buflist))
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
892 (iswitchb-get-matched-buffers iswitchb-text iswitchb-regexp
55434
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
893 buflist))
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
894 iswitchb-virtual-buffers nil)))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
895
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
896 (defun iswitchb-get-matched-buffers (regexp
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
897 &optional string-format buffer-list)
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
898 "Return buffers matching REGEXP.
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
899 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
900 BUFFER-LIST can be list of buffers or list of strings."
92508
15c28c0ed14e Don't check for `cadr' and `last'.
Juanma Barranquero <lekktu@gmail.com>
parents: 87566
diff changeset
901 (let ((case-fold-search (iswitchb-case))
63436
eca4e949db45 (iswitchb-to-end): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63075
diff changeset
902 name ret)
eca4e949db45 (iswitchb-to-end): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63075
diff changeset
903 (if (null string-format) (setq regexp (regexp-quote regexp)))
63012
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
904 (setq iswitchb-invalid-regexp nil)
63436
eca4e949db45 (iswitchb-to-end): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63075
diff changeset
905 (condition-case error
eca4e949db45 (iswitchb-to-end): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63075
diff changeset
906 (dolist (x buffer-list (nreverse ret))
eca4e949db45 (iswitchb-to-end): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63075
diff changeset
907 (setq name (if (stringp x) x (buffer-name x)))
eca4e949db45 (iswitchb-to-end): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63075
diff changeset
908 (when (and (string-match regexp name)
eca4e949db45 (iswitchb-to-end): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63075
diff changeset
909 (not (iswitchb-ignore-buffername-p name)))
eca4e949db45 (iswitchb-to-end): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63075
diff changeset
910 (push name ret)))
eca4e949db45 (iswitchb-to-end): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63075
diff changeset
911 (invalid-regexp
eca4e949db45 (iswitchb-to-end): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63075
diff changeset
912 (setq iswitchb-invalid-regexp t)
eca4e949db45 (iswitchb-to-end): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63075
diff changeset
913 (cdr error)))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
914
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
915 (defun iswitchb-ignore-buffername-p (bufname)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
916 "Return t if the buffer BUFNAME should be ignored."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
917 (let ((data (match-data))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
918 (re-list iswitchb-buffer-ignore)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
919 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
920 nextstr)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
921 (while re-list
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
922 (setq nextstr (car re-list))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
923 (cond
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
924 ((stringp nextstr)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
925 (if (string-match nextstr bufname)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
926 (progn
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
927 (setq ignorep t)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
928 (setq re-list nil))))
65833
fca34be2db31 (iswitchb-buffer-ignore): Label it risky.
Richard M. Stallman <rms@gnu.org>
parents: 65582
diff changeset
929 ((functionp nextstr)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
930 (if (funcall nextstr bufname)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
931 (progn
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
932 (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
933 (setq re-list nil)))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
934 (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
935 (set-match-data data)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
936
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
937 ;; 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
938 ignorep))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
939
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
940 (defun iswitchb-word-matching-substring (word)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
941 "Return part of WORD before 1st match to `iswitchb-change-word-sub'.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
942 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
943 (let ((case-fold-search (iswitchb-case)))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
944 (let ((m (string-match iswitchb-change-word-sub word)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
945 (if m
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
946 (substring word m)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
947 ;; else no match
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
948 nil))))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
949
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
950 (defun iswitchb-find-common-substring (lis subs)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
951 "Return common string following SUBS in each element of LIS."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
952 (let (res
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
953 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
954 iswitchb-change-word-sub)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
955 (setq iswitchb-change-word-sub
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
956 (if iswitchb-regexp
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
957 subs
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
958 (regexp-quote subs)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
959 (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
960 (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
961 (setq alist (mapcar 'iswitchb-makealist res)) ;; could use an OBARRAY
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
962
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
963 ;; 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
964 (let ((completion-ignore-case (iswitchb-case)))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
965
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
966 (try-completion subs alist))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
967
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
968 (defun iswitchb-makealist (res)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
969 "Return dotted pair (RES . 1)."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
970 (cons res 1))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
971
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
972 ;; from Wayne Mesard <wmesard@esd.sgi.com>
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
973 (defun iswitchb-rotate-list (lis)
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
974 "Destructively remove the last element from LIS.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
975 Return the modified list with the last element prepended to it."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
976 (if (<= (length lis) 1)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
977 lis
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
978 (let ((las lis)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
979 (prev lis))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
980 (while (consp (cdr las))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
981 (setq prev las
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
982 las (cdr las)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
983 (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
984 (cons (car las) lis))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
985
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
986 (defun iswitchb-completion-help ()
41287
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
987 "Show possible completions in a *Completions* buffer."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
988 ;; 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
989 ;; choose-completion-string will need redefining, so it just inserts
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
990 ;; choice with out any previous input.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
991 (interactive)
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
992 (setq iswitchb-rescan nil)
41287
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
993 (let ((buf (current-buffer))
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
994 (temp-buf "*Completions*")
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
995 (win))
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
996
63012
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
997 (if (and (eq last-command this-command)
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
998 (not iswitchb-common-match-inserted))
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
999 ;; scroll buffer
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1000 (progn
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1001 (set-buffer temp-buf)
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1002 (setq win (get-buffer-window temp-buf))
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1003 (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
1004 (set-window-start win (point-min))
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1005 (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
1006 (set-buffer buf))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47622
diff changeset
1007
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1008 (with-output-to-temp-buffer temp-buf
51660
a7765f7f8c9e (iswitchb-read-buffer): Remove redudant variable
Stephen Eglen <stephen@gnu.org>
parents: 51366
diff changeset
1009 (if (featurep 'xemacs)
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47622
diff changeset
1010
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1011 ;; 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
1012 ;; any way of switching them off.
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1013 (display-completion-list (if iswitchb-matches
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1014 iswitchb-matches
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1015 iswitchb-buflist)
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1016 :help-string "iswitchb "
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1017 :activate-callback
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1018 (lambda (x y z)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1019 (message "doesn't work yet, sorry!")))
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1020 ;; else running Emacs
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1021 (with-current-buffer standard-output
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1022 (fundamental-mode))
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1023 (display-completion-list (if iswitchb-matches
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1024 iswitchb-matches
63012
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1025 iswitchb-buflist))))
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1026 (setq iswitchb-common-match-inserted nil))))
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1027
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1028 ;;; KILL CURRENT BUFFER
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1029
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1030 (defun iswitchb-kill-buffer ()
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1031 "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
1032 (interactive)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1033 (let ( (enable-recursive-minibuffers t)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1034 buf)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1035
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1036 (setq buf (car iswitchb-matches))
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1037 ;; 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
1038 (if buf
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1039 (progn
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1040 (kill-buffer buf)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1041
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1042 ;; 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
1043 ;; 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
1044 ;; 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
1045 (if (get-buffer buf)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1046 ;; buffer couldn't be killed.
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1047 (setq iswitchb-rescan t)
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1048 ;; 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
1049 (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
1050
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1051 ;;; VISIT CHOSEN BUFFER
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1052 (defun iswitchb-visit-buffer (buffer)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1053 "Visit buffer named BUFFER according to `iswitchb-method'."
92508
15c28c0ed14e Don't check for `cadr' and `last'.
Juanma Barranquero <lekktu@gmail.com>
parents: 87566
diff changeset
1054 (let (win newframe)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1055 (cond
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1056 ((eq iswitchb-method 'samewindow)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1057 (switch-to-buffer buffer))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1058
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1059 ((memq iswitchb-method '(always-frame maybe-frame))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1060 (cond
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1061 ((and (setq win (iswitchb-window-buffer-p buffer))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1062 (or (eq iswitchb-method 'always-frame)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1063 (y-or-n-p "Jump to frame? ")))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1064 (setq newframe (window-frame win))
51660
a7765f7f8c9e (iswitchb-read-buffer): Remove redudant variable
Stephen Eglen <stephen@gnu.org>
parents: 51366
diff changeset
1065 (if (fboundp 'select-frame-set-input-focus)
41926
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
1066 (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
1067 (raise-frame newframe)
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
1068 (select-frame newframe)
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
1069 )
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
1070 (select-window win))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1071 (t
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1072 ;; No buffer in other frames...
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1073 (switch-to-buffer buffer)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1074 )))
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 ((eq iswitchb-method 'otherwindow)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1077 (switch-to-buffer-other-window buffer))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1078
17618
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
1079 ((eq iswitchb-method 'display)
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
1080 (display-buffer buffer))
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
1081
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1082 ((eq iswitchb-method 'otherframe)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1083 (progn
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1084 (switch-to-buffer-other-frame buffer)
51660
a7765f7f8c9e (iswitchb-read-buffer): Remove redudant variable
Stephen Eglen <stephen@gnu.org>
parents: 51366
diff changeset
1085 (if (fboundp 'select-frame-set-input-focus)
41926
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
1086 (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
1087 )))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1088
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1089 (defun iswitchb-possible-new-buffer (buf)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1090 "Possibly create and visit a new buffer called BUF."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1091
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1092 (let ((newbufcreated))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1093 (if (and iswitchb-newbuffer
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1094 (or
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1095 (not iswitchb-prompt-newbuffer)
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47622
diff changeset
1096
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1097 (and iswitchb-prompt-newbuffer
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1098 (y-or-n-p
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1099 (format
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1100 "No buffer matching `%s', create one? "
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1101 buf)))))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1102 ;; then create a new buffer
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1103 (progn
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1104 (setq newbufcreated (get-buffer-create buf))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1105 (if (fboundp 'set-buffer-major-mode)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1106 (set-buffer-major-mode newbufcreated))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1107 (iswitchb-visit-buffer newbufcreated))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1108 ;; else wont create new buffer
65582
4d1085b02d64 Message format spec fixes (1)
Deepak Goel <deego@gnufans.org>
parents: 64762
diff changeset
1109 (message "no buffer matching `%s'" buf))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1110
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1111 (defun iswitchb-window-buffer-p (buffer)
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1112 "Return window pointer if BUFFER is visible in another frame.
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1113 If BUFFER is visible in the current frame, return nil."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1114 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1115 (let ((blist (iswitchb-get-buffers-in-frames 'current)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1116 ;;If the buffer is visible in current frame, return nil
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1117 (if (memq buffer blist)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1118 nil
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1119 ;; maybe in other frame or icon
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1120 (get-buffer-window buffer 0) ; better than 'visible
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1121 )))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1122
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1123 (defun iswitchb-default-keybindings ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1124 "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
1125 Call this function to override the normal bindings. This function also
92508
15c28c0ed14e Don't check for `cadr' and `last'.
Juanma Barranquero <lekktu@gmail.com>
parents: 87566
diff changeset
1126 adds a hook to the minibuffer."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1127 (interactive)
24820
788dc6ff04da Add iswitchb-minibuffer-setup to minibuffer-setup-hook in
Stephen Eglen <stephen@gnu.org>
parents: 23785
diff changeset
1128 (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
1129 (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
1130 (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
1131 (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
1132 (global-set-key "\C-x5b" 'iswitchb-buffer-other-frame))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1133
92508
15c28c0ed14e Don't check for `cadr' and `last'.
Juanma Barranquero <lekktu@gmail.com>
parents: 87566
diff changeset
1134 (make-obsolete 'iswitchb-default-keybindings 'iswitchb-mode "21.1")
15c28c0ed14e Don't check for `cadr' and `last'.
Juanma Barranquero <lekktu@gmail.com>
parents: 87566
diff changeset
1135
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1136 (defun iswitchb-buffer ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1137 "Switch to another buffer.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1138
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1139 The buffer name is selected interactively by typing a substring. The
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1140 buffer is displayed according to `iswitchb-default-method' -- the
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1141 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
1142 in another frame.
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1143 For details of keybindings, do `\\[describe-function] iswitchb'."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1144 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1145 (setq iswitchb-method iswitchb-default-method)
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1146 (iswitchb))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1147
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1148 (defun iswitchb-buffer-other-window ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1149 "Switch to another buffer and show it in another window.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1150 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
1151 For details of keybindings, do `\\[describe-function] iswitchb'."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1152 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1153 (setq iswitchb-method 'otherwindow)
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1154 (iswitchb))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1155
17618
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
1156 (defun iswitchb-display-buffer ()
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
1157 "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
1158 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
1159 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
1160 (interactive)
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
1161 (setq iswitchb-method 'display)
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1162 (iswitchb))
17618
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
1163
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1164 (defun iswitchb-buffer-other-frame ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1165 "Switch to another buffer and show it in another frame.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1166 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
1167 For details of keybindings, do `\\[describe-function] iswitchb'."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1168 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1169 (setq iswitchb-method 'otherframe)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1170 (iswitchb))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1171
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1172 ;;; XEmacs hack for showing default buffer
17616
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 ;; 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
1175 ;; 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
1176 ;; 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
1177 ;; 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
1178 ;; 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
1179 ;; 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
1180 ;; show the default the first time we enter the minibuffer.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1181
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
1182 (defun iswitchb-init-XEmacs-trick ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1183 "Display default buffer when first entering minibuffer.
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1184 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
1185 (if (iswitchb-entryfn-p)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1186 (progn
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1187 (iswitchb-exhibit)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1188 (goto-char (point-min)))))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1189
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1190 ;; add this hook for XEmacs only.
51660
a7765f7f8c9e (iswitchb-read-buffer): Remove redudant variable
Stephen Eglen <stephen@gnu.org>
parents: 51366
diff changeset
1191 (if (featurep 'xemacs)
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1192 (add-hook 'iswitchb-minibuffer-setup-hook
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
1193 'iswitchb-init-XEmacs-trick))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1194
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1195 ;;; XEmacs / backspace key
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1196 ;; 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
1197 ;; 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
1198 ;; backspace act like the normal delete key.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1199
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1200 (defun iswitchb-xemacs-backspacekey ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1201 "Bind backspace to `backward-delete-char'."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1202 (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
1203 (define-key iswitchb-mode-map '[(meta backspace)] 'backward-kill-word))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1204
51660
a7765f7f8c9e (iswitchb-read-buffer): Remove redudant variable
Stephen Eglen <stephen@gnu.org>
parents: 51366
diff changeset
1205 (if (featurep 'xemacs)
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1206 (add-hook 'iswitchb-define-mode-map-hook
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1207 'iswitchb-xemacs-backspacekey))
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 ;;; ICOMPLETE TYPE CODE
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1210
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1211 (defun iswitchb-exhibit ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1212 "Find matching buffers and display a list in the minibuffer.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1213 Copied from `icomplete-exhibit' with two changes:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1214 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
1215 2. It calls my completion routine rather than the standard completion."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1216 (if iswitchb-use-mycompletion
26065
852cd4f88b37 (iswitchb-exhibit): Extract user-input only
Gerd Moellmann <gerd@gnu.org>
parents: 25855
diff changeset
1217 (let ((contents (buffer-substring (minibuffer-prompt-end) (point-max)))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1218 (buffer-undo-list t))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1219 (save-excursion
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1220 (goto-char (point-max))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1221 ; Register the end of input, so we
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1222 ; know where the extra stuff
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1223 ; (match-status info) begins:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1224 (if (not (boundp 'iswitchb-eoinput))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1225 ;; In case it got wiped out by major mode business:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1226 (make-local-variable 'iswitchb-eoinput))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1227 (setq iswitchb-eoinput (point))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1228 ;; Update the list of matches
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1229 (setq iswitchb-text contents)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1230 (iswitchb-set-matches)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1231 (setq iswitchb-rescan t)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1232 (iswitchb-set-common-completion)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1233
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1234 ;; Insert the match-status information:
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47622
diff changeset
1235 (insert (iswitchb-completions
63012
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1236 contents))))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1237
92508
15c28c0ed14e Don't check for `cadr' and `last'.
Juanma Barranquero <lekktu@gmail.com>
parents: 87566
diff changeset
1238 (defvar most-len)
15c28c0ed14e Don't check for `cadr' and `last'.
Juanma Barranquero <lekktu@gmail.com>
parents: 87566
diff changeset
1239 (defvar most-is-exact)
55434
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1240
54956
d0e2ba105b5a 2004-04-17 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 53805
diff changeset
1241 (defun iswitchb-output-completion (com)
d0e2ba105b5a 2004-04-17 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 53805
diff changeset
1242 (if (= (length com) most-len)
d0e2ba105b5a 2004-04-17 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 53805
diff changeset
1243 ;; Most is one exact match,
d0e2ba105b5a 2004-04-17 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 53805
diff changeset
1244 ;; note that and leave out
d0e2ba105b5a 2004-04-17 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 53805
diff changeset
1245 ;; for later indication:
d0e2ba105b5a 2004-04-17 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 53805
diff changeset
1246 (ignore
d0e2ba105b5a 2004-04-17 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 53805
diff changeset
1247 (setq most-is-exact t))
d0e2ba105b5a 2004-04-17 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 53805
diff changeset
1248 (substring com most-len)))
d0e2ba105b5a 2004-04-17 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 53805
diff changeset
1249
63012
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1250 (defun iswitchb-completions (name)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1251 "Return the string that is displayed after the user's text.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1252 Modified from `icomplete-completions'."
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47622
diff changeset
1253
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1254 (let ((comps iswitchb-matches)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1255 ; "-determined" - only one candidate
63012
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1256 (open-bracket-determined "[")
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1257 (close-bracket-determined "]")
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1258 ;"-prospects" - more than one candidate
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1259 (open-bracket-prospects "{")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1260 (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
1261 first)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1262
63012
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1263 (if (and iswitchb-use-faces comps)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1264 (progn
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1265 (setq first (car comps))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1266 (setq first (format "%s" first))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1267 (put-text-property 0 (length first) 'face
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1268 (if (= (length comps) 1)
63012
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1269 (if iswitchb-invalid-regexp
63075
7e902750d940 2005-06-06 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63012
diff changeset
1270 'iswitchb-invalid-regexp
7e902750d940 2005-06-06 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63012
diff changeset
1271 'iswitchb-single-match)
7e902750d940 2005-06-06 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63012
diff changeset
1272 'iswitchb-current-match)
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1273 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
1274 (setq comps (cons first (cdr comps)))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1275
55434
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1276 ;; If no buffers matched, and virtual buffers are being used, then
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1277 ;; consult the list of past visited files, to see if we can find
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1278 ;; the file which the user might thought was still open.
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1279 (when (and iswitchb-use-virtual-buffers (null comps)
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1280 recentf-list)
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1281 (setq iswitchb-virtual-buffers nil)
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1282 (let ((head recentf-list) name)
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1283 (while head
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1284 (if (and (setq name (file-name-nondirectory (car head)))
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1285 (string-match (if iswitchb-regexp
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1286 iswitchb-text
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1287 (regexp-quote iswitchb-text)) name)
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1288 (null (get-file-buffer (car head)))
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1289 (not (assoc name iswitchb-virtual-buffers))
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1290 (not (iswitchb-ignore-buffername-p name))
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1291 (file-exists-p (car head)))
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1292 (setq iswitchb-virtual-buffers
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1293 (cons (cons name (car head))
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1294 iswitchb-virtual-buffers)))
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1295 (setq head (cdr head)))
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1296 (setq iswitchb-virtual-buffers (nreverse iswitchb-virtual-buffers)
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1297 comps (mapcar 'car iswitchb-virtual-buffers))
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1298 (let ((comp comps))
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1299 (while comp
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1300 (put-text-property 0 (length (car comp))
63075
7e902750d940 2005-06-06 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63012
diff changeset
1301 'face 'iswitchb-virtual-matches
55434
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1302 (car comp))
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1303 (setq comp (cdr comp))))))
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1304
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1305 (cond ((null comps) (format " %sNo match%s"
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1306 open-bracket-determined
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1307 close-bracket-determined))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1308
63012
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1309 (iswitchb-invalid-regexp
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1310 (concat " " (car comps)))
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1311 ((null (cdr comps)) ;one match
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1312 (concat
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1313 (if (if (not iswitchb-regexp)
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1314 (= (length name)
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1315 (length (car comps)))
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1316 (string-match name (car comps))
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1317 (string-equal (match-string 0 (car comps))
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1318 (car comps)))
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1319 ""
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1320 (concat open-bracket-determined
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1321 ;; when there is one match, show the
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1322 ;; matching buffer name in full
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1323 (car comps)
63012
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1324 close-bracket-determined))
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1325 (if (not iswitchb-use-faces) " [Matched]")))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1326 (t ;multiple matches
54956
d0e2ba105b5a 2004-04-17 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 53805
diff changeset
1327 (if (and iswitchb-max-to-show
d0e2ba105b5a 2004-04-17 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 53805
diff changeset
1328 (> (length comps) iswitchb-max-to-show))
d0e2ba105b5a 2004-04-17 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 53805
diff changeset
1329 (setq comps
d0e2ba105b5a 2004-04-17 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 53805
diff changeset
1330 (append
54967
8456893f6790 2004-04-18 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54956
diff changeset
1331 (let ((res nil)
8456893f6790 2004-04-18 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54956
diff changeset
1332 (comp comps)
8456893f6790 2004-04-18 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54956
diff changeset
1333 (end (/ iswitchb-max-to-show 2)))
8456893f6790 2004-04-18 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54956
diff changeset
1334 (while (>= (setq end (1- end)) 0)
8456893f6790 2004-04-18 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54956
diff changeset
1335 (setq res (cons (car comp) res)
8456893f6790 2004-04-18 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54956
diff changeset
1336 comp (cdr comp)))
8456893f6790 2004-04-18 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54956
diff changeset
1337 (nreverse res))
54956
d0e2ba105b5a 2004-04-17 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 53805
diff changeset
1338 (list "...")
54967
8456893f6790 2004-04-18 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54956
diff changeset
1339 (nthcdr (- (length comps)
8456893f6790 2004-04-18 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54956
diff changeset
1340 (/ iswitchb-max-to-show 2)) comps))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1341 (let* (
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1342 ;;(most (try-completion name candidates predicate))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1343 (most nil)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1344 (most-len (length most))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1345 most-is-exact
55434
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1346 (alternatives
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1347 (mapconcat (if most 'iswitchb-output-completion
96889
f118ad76e286 (iswitchb-delim): New variable, suggested by Ted Roden.
Stephen Eglen <stephen@gnu.org>
parents: 96376
diff changeset
1348 'identity) comps iswitchb-delim)))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1349
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1350 (concat
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1351
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1352 ;; put in common completion item -- what you get by
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1353 ;; pressing tab
47622
b604605851ea (iswitchb-completions): Test that iswitchb-common-match-string is a
Stephen Eglen <stephen@gnu.org>
parents: 44557
diff changeset
1354 (if (and (stringp iswitchb-common-match-string)
b604605851ea (iswitchb-completions): Test that iswitchb-common-match-string is a
Stephen Eglen <stephen@gnu.org>
parents: 44557
diff changeset
1355 (> (length iswitchb-common-match-string) (length name)))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1356 (concat open-bracket-determined
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1357 (substring iswitchb-common-match-string
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1358 (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
1359 close-bracket-determined))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1360 ;; end of partial matches...
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1361
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1362 ;; think this bit can be ignored.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1363 (and (> most-len (length name))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1364 (concat open-bracket-determined
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1365 (substring most (length name))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1366 close-bracket-determined))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47622
diff changeset
1367
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1368 ;; list all alternatives
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1369 open-bracket-prospects
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1370 (if most-is-exact
96889
f118ad76e286 (iswitchb-delim): New variable, suggested by Ted Roden.
Stephen Eglen <stephen@gnu.org>
parents: 96376
diff changeset
1371 (concat iswitchb-delim alternatives)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1372 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
1373 close-bracket-prospects))))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1374
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1375 (defun iswitchb-minibuffer-setup ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1376 "Set up minibuffer for `iswitchb-buffer'.
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1377 Copied from `icomplete-minibuffer-setup-hook'."
41287
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
1378 (when (iswitchb-entryfn-p)
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
1379 (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
1380 (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
1381 (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
1382 (run-hooks 'iswitchb-minibuffer-setup-hook)))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1383
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1384 (defun iswitchb-pre-command ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1385 "Run before command in `iswitchb-buffer'."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1386 (iswitchb-tidy))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1387
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1388 (defun iswitchb-post-command ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1389 "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
1390 (iswitchb-exhibit))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1391
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1392 (defun iswitchb-tidy ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1393 "Remove completions display, if any, prior to new user input.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1394 Copied from `icomplete-tidy'."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1395
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1396 (if (and (boundp 'iswitchb-eoinput)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1397 iswitchb-eoinput)
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47622
diff changeset
1398
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1399 (if (> iswitchb-eoinput (point-max))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1400 ;; Oops, got rug pulled out from under us - reinit:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1401 (setq iswitchb-eoinput (point-max))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1402 (let ((buffer-undo-list buffer-undo-list )) ; prevent entry
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1403 (delete-region iswitchb-eoinput (point-max))))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47622
diff changeset
1404
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1405 ;; Reestablish the local variable 'cause minibuffer-setup is weird:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1406 (make-local-variable 'iswitchb-eoinput)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1407 (setq iswitchb-eoinput 1)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1408
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1409 (defun iswitchb-entryfn-p ()
30527
876c0335dead (iswitchb-entryfn-p): Test this-command instead
Gerd Moellmann <gerd@gnu.org>
parents: 28859
diff changeset
1410 "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
1411 (eq iswitchb-minibuf-depth (minibuffer-depth)))
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1412
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1413 (defun iswitchb-summaries-to-end ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1414 "Move the summaries to the end of the list.
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1415 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
1416 `iswitchb-make-buflist-hook'. Any buffer matching the regexps
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1417 `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
1418 (let ((summaries (delq nil
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1419 (mapcar
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1420 (lambda (x)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1421 (if (string-match "Summary\\|output\\*$" x)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1422 x))
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1423 iswitchb-temp-buflist))))
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1424 (iswitchb-to-end summaries)))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1425
28619
79fd94833204 (iswitchb-case): New function. If the user input
Gerd Moellmann <gerd@gnu.org>
parents: 27497
diff changeset
1426 (defun iswitchb-case ()
78492
7c8949dbfa0d Replace `iff' in doc-strings and comments.
Glenn Morris <rgm@gnu.org>
parents: 78236
diff changeset
1427 "Return non-nil if we should ignore case when matching.
28619
79fd94833204 (iswitchb-case): New function. If the user input
Gerd Moellmann <gerd@gnu.org>
parents: 27497
diff changeset
1428 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
1429 (if iswitchb-case
51660
a7765f7f8c9e (iswitchb-read-buffer): Remove redudant variable
Stephen Eglen <stephen@gnu.org>
parents: 51366
diff changeset
1430 (if (featurep 'xemacs)
28619
79fd94833204 (iswitchb-case): New function. If the user input
Gerd Moellmann <gerd@gnu.org>
parents: 27497
diff changeset
1431 (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
1432 (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
1433
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1434 ;;;###autoload
41287
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
1435 (define-minor-mode iswitchb-mode
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1436 "Toggle Iswitchb global minor mode.
78492
7c8949dbfa0d Replace `iff' in doc-strings and comments.
Glenn Morris <rgm@gnu.org>
parents: 78236
diff changeset
1437 With arg, turn Iswitchb mode on if ARG is positive, otherwise turn it off.
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1438 This mode enables switching between buffers using substrings. See
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1439 `iswitchb' for details."
41287
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
1440 nil nil iswitchb-global-map :global t :group 'iswitchb
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1441 (if iswitchb-mode
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1442 (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
1443 (remove-hook 'minibuffer-setup-hook 'iswitchb-minibuffer-setup)))
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1444
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1445 (provide 'iswitchb)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1446
63436
eca4e949db45 (iswitchb-to-end): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63075
diff changeset
1447 ;; arch-tag: d74198ae-753f-44f2-b34f-0c515398d90a
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1448 ;;; iswitchb.el ends here