annotate lisp/iswitchb.el @ 110410:f2e111723c3a

Merge changes made in Gnus trunk. Reimplement nnimap, and do tweaks to the rest of the code to support that. * gnus-int.el (gnus-finish-retrieve-group-infos) (gnus-retrieve-group-data-early): New functions. * gnus-range.el (gnus-range-nconcat): New function. * gnus-start.el (gnus-get-unread-articles): Support early retrieval of data. (gnus-read-active-for-groups): Support finishing the early retrieval of data. * gnus-sum.el (gnus-summary-move-article): Pass the move-to group name if the move is internal, so that nnimap can do fast internal moves. * gnus.el (gnus-article-special-mark-lists): Add uid/active tuples, for nnimap usage. * nnimap.el: Rewritten. * nnmail.el (nnmail-inhibit-default-split-group): New internal variable to allow the mail splitting to not return a default group. This is useful for nnimap, which will leave unmatched mail in the inbox. * utf7.el (utf7-encode): Autoload. Implement shell connection. * nnimap.el (nnimap-open-shell-stream): New function. (nnimap-open-connection): Use it. Get the number of lines by using BODYSTRUCTURE. (nnimap-transform-headers): Get the number of lines in each message. (nnimap-retrieve-headers): Query for BODYSTRUCTURE so that we get the number of lines. Not all servers return UIDNEXT. Work past this problem. Remove junk from end of file. Fix typo in "bogus" section. Make capabilties be case-insensitive. Require cl when compiling. Don't bug out if the LIST command doesn't have any parameters. 2010-09-17 Knut Anders Hatlen <kahatlen@gmail.com> (tiny change) * nnimap.el (nnimap-get-groups): Don't bug out if the LIST command doesn't have any parameters. (mm-text-html-renderer): Document gnus-article-html. 2010-09-17 Julien Danjou <julien@danjou.info> (tiny fix) * mm-decode.el (mm-text-html-renderer): Document gnus-article-html. * dgnushack.el: Define netrc-credentials. If the user doesn't have a /etc/services, supply some sensible port defaults. Have `unseen-or-unread' select an unread unseen article first. (nntp-open-server): Return whether the open was successful or not. Throughout all files, replace (save-excursion (set-buffer ...)) with (with-current-buffer ... ). Save result so that it doesn't say "failed" all the time. Add ~/.authinfo to the default, since that's probably most useful for users. Don't use the "finish" method when we're reading from the agent. Add some more nnimap-relevant agent stuff to nnagent.el. * nnimap.el (nnimap-with-process-buffer): Removed. Revert one line that was changed by mistake in the last checkin. (nnimap-open-connection): Don't error out when we can't make a connection nnimap-related changes to avoid bugging out if we can't contact a server. * gnus-start.el (gnus-get-unread-articles): Don't try to scan groups from methods that are denied. * nnimap.el (nnimap-possibly-change-group): Return nil if we can't log in. (nnimap-finish-retrieve-group-infos): Make sure we're not waiting for nothing. * gnus-sum.el (gnus-select-newsgroup): Indent.
author Katsumi Yamaoka <yamaoka@jpl.org>
date Sat, 18 Sep 2010 10:02:19 +0000
parents c5974968dea9
children 515d80e174ba 376148b31b5e
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,
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 105601
diff changeset
4 ;; 2005, 2006, 2007, 2008, 2009, 2010 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
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 96889
diff changeset
260 "Non-nil if searching of buffer names should ignore case.
28619
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 '("^ ")
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 96889
diff changeset
268 "List of regexps or functions matching buffer names to ignore.
17617
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
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 96889
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
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 96889
diff changeset
286 "If non-nil, refer to past buffers when none match.
55434
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
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 96889
diff changeset
300 "Hook run when `iswitchb-complete' can't complete any more.
41273
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
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 96889
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
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 96889
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
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 96889
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
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 96889
diff changeset
349 "Non-nil means prompt user to confirm before creating new buffer.
18776
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
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 96889
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
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 96889
diff changeset
362 "Non-nil means use the currently selected frame's buffer list."
27497
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)))
105036
6fbde1155ee5 (iswitchb-read-buffer): When selecting a match from
Stephen Eglen <stephen@gnu.org>
parents: 100908
diff changeset
660 (let ((virt (car iswitchb-virtual-buffers))
6fbde1155ee5 (iswitchb-read-buffer): When selecting a match from
Stephen Eglen <stephen@gnu.org>
parents: 100908
diff changeset
661 (new-buf))
6fbde1155ee5 (iswitchb-read-buffer): When selecting a match from
Stephen Eglen <stephen@gnu.org>
parents: 100908
diff changeset
662 ;; Keep the name of the buffer returned by find-file-noselect, as
6fbde1155ee5 (iswitchb-read-buffer): When selecting a match from
Stephen Eglen <stephen@gnu.org>
parents: 100908
diff changeset
663 ;; the buffer 'virt' could be a symlink to a file of a different name.
6fbde1155ee5 (iswitchb-read-buffer): When selecting a match from
Stephen Eglen <stephen@gnu.org>
parents: 100908
diff changeset
664 (setq new-buf (buffer-name (find-file-noselect (cdr virt))))
6fbde1155ee5 (iswitchb-read-buffer): When selecting a match from
Stephen Eglen <stephen@gnu.org>
parents: 100908
diff changeset
665 (setq iswitchb-matches (list new-buf)
55434
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
666 iswitchb-virtual-buffers nil)))
41287
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
667
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
668 ;; 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
669 (if (and require-match
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
670 (not (iswitchb-existing-buffer-p)))
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
671 (error "Must specify valid buffer"))
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
672
55434
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
673 (if (or (eq iswitchb-exit 'takeprompt)
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
674 (null iswitchb-matches))
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
675 (setq buf-sel iswitchb-final-text)
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
676 ;; else take head of list
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
677 (setq buf-sel (car iswitchb-matches)))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47622
diff changeset
678
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
679 ;; Or possibly choose the default buffer
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
680 (if (equal iswitchb-final-text "")
55434
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
681 (setq buf-sel (car iswitchb-matches)))
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
682
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
683 buf-sel))
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
684
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
685 (defun iswitchb-existing-buffer-p ()
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
686 "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
687 (not (null iswitchb-matches)))
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
688
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
689 ;;; COMPLETION CODE
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
690
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
691 (defun iswitchb-set-common-completion ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
692 "Find common completion of `iswitchb-text' in `iswitchb-matches'.
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
693 The result is stored in `iswitchb-common-match-string'."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
694
92508
15c28c0ed14e Don't check for `cadr' and `last'.
Juanma Barranquero <lekktu@gmail.com>
parents: 87566
diff changeset
695 (let (val)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
696 (setq iswitchb-common-match-string nil)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
697 (if (and iswitchb-matches
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
698 (not iswitchb-regexp) ;; testing
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
699 (stringp iswitchb-text)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
700 (> (length iswitchb-text) 0))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
701 (if (setq val (iswitchb-find-common-substring
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
702 iswitchb-matches iswitchb-text))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
703 (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
704 val))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
705
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
706 (defun iswitchb-complete ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
707 "Try and complete the current pattern amongst the buffer names."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
708 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
709 (let (res)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
710 (cond ((not iswitchb-matches)
41273
793fceb3e6de (iswitchb-cannot-complete-hook): New variable to
Richard M. Stallman <rms@gnu.org>
parents: 41161
diff changeset
711 (run-hooks 'iswitchb-cannot-complete-hook))
63012
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
712 (iswitchb-invalid-regexp
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
713 ;; Do nothing
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
714 )
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
715 ((= 1 (length iswitchb-matches))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
716 ;; only one choice, so select it.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
717 (exit-minibuffer))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47622
diff changeset
718
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
719 (t
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
720 ;; else there could be some completions
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
721 (setq res iswitchb-common-match-string)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
722 (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
723 (not (equal res iswitchb-text)))
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
724 ;; found something to complete, so put it in the minibuffer.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
725 (progn
63012
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
726 (setq iswitchb-rescan nil
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
727 iswitchb-common-match-inserted t)
25791
6413bcf4ea32 (iswitchb-complete): Use minibuffer-prompt-end
Gerd Moellmann <gerd@gnu.org>
parents: 25652
diff changeset
728 (delete-region (minibuffer-prompt-end) (point))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
729 (insert res))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
730 ;; else nothing to complete
41273
793fceb3e6de (iswitchb-cannot-complete-hook): New variable to
Richard M. Stallman <rms@gnu.org>
parents: 41161
diff changeset
731 (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
732 )))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
733
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
734 ;;; TOGGLE FUNCTIONS
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
735
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
736 (defun iswitchb-toggle-case ()
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
737 "Toggle the value of variable `iswitchb-case'."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
738 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
739 (setq iswitchb-case (not iswitchb-case))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
740 ;; 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
741 (setq iswitchb-rescan t))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
742
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
743 (defun iswitchb-toggle-regexp ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
744 "Toggle the value of `iswitchb-regexp'."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
745 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
746 (setq iswitchb-regexp (not iswitchb-regexp))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
747 ;; 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
748 (setq iswitchb-rescan t))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
749
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
750 (defun iswitchb-toggle-ignore ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
751 "Toggle ignoring buffers specified with `iswitchb-buffer-ignore'."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
752 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
753 (if iswitchb-buffer-ignore
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
754 (progn
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
755 (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
756 (setq iswitchb-buffer-ignore nil))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
757 ;; 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
758 (setq iswitchb-buffer-ignore iswitchb-buffer-ignore-orig))
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
759 (iswitchb-make-buflist iswitchb-default)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
760 ;; 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
761 (setq iswitchb-rescan t))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
762
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
763 (defun iswitchb-exit-minibuffer ()
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
764 "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
765 (interactive)
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
766 (if (or (not iswitchb-require-match)
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
767 (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
768 (progn
779a274d72ed iswitchb-read-buffer: check that iswitchb-exit is not 'usefirst (set
Stephen Eglen <stephen@gnu.org>
parents: 52401
diff changeset
769 (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
770 (throw 'exit nil))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
771
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
772 (defun iswitchb-select-buffer-text ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
773 "Select the buffer named by the prompt.
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
774 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
775 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
776 (setq iswitchb-exit 'takeprompt)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
777 (exit-minibuffer))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
778
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
779 (defun iswitchb-find-file ()
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
780 "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
781 (interactive)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
782 (setq iswitchb-exit 'findfile)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
783 (exit-minibuffer))
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
784
92508
15c28c0ed14e Don't check for `cadr' and `last'.
Juanma Barranquero <lekktu@gmail.com>
parents: 87566
diff changeset
785 (defvar recentf-list)
55434
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
786
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
787 (defun iswitchb-next-match ()
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
788 "Put first element of `iswitchb-matches' at the end of the list."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
789 (interactive)
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
790 (let ((next (cadr iswitchb-matches)))
55434
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
791 (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
792 (setq recentf-list
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
793 (iswitchb-chop recentf-list
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
794 (cdr (cadr iswitchb-virtual-buffers))))
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
795 (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
796 (setq iswitchb-rescan t)))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
797
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
798 (defun iswitchb-prev-match ()
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
799 "Put last element of `iswitchb-matches' at the front of the list."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
800 (interactive)
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
801 (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
802 (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
803 (setq recentf-list
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
804 (iswitchb-chop recentf-list
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
805 (cdr (car (last iswitchb-virtual-buffers)))))
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
806 (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
807 (setq iswitchb-rescan t)))
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
808
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
809 (defun iswitchb-chop (list elem)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
810 "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
811 (let ((ret nil)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
812 (next nil)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
813 (sofar nil))
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
814 (while (not ret)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
815 (setq next (car list))
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
816 (if (equal next elem)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
817 (setq ret (append list (nreverse sofar)))
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
818 ;; else
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
819 (progn
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
820 (setq list (cdr list))
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
821 (setq sofar (cons next sofar)))))
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
822 ret))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
823
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
824 ;;; CREATE LIST OF ALL CURRENT BUFFERS
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
825
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
826 (defun iswitchb-make-buflist (default)
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
827 "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
828 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
829 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
830 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
831 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
832 it is put to the start of the list."
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
833 (setq iswitchb-buflist
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
834 (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
835 (iswitchb-temp-buflist
4308e62b25c8 (iswitchb-make-buflist): When nconc'ing lists, don't
Gerd Moellmann <gerd@gnu.org>
parents: 34208
diff changeset
836 (delq nil
4308e62b25c8 (iswitchb-make-buflist): When nconc'ing lists, don't
Gerd Moellmann <gerd@gnu.org>
parents: 34208
diff changeset
837 (mapcar
4308e62b25c8 (iswitchb-make-buflist): When nconc'ing lists, don't
Gerd Moellmann <gerd@gnu.org>
parents: 34208
diff changeset
838 (lambda (x)
4308e62b25c8 (iswitchb-make-buflist): When nconc'ing lists, don't
Gerd Moellmann <gerd@gnu.org>
parents: 34208
diff changeset
839 (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
840 (if (not
4308e62b25c8 (iswitchb-make-buflist): When nconc'ing lists, don't
Gerd Moellmann <gerd@gnu.org>
parents: 34208
diff changeset
841 (or
4308e62b25c8 (iswitchb-make-buflist): When nconc'ing lists, don't
Gerd Moellmann <gerd@gnu.org>
parents: 34208
diff changeset
842 (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
843 (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
844 b-name)))
4308e62b25c8 (iswitchb-make-buflist): When nconc'ing lists, don't
Gerd Moellmann <gerd@gnu.org>
parents: 34208
diff changeset
845 (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
846 (selected-frame)))))))
4308e62b25c8 (iswitchb-make-buflist): When nconc'ing lists, don't
Gerd Moellmann <gerd@gnu.org>
parents: 34208
diff changeset
847 (setq iswitchb-temp-buflist
4308e62b25c8 (iswitchb-make-buflist): When nconc'ing lists, don't
Gerd Moellmann <gerd@gnu.org>
parents: 34208
diff changeset
848 (nconc iswitchb-temp-buflist iswitchb-current-buffers))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
849 (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
850 ;; 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
851 ;; final thing to be run?
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
852 (if default
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
853 (progn
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
854 (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
855 (delete default iswitchb-temp-buflist))
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
856 (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
857 (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
858 iswitchb-temp-buflist)))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
859
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
860 (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
861 "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
862 (dolist (elem lst)
eca4e949db45 (iswitchb-to-end): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63075
diff changeset
863 (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
864 (setq iswitchb-temp-buflist (nconc iswitchb-temp-buflist lst)))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
865
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
866 (defun iswitchb-get-buffers-in-frames (&optional current)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
867 "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
868 If optional argument CURRENT is given, restrict searching to the
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
869 current frame, rather than all frames, regardless of value of
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
870 `iswitchb-all-frames'."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
871 (let ((iswitchb-bufs-in-frame nil))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
872 (walk-windows 'iswitchb-get-bufname nil
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
873 (if current
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
874 nil
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
875 iswitchb-all-frames))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
876 iswitchb-bufs-in-frame))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
877
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
878 (defun iswitchb-get-bufname (win)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
879 "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
880 (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
881 (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
882 ;; 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
883 ;; 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
884 ;; put into the list twice.
fff55212f6a7 (iswitchb-get-bufname): Only add buffer of current
Richard M. Stallman <rms@gnu.org>
parents: 18776
diff changeset
885 (setq iswitchb-bufs-in-frame
fff55212f6a7 (iswitchb-get-bufname): Only add buffer of current
Richard M. Stallman <rms@gnu.org>
parents: 18776
diff changeset
886 (cons buf iswitchb-bufs-in-frame)))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
887
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
888 ;;; FIND MATCHING BUFFERS
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
889
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
890 (defun iswitchb-set-matches ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
891 "Set `iswitchb-matches' to the list of buffers matching prompt."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
892 (if iswitchb-rescan
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
893 (setq iswitchb-matches
92508
15c28c0ed14e Don't check for `cadr' and `last'.
Juanma Barranquero <lekktu@gmail.com>
parents: 87566
diff changeset
894 (let ((buflist iswitchb-buflist))
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
895 (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
896 buflist))
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
897 iswitchb-virtual-buffers nil)))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
898
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
899 (defun iswitchb-get-matched-buffers (regexp
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
900 &optional string-format buffer-list)
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
901 "Return buffers matching REGEXP.
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
902 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
903 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
904 (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
905 name ret)
eca4e949db45 (iswitchb-to-end): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63075
diff changeset
906 (if (null string-format) (setq regexp (regexp-quote regexp)))
63012
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
907 (setq iswitchb-invalid-regexp nil)
63436
eca4e949db45 (iswitchb-to-end): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63075
diff changeset
908 (condition-case error
eca4e949db45 (iswitchb-to-end): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63075
diff changeset
909 (dolist (x buffer-list (nreverse ret))
eca4e949db45 (iswitchb-to-end): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63075
diff changeset
910 (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
911 (when (and (string-match regexp name)
eca4e949db45 (iswitchb-to-end): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63075
diff changeset
912 (not (iswitchb-ignore-buffername-p name)))
eca4e949db45 (iswitchb-to-end): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63075
diff changeset
913 (push name ret)))
eca4e949db45 (iswitchb-to-end): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63075
diff changeset
914 (invalid-regexp
eca4e949db45 (iswitchb-to-end): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63075
diff changeset
915 (setq iswitchb-invalid-regexp t)
eca4e949db45 (iswitchb-to-end): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63075
diff changeset
916 (cdr error)))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
917
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
918 (defun iswitchb-ignore-buffername-p (bufname)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
919 "Return t if the buffer BUFNAME should be ignored."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
920 (let ((data (match-data))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
921 (re-list iswitchb-buffer-ignore)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
922 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
923 nextstr)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
924 (while re-list
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
925 (setq nextstr (car re-list))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
926 (cond
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
927 ((stringp nextstr)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
928 (if (string-match nextstr bufname)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
929 (progn
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
930 (setq ignorep t)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
931 (setq re-list nil))))
65833
fca34be2db31 (iswitchb-buffer-ignore): Label it risky.
Richard M. Stallman <rms@gnu.org>
parents: 65582
diff changeset
932 ((functionp nextstr)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
933 (if (funcall nextstr bufname)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
934 (progn
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
935 (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
936 (setq re-list nil)))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
937 (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
938 (set-match-data data)
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 ;; 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
941 ignorep))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
942
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
943 (defun iswitchb-word-matching-substring (word)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
944 "Return part of WORD before 1st match to `iswitchb-change-word-sub'.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
945 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
946 (let ((case-fold-search (iswitchb-case)))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
947 (let ((m (string-match iswitchb-change-word-sub word)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
948 (if m
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
949 (substring word m)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
950 ;; else no match
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
951 nil))))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
952
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
953 (defun iswitchb-find-common-substring (lis subs)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
954 "Return common string following SUBS in each element of LIS."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
955 (let (res
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
956 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
957 iswitchb-change-word-sub)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
958 (setq iswitchb-change-word-sub
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
959 (if iswitchb-regexp
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
960 subs
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
961 (regexp-quote subs)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
962 (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
963 (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
964 (setq alist (mapcar 'iswitchb-makealist res)) ;; could use an OBARRAY
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
965
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
966 ;; 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
967 (let ((completion-ignore-case (iswitchb-case)))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
968
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
969 (try-completion subs alist))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
970
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
971 (defun iswitchb-makealist (res)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
972 "Return dotted pair (RES . 1)."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
973 (cons res 1))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
974
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
975 ;; from Wayne Mesard <wmesard@esd.sgi.com>
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
976 (defun iswitchb-rotate-list (lis)
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
977 "Destructively remove the last element from LIS.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
978 Return the modified list with the last element prepended to it."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
979 (if (<= (length lis) 1)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
980 lis
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
981 (let ((las lis)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
982 (prev lis))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
983 (while (consp (cdr las))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
984 (setq prev las
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
985 las (cdr las)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
986 (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
987 (cons (car las) lis))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
988
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
989 (defun iswitchb-completion-help ()
41287
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
990 "Show possible completions in a *Completions* buffer."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
991 ;; 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
992 ;; choose-completion-string will need redefining, so it just inserts
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
993 ;; choice with out any previous input.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
994 (interactive)
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
995 (setq iswitchb-rescan nil)
41287
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
996 (let ((buf (current-buffer))
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
997 (temp-buf "*Completions*")
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
998 (win))
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
999
63012
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1000 (if (and (eq last-command this-command)
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1001 (not iswitchb-common-match-inserted))
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1002 ;; scroll buffer
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1003 (progn
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1004 (set-buffer temp-buf)
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1005 (setq win (get-buffer-window temp-buf))
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1006 (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
1007 (set-window-start win (point-min))
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1008 (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
1009 (set-buffer buf))
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 (with-output-to-temp-buffer temp-buf
51660
a7765f7f8c9e (iswitchb-read-buffer): Remove redudant variable
Stephen Eglen <stephen@gnu.org>
parents: 51366
diff changeset
1012 (if (featurep 'xemacs)
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47622
diff changeset
1013
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1014 ;; 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
1015 ;; any way of switching them off.
105601
68686d39c93a Replace completion-base-size by completion-base-position to fix bugs
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105036
diff changeset
1016 (display-completion-list (or iswitchb-matches iswitchb-buflist)
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1017 :help-string "iswitchb "
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1018 :activate-callback
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1019 (lambda (x y z)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1020 (message "doesn't work yet, sorry!")))
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1021 ;; else running Emacs
105601
68686d39c93a Replace completion-base-size by completion-base-position to fix bugs
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105036
diff changeset
1022 (display-completion-list (or iswitchb-matches iswitchb-buflist))))
63012
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1023 (setq iswitchb-common-match-inserted nil))))
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1024
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1025 ;;; KILL CURRENT BUFFER
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1026
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1027 (defun iswitchb-kill-buffer ()
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1028 "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
1029 (interactive)
109945
c5974968dea9 Fix buffer-list rename&refresh after after killing a buffer in ido.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107122
diff changeset
1030 (let ((enable-recursive-minibuffers t)
c5974968dea9 Fix buffer-list rename&refresh after after killing a buffer in ido.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107122
diff changeset
1031 buf)
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1032
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1033 (setq buf (car iswitchb-matches))
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1034 ;; 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
1035 (if buf
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1036 (progn
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1037 (kill-buffer buf)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1038
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1039 ;; 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
1040 ;; 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
1041 ;; 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
1042 (if (get-buffer buf)
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1043 ;; buffer couldn't be killed.
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1044 (setq iswitchb-rescan t)
109945
c5974968dea9 Fix buffer-list rename&refresh after after killing a buffer in ido.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107122
diff changeset
1045 ;; Else `kill-buffer' succeeds so re-make the buffer list
c5974968dea9 Fix buffer-list rename&refresh after after killing a buffer in ido.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107122
diff changeset
1046 ;; taking into account packages like uniquify may rename
c5974968dea9 Fix buffer-list rename&refresh after after killing a buffer in ido.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107122
diff changeset
1047 ;; buffers
c5974968dea9 Fix buffer-list rename&refresh after after killing a buffer in ido.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107122
diff changeset
1048 (iswitchb-make-buflist iswitchb-default))))))
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1049
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1050 ;;; VISIT CHOSEN BUFFER
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1051 (defun iswitchb-visit-buffer (buffer)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1052 "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
1053 (let (win newframe)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1054 (cond
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1055 ((eq iswitchb-method 'samewindow)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1056 (switch-to-buffer buffer))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1057
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1058 ((memq iswitchb-method '(always-frame maybe-frame))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1059 (cond
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1060 ((and (setq win (iswitchb-window-buffer-p buffer))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1061 (or (eq iswitchb-method 'always-frame)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1062 (y-or-n-p "Jump to frame? ")))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1063 (setq newframe (window-frame win))
51660
a7765f7f8c9e (iswitchb-read-buffer): Remove redudant variable
Stephen Eglen <stephen@gnu.org>
parents: 51366
diff changeset
1064 (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
1065 (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
1066 (raise-frame newframe)
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
1067 (select-frame newframe)
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
1068 )
8748b5403232 (iswitchb-visit-buffer): Use `select-frame-set-input-focus'.
Richard M. Stallman <rms@gnu.org>
parents: 41534
diff changeset
1069 (select-window win))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1070 (t
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1071 ;; No buffer in other frames...
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1072 (switch-to-buffer buffer)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1073 )))
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 ((eq iswitchb-method 'otherwindow)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1076 (switch-to-buffer-other-window buffer))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1077
17618
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
1078 ((eq iswitchb-method 'display)
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
1079 (display-buffer buffer))
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
1080
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1081 ((eq iswitchb-method 'otherframe)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1082 (progn
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1083 (switch-to-buffer-other-frame buffer)
51660
a7765f7f8c9e (iswitchb-read-buffer): Remove redudant variable
Stephen Eglen <stephen@gnu.org>
parents: 51366
diff changeset
1084 (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
1085 (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
1086 )))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1087
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1088 (defun iswitchb-possible-new-buffer (buf)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1089 "Possibly create and visit a new buffer called BUF."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1090
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1091 (let ((newbufcreated))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1092 (if (and iswitchb-newbuffer
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1093 (or
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1094 (not iswitchb-prompt-newbuffer)
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47622
diff changeset
1095
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1096 (and iswitchb-prompt-newbuffer
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1097 (y-or-n-p
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1098 (format
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1099 "No buffer matching `%s', create one? "
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1100 buf)))))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1101 ;; then create a new buffer
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1102 (progn
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1103 (setq newbufcreated (get-buffer-create buf))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1104 (if (fboundp 'set-buffer-major-mode)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1105 (set-buffer-major-mode newbufcreated))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1106 (iswitchb-visit-buffer newbufcreated))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1107 ;; else wont create new buffer
65582
4d1085b02d64 Message format spec fixes (1)
Deepak Goel <deego@gnufans.org>
parents: 64762
diff changeset
1108 (message "no buffer matching `%s'" buf))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1109
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1110 (defun iswitchb-window-buffer-p (buffer)
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1111 "Return window pointer if BUFFER is visible in another frame.
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1112 If BUFFER is visible in the current frame, return nil."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1113 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1114 (let ((blist (iswitchb-get-buffers-in-frames 'current)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1115 ;;If the buffer is visible in current frame, return nil
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1116 (if (memq buffer blist)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1117 nil
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1118 ;; maybe in other frame or icon
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1119 (get-buffer-window buffer 0) ; better than 'visible
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1120 )))
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 (defun iswitchb-default-keybindings ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1123 "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
1124 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
1125 adds a hook to the minibuffer."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1126 (interactive)
24820
788dc6ff04da Add iswitchb-minibuffer-setup to minibuffer-setup-hook in
Stephen Eglen <stephen@gnu.org>
parents: 23785
diff changeset
1127 (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
1128 (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
1129 (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
1130 (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
1131 (global-set-key "\C-x5b" 'iswitchb-buffer-other-frame))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1132
92508
15c28c0ed14e Don't check for `cadr' and `last'.
Juanma Barranquero <lekktu@gmail.com>
parents: 87566
diff changeset
1133 (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
1134
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1135 (defun iswitchb-buffer ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1136 "Switch to another buffer.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1137
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1138 The buffer name is selected interactively by typing a substring. The
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1139 buffer is displayed according to `iswitchb-default-method' -- the
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1140 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
1141 in another frame.
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1142 For details of keybindings, do `\\[describe-function] iswitchb'."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1143 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1144 (setq iswitchb-method iswitchb-default-method)
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1145 (iswitchb))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1146
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1147 (defun iswitchb-buffer-other-window ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1148 "Switch to another buffer and show it in another window.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1149 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
1150 For details of keybindings, do `\\[describe-function] iswitchb'."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1151 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1152 (setq iswitchb-method 'otherwindow)
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1153 (iswitchb))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1154
17618
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
1155 (defun iswitchb-display-buffer ()
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
1156 "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
1157 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
1158 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
1159 (interactive)
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
1160 (setq iswitchb-method 'display)
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1161 (iswitchb))
17618
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
1162
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1163 (defun iswitchb-buffer-other-frame ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1164 "Switch to another buffer and show it in another frame.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1165 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
1166 For details of keybindings, do `\\[describe-function] iswitchb'."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1167 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1168 (setq iswitchb-method 'otherframe)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1169 (iswitchb))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1170
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1171 ;;; XEmacs hack for showing default buffer
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1172
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1173 ;; 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
1174 ;; 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
1175 ;; 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
1176 ;; 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
1177 ;; 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
1178 ;; 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
1179 ;; show the default the first time we enter the minibuffer.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1180
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
1181 (defun iswitchb-init-XEmacs-trick ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1182 "Display default buffer when first entering minibuffer.
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1183 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
1184 (if (iswitchb-entryfn-p)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1185 (progn
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1186 (iswitchb-exhibit)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1187 (goto-char (point-min)))))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1188
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1189 ;; add this hook for XEmacs only.
51660
a7765f7f8c9e (iswitchb-read-buffer): Remove redudant variable
Stephen Eglen <stephen@gnu.org>
parents: 51366
diff changeset
1190 (if (featurep 'xemacs)
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1191 (add-hook 'iswitchb-minibuffer-setup-hook
21326
8150549598cc Many doc fixes.
Stephen Eglen <stephen@gnu.org>
parents: 21156
diff changeset
1192 'iswitchb-init-XEmacs-trick))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1193
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1194 ;;; XEmacs / backspace key
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1195 ;; 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
1196 ;; 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
1197 ;; backspace act like the normal delete key.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1198
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1199 (defun iswitchb-xemacs-backspacekey ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1200 "Bind backspace to `backward-delete-char'."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1201 (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
1202 (define-key iswitchb-mode-map '[(meta backspace)] 'backward-kill-word))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1203
51660
a7765f7f8c9e (iswitchb-read-buffer): Remove redudant variable
Stephen Eglen <stephen@gnu.org>
parents: 51366
diff changeset
1204 (if (featurep 'xemacs)
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1205 (add-hook 'iswitchb-define-mode-map-hook
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1206 'iswitchb-xemacs-backspacekey))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1207
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1208 ;;; ICOMPLETE TYPE CODE
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1209
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1210 (defun iswitchb-exhibit ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1211 "Find matching buffers and display a list in the minibuffer.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1212 Copied from `icomplete-exhibit' with two changes:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1213 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
1214 2. It calls my completion routine rather than the standard completion."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1215 (if iswitchb-use-mycompletion
26065
852cd4f88b37 (iswitchb-exhibit): Extract user-input only
Gerd Moellmann <gerd@gnu.org>
parents: 25855
diff changeset
1216 (let ((contents (buffer-substring (minibuffer-prompt-end) (point-max)))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1217 (buffer-undo-list t))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1218 (save-excursion
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1219 (goto-char (point-max))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1220 ; Register the end of input, so we
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1221 ; know where the extra stuff
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1222 ; (match-status info) begins:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1223 (if (not (boundp 'iswitchb-eoinput))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1224 ;; In case it got wiped out by major mode business:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1225 (make-local-variable 'iswitchb-eoinput))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1226 (setq iswitchb-eoinput (point))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1227 ;; Update the list of matches
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1228 (setq iswitchb-text contents)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1229 (iswitchb-set-matches)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1230 (setq iswitchb-rescan t)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1231 (iswitchb-set-common-completion)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1232
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1233 ;; Insert the match-status information:
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47622
diff changeset
1234 (insert (iswitchb-completions
63012
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1235 contents))))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1236
92508
15c28c0ed14e Don't check for `cadr' and `last'.
Juanma Barranquero <lekktu@gmail.com>
parents: 87566
diff changeset
1237 (defvar most-len)
15c28c0ed14e Don't check for `cadr' and `last'.
Juanma Barranquero <lekktu@gmail.com>
parents: 87566
diff changeset
1238 (defvar most-is-exact)
55434
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1239
54956
d0e2ba105b5a 2004-04-17 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 53805
diff changeset
1240 (defun iswitchb-output-completion (com)
d0e2ba105b5a 2004-04-17 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 53805
diff changeset
1241 (if (= (length com) most-len)
d0e2ba105b5a 2004-04-17 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 53805
diff changeset
1242 ;; Most is one exact match,
d0e2ba105b5a 2004-04-17 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 53805
diff changeset
1243 ;; note that and leave out
d0e2ba105b5a 2004-04-17 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 53805
diff changeset
1244 ;; for later indication:
d0e2ba105b5a 2004-04-17 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 53805
diff changeset
1245 (ignore
d0e2ba105b5a 2004-04-17 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 53805
diff changeset
1246 (setq most-is-exact t))
d0e2ba105b5a 2004-04-17 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 53805
diff changeset
1247 (substring com most-len)))
d0e2ba105b5a 2004-04-17 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 53805
diff changeset
1248
63012
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1249 (defun iswitchb-completions (name)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1250 "Return the string that is displayed after the user's text.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1251 Modified from `icomplete-completions'."
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47622
diff changeset
1252
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1253 (let ((comps iswitchb-matches)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1254 ; "-determined" - only one candidate
63012
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1255 (open-bracket-determined "[")
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1256 (close-bracket-determined "]")
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1257 ;"-prospects" - more than one candidate
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1258 (open-bracket-prospects "{")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1259 (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
1260 first)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1261
63012
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1262 (if (and iswitchb-use-faces comps)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1263 (progn
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1264 (setq first (car comps))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1265 (setq first (format "%s" first))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1266 (put-text-property 0 (length first) 'face
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1267 (if (= (length comps) 1)
63012
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1268 (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
1269 'iswitchb-invalid-regexp
7e902750d940 2005-06-06 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63012
diff changeset
1270 'iswitchb-single-match)
7e902750d940 2005-06-06 Matt Hodges <MPHodges@member.fsf.org>
Kim F. Storm <storm@cua.dk>
parents: 63012
diff changeset
1271 'iswitchb-current-match)
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1272 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
1273 (setq comps (cons first (cdr comps)))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1274
55434
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1275 ;; 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
1276 ;; 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
1277 ;; 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
1278 (when (and iswitchb-use-virtual-buffers (null comps)
107122
df3df0622e73 * iswitchb.el (iswitchb-completions): Revert last change.
Chong Yidong <cyd@stupidchicken.com>
parents: 107077
diff changeset
1279 recentf-list)
55434
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1280 (setq iswitchb-virtual-buffers nil)
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1281 (let ((head recentf-list) name)
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1282 (while head
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1283 (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
1284 (string-match (if iswitchb-regexp
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1285 iswitchb-text
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1286 (regexp-quote iswitchb-text)) name)
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1287 (null (get-file-buffer (car head)))
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1288 (not (assoc name iswitchb-virtual-buffers))
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1289 (not (iswitchb-ignore-buffername-p name))
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1290 (file-exists-p (car head)))
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1291 (setq iswitchb-virtual-buffers
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1292 (cons (cons name (car head))
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1293 iswitchb-virtual-buffers)))
107122
df3df0622e73 * iswitchb.el (iswitchb-completions): Revert last change.
Chong Yidong <cyd@stupidchicken.com>
parents: 107077
diff changeset
1294 (setq head (cdr head)))
df3df0622e73 * iswitchb.el (iswitchb-completions): Revert last change.
Chong Yidong <cyd@stupidchicken.com>
parents: 107077
diff changeset
1295 (setq iswitchb-virtual-buffers (nreverse iswitchb-virtual-buffers)
df3df0622e73 * iswitchb.el (iswitchb-completions): Revert last change.
Chong Yidong <cyd@stupidchicken.com>
parents: 107077
diff changeset
1296 comps (mapcar 'car iswitchb-virtual-buffers))
55434
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1297 (let ((comp comps))
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1298 (while comp
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1299 (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
1300 'face 'iswitchb-virtual-matches
55434
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1301 (car comp))
107122
df3df0622e73 * iswitchb.el (iswitchb-completions): Revert last change.
Chong Yidong <cyd@stupidchicken.com>
parents: 107077
diff changeset
1302 (setq comp (cdr comp))))))
55434
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1303
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1304 (cond ((null comps) (format " %sNo match%s"
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1305 open-bracket-determined
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1306 close-bracket-determined))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1307
63012
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1308 (iswitchb-invalid-regexp
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1309 (concat " " (car comps)))
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1310 ((null (cdr comps)) ;one match
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1311 (concat
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1312 (if (if (not iswitchb-regexp)
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1313 (= (length name)
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1314 (length (car comps)))
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1315 (string-match name (car comps))
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1316 (string-equal (match-string 0 (car comps))
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1317 (car comps)))
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1318 ""
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1319 (concat open-bracket-determined
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1320 ;; when there is one match, show the
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1321 ;; matching buffer name in full
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1322 (car comps)
63012
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1323 close-bracket-determined))
3ae2519a0cfd (iswitchb-single-match-face)
Eli Zaretskii <eliz@gnu.org>
parents: 63002
diff changeset
1324 (if (not iswitchb-use-faces) " [Matched]")))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1325 (t ;multiple matches
54956
d0e2ba105b5a 2004-04-17 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 53805
diff changeset
1326 (if (and iswitchb-max-to-show
d0e2ba105b5a 2004-04-17 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 53805
diff changeset
1327 (> (length comps) iswitchb-max-to-show))
d0e2ba105b5a 2004-04-17 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 53805
diff changeset
1328 (setq comps
d0e2ba105b5a 2004-04-17 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 53805
diff changeset
1329 (append
54967
8456893f6790 2004-04-18 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54956
diff changeset
1330 (let ((res nil)
8456893f6790 2004-04-18 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54956
diff changeset
1331 (comp comps)
8456893f6790 2004-04-18 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54956
diff changeset
1332 (end (/ iswitchb-max-to-show 2)))
8456893f6790 2004-04-18 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54956
diff changeset
1333 (while (>= (setq end (1- end)) 0)
8456893f6790 2004-04-18 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54956
diff changeset
1334 (setq res (cons (car comp) res)
8456893f6790 2004-04-18 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54956
diff changeset
1335 comp (cdr comp)))
8456893f6790 2004-04-18 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54956
diff changeset
1336 (nreverse res))
54956
d0e2ba105b5a 2004-04-17 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 53805
diff changeset
1337 (list "...")
54967
8456893f6790 2004-04-18 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54956
diff changeset
1338 (nthcdr (- (length comps)
8456893f6790 2004-04-18 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 54956
diff changeset
1339 (/ iswitchb-max-to-show 2)) comps))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1340 (let* (
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1341 ;;(most (try-completion name candidates predicate))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1342 (most nil)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1343 (most-len (length most))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1344 most-is-exact
55434
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1345 (alternatives
f88632e54afb 2004-05-08 John Wiegley <johnw@newartisans.com>
John Wiegley <johnw@newartisans.com>
parents: 55373
diff changeset
1346 (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
1347 'identity) comps iswitchb-delim)))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1348
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1349 (concat
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1350
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1351 ;; put in common completion item -- what you get by
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1352 ;; pressing tab
47622
b604605851ea (iswitchb-completions): Test that iswitchb-common-match-string is a
Stephen Eglen <stephen@gnu.org>
parents: 44557
diff changeset
1353 (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
1354 (> (length iswitchb-common-match-string) (length name)))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1355 (concat open-bracket-determined
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1356 (substring iswitchb-common-match-string
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1357 (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
1358 close-bracket-determined))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1359 ;; end of partial matches...
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1360
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1361 ;; think this bit can be ignored.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1362 (and (> most-len (length name))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1363 (concat open-bracket-determined
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1364 (substring most (length name))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1365 close-bracket-determined))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47622
diff changeset
1366
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1367 ;; list all alternatives
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1368 open-bracket-prospects
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1369 (if most-is-exact
96889
f118ad76e286 (iswitchb-delim): New variable, suggested by Ted Roden.
Stephen Eglen <stephen@gnu.org>
parents: 96376
diff changeset
1370 (concat iswitchb-delim alternatives)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1371 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
1372 close-bracket-prospects))))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1373
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1374 (defun iswitchb-minibuffer-setup ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1375 "Set up minibuffer for `iswitchb-buffer'.
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1376 Copied from `icomplete-minibuffer-setup-hook'."
41287
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
1377 (when (iswitchb-entryfn-p)
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
1378 (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
1379 (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
1380 (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
1381 (run-hooks 'iswitchb-minibuffer-setup-hook)))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1382
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1383 (defun iswitchb-pre-command ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1384 "Run before command in `iswitchb-buffer'."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1385 (iswitchb-tidy))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1386
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1387 (defun iswitchb-post-command ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1388 "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
1389 (iswitchb-exhibit))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1390
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1391 (defun iswitchb-tidy ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1392 "Remove completions display, if any, prior to new user input.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1393 Copied from `icomplete-tidy'."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1394
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1395 (if (and (boundp 'iswitchb-eoinput)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1396 iswitchb-eoinput)
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47622
diff changeset
1397
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1398 (if (> iswitchb-eoinput (point-max))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1399 ;; Oops, got rug pulled out from under us - reinit:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1400 (setq iswitchb-eoinput (point-max))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1401 (let ((buffer-undo-list buffer-undo-list )) ; prevent entry
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1402 (delete-region iswitchb-eoinput (point-max))))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47622
diff changeset
1403
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1404 ;; Reestablish the local variable 'cause minibuffer-setup is weird:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1405 (make-local-variable 'iswitchb-eoinput)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1406 (setq iswitchb-eoinput 1)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1407
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1408 (defun iswitchb-entryfn-p ()
30527
876c0335dead (iswitchb-entryfn-p): Test this-command instead
Gerd Moellmann <gerd@gnu.org>
parents: 28859
diff changeset
1409 "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
1410 (eq iswitchb-minibuf-depth (minibuffer-depth)))
20470
4d8e07123564 (iswitchb-completion-help): Multiple TAB presses
Karl Heuer <kwzh@gnu.org>
parents: 18929
diff changeset
1411
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1412 (defun iswitchb-summaries-to-end ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1413 "Move the summaries to the end of the list.
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1414 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
1415 `iswitchb-make-buflist-hook'. Any buffer matching the regexps
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1416 `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
1417 (let ((summaries (delq nil
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1418 (mapcar
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1419 (lambda (x)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1420 (if (string-match "Summary\\|output\\*$" x)
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1421 x))
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1422 iswitchb-temp-buflist))))
18776
61751ba33c8f All user variables now converted to custom.
Richard M. Stallman <rms@gnu.org>
parents: 17619
diff changeset
1423 (iswitchb-to-end summaries)))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1424
28619
79fd94833204 (iswitchb-case): New function. If the user input
Gerd Moellmann <gerd@gnu.org>
parents: 27497
diff changeset
1425 (defun iswitchb-case ()
78492
7c8949dbfa0d Replace `iff' in doc-strings and comments.
Glenn Morris <rgm@gnu.org>
parents: 78236
diff changeset
1426 "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
1427 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
1428 (if iswitchb-case
51660
a7765f7f8c9e (iswitchb-read-buffer): Remove redudant variable
Stephen Eglen <stephen@gnu.org>
parents: 51366
diff changeset
1429 (if (featurep 'xemacs)
28619
79fd94833204 (iswitchb-case): New function. If the user input
Gerd Moellmann <gerd@gnu.org>
parents: 27497
diff changeset
1430 (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
1431 (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
1432
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1433 ;;;###autoload
41287
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
1434 (define-minor-mode iswitchb-mode
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1435 "Toggle Iswitchb global minor mode.
78492
7c8949dbfa0d Replace `iff' in doc-strings and comments.
Glenn Morris <rgm@gnu.org>
parents: 78236
diff changeset
1436 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
1437 This mode enables switching between buffers using substrings. See
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1438 `iswitchb' for details."
41287
eeb1c0923d4f (iswitchb-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41273
diff changeset
1439 nil nil iswitchb-global-map :global t :group 'iswitchb
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1440 (if iswitchb-mode
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1441 (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
1442 (remove-hook 'minibuffer-setup-hook 'iswitchb-minibuffer-setup)))
31797
b9e108c1c1bf Some doc fixes.
Dave Love <fx@gnu.org>
parents: 30527
diff changeset
1443
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1444 (provide 'iswitchb)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1445
63436
eca4e949db45 (iswitchb-to-end): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63075
diff changeset
1446 ;; arch-tag: d74198ae-753f-44f2-b34f-0c515398d90a
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1447 ;;; iswitchb.el ends here