annotate lisp/iswitchb.el @ 18092:8428d56cd207

(smtpmail-via-smtp): Recognize XVRB as a synonym for VERB and XONE as a synonym for ONEX. (smtpmail-read-response): Add "%s" to `message' calls to avoid problems with percent signs in strings. (smtpmail-read-response): Return all lines of the response text as a list of strings. Formerly only the first line was returned. This is insufficient when one wants to parse e.g. an EHLO response. Ignore responses starting with "0". This is necessary to support the VERB SMTP extension. (smtpmail-via-smtp): Try EHLO and find out which SMTP service extensions the receiving mailer supports. Issue the ONEX and XUSR commands if the corresponding extensions are supported. Issue VERB if supported and `smtpmail-debug-info' is non-nil. Add SIZE attribute to MAIL FROM: command if SIZE extension is supported. Add code that could set the BODY= attribute to MAIL FROM: if the receiving mailer supports 8BITMIME. This is currently disabled, since doing it right might involve adding MIME headers to, and in some cases reencoding, the message.
author Richard M. Stallman <rms@gnu.org>
date Sun, 01 Jun 1997 22:24:22 +0000
parents c8e876b73dcd
children 61751ba33c8f
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
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3 ;; Copyright (C) 1996, 1997 Free Software Foundation, Inc.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5 ;; Author: Stephen Eglen <stephene@cogs.susx.ac.uk>
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
6 ;; Maintainer: Stephen Eglen <stephene@cogs.susx.ac.uk>
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
7 ;; Keywords: extensions
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8 ;; location: http://www.cogs.susx.ac.uk/users/stephene/emacs
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
9
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
10 ;; This file is part of GNU Emacs.
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
11
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
12 ;; GNU Emacs is free software; you can redistribute it and/or modify
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 ;; it under the terms of the GNU General Public License as published by
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14 ;; the Free Software Foundation; either version 2, or (at your option)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15 ;; any later version.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20 ;; GNU General Public License for more details.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
22 ;; You should have received a copy of the GNU General Public License
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
23 ;; along with GNU Emacs; see the file COPYING. If not, write to the
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
24 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
25 ;; Boston, MA 02111-1307, USA.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27 ;;; Installation:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
28
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
29 ;; To get the functions in this package bound to keys, do
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
30 ;; (iswitchb-default-keybindings)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
31
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32 ;;; Commentary:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
34 ;; As you type in a substring, the list of buffers currently matching
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35 ;; the substring are displayed as you type. The list is ordered so
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
36 ;; 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
37 ;; 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
38 ;; you press return. By typing more of the substring, the list is
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
39 ;; narrowed down so that gradually the buffer you want will be at the
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
40 ;; top of the list. Alternatively, you can use C-s an C-r to rotate
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
41 ;; 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
42 ;; 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
43 ;; common to all of the matching buffers as you type.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
44
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
45 ;; This code is similar to a couple of other packages. Michael R Cook
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
46 ;; <mcook@cognex.com wrote a similar buffer switching package, but
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47 ;; does exact matching rather than substring matching on buffer names.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
48 ;; I also modified a couple of functions from icomplete.el to provide
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
49 ;; the completion feedback in the minibuffer.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
50
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
51 ;;; Example
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
52
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
53 ;;If I have two buffers called "123456" and "123", with "123456" the
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
54 ;;most recent, when I use iswitchb, I first of all get presented with
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
55 ;;the default buffer (xxx) to switch to:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
56 ;;
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
57 ;; iswitch {default xxx}
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
58 ;;
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
59 ;; If I then press 2:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
60 ;; iswitch 2[3]{123456,123}
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
61 ;;
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62 ;; The list in {} are the matching buffers, most recent first (buffers
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63 ;; 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
64 ;; default). At any time I can select the item at the head of the
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
65 ;; list by pressing RET. I can also bring the put the first element
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
66 ;; at the end of the list by pressing C-s, or put the last element at
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
67 ;; the head of the list by pressing C-r. The item in [] indicates
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
68 ;; what can be added to my input by pressing TAB. In this case, I
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
69 ;; will get "3" added to my input. So, press TAB:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
70 ;; iswitch 23{123456,123}
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
71 ;;
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
72 ;; At this point, I still have two matching buffers.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
73 ;; 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
74 ;; 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
75 ;; top of the list and then RET to select it.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
76 ;;
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
77 ;;However, If I type 4, I only have one match left:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
78 ;; iswitch 234[123456] [Matched]
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
79 ;;
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
80 ;;Since there is only one matching buffer left, it is given in [] and we
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
81 ;;see the text [Matched] afterwards. I can now press TAB or RET to go
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
82 ;;to that buffer.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
83 ;;
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
84 ;; If however, I now type "a":
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
85 ;; iswitch 234a [No match]
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
86 ;; 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
87 ;; prompted to create a new buffer called "234a".
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
88 ;;
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
89 ;; Of course, where this function comes in really useful is when you
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
90 ;; can specify the buffer using only a few keystrokes. In the above
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
91 ;; example, the quickest way to get to the "123456" buffer would be
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
92 ;; just to type 4 and then RET (assuming there isnt any newer buffer
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
93 ;; with 4 in its name).
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
94
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
95 ;; 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
96 ;; hit ? or press TAB when there are no further completions to the
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
97 ;; substring.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
98
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
99 ;;
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
100 ;; See the doc string of iswitchb for full keybindings and features.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
101 ;; (describe-function 'iswitchb)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
102
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
103 ;;; Customisation
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
104
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
105 ;; See the User Variables section below for easy ways to change the
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
106 ;; functionality of the program.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
107 ;; To modify the keybindings, use the hook provided. For example:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
108 ;;(add-hook 'iswitchb-define-mode-map-hook
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
109 ;; 'iswitchb-my-keys)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
110 ;;
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
111 ;;(defun iswitchb-my-keys ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
112 ;; "Add my keybings for iswitchb."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
113 ;; (define-key iswitchb-mode-map " " 'iswitchb-next-match)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
114 ;; )
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
115 ;;
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
116 ;; Seeing all the matching buffers.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
117 ;; If you have many matching buffers, they may not all fit onto one
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
118 ;; line of the minibuffer. In this case, you should use rsz-mini
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
119 ;; (resize-minibuffer-mode). You can also limit iswitchb so that it
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
120 ;; only shows a certain number of lines -- see the documentation for
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
121 ;; `iswitchb-minibuffer-setup-hook'.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
122
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
123
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
124 ;; Changing the list of buffers.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
125
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
126 ;; By default, the list of current buffers is most recent first,
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
127 ;; oldest last, with the exception that the buffers visible in the
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
128 ;; 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
129 ;; allow other functions to order the list. For example, if you add:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
130 ;;
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
131 ;; (add-hook 'iswitchb-make-buflist-hook 'iswitchb-summaries-to-end)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
132 ;;
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
133 ;; then all buffers matching "Summary" are moved to the end of the
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
134 ;; 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
135 ;; out of the way.) It also moves buffers matching "output\*$" to the
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
136 ;; end of the list (these are created by AUC TeX when compiling.)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
137 ;; Other functions could be made available which alter the list of
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
138 ;; matching buffers (either deleting or rearranging elements.)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
139
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
140 ;; Font-Lock
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
141
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
142 ;; If you have font-lock loaded, the first matching buffer is
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
143 ;; highlighted. To switch this off, set (setq iswitchb-use-fonts nil)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
144 ;; I don't use font-lock that much, so I've hardcoded the faces. If
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
145 ;; this is too harsh, let me know. Colouring of the matching buffer
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
146 ;; name was suggested by Carsten Dominik (dominik@strw.leidenuniv.nl)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
147
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
148 ;;; Comparison with iswitch-buffer
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 ;; This package is a rewrite of iswitch-buffer, using the minibuffer
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
151 ;; rather than the echo area. The advantages of using the minibuffer
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
152 ;; are several:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
153 ;; o minibuffer has more powerful editing facilities
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
154 ;; o doesnt interfere with other packages that use the echo area
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
155 ;; o *Messages* buffer doesnt get filled up with all of the messages that
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
156 ;; go to the modeline
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
157 ;; o cursor is in the minibuffer, which somehow looks right.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
158 ;; o minibuffer can be resized dynamically to show all the possible matching
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
159 ;; buffers rather than just the first line's worth (using rsz-mini).
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
160 ;;
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
161 ;; Disadvantages:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
162 ;; o cant change the prompt to indicate status of searching (eg whether
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
163 ;; regexp searching is currently on).
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
164
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
165
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
166 ;;; Acknowledgements
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
167
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
168 ;; Thanks to Jari Aalto <jari.aalto@poboxes.com> for help with the
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
169 ;; first version of this package, iswitch-buffer. Thanks also to many
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
170 ;; others for testing earlier versions.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
171
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
172 ;;; Code:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
173
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
174 ;;; User Variables
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
175 ;;
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
176 ;; These are some things you might want to change.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
177
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
178 (defvar iswitchb-case case-fold-search
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
179 "*Non-nil if searching of buffer names should ignore case.")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
180
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
181 (defvar iswitchb-buffer-ignore
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
182 '("^ ")
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
183 "*List of regexps or functions matching buffer names to ignore.
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
184 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
185 with a space, for which the regexp is `^ '. See the source file for
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
186 example functions that filter buffernames.")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
187
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
188 ;;; Examples for setting the value of iswitchb-buffer-ignore
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
189 ;(defun -c-mode (name)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
190 ; "Ignore all c mode buffers -- example function for iswitchb."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
191 ; (save-excursion
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
192 ; (set-buffer name)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
193 ; (string-match "^C$" mode-name)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
194
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
195 ;(setq iswitchb-buffer-ignore '("^ " ignore-c-mode))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
196 ;(setq iswitchb-buffer-ignore '("^ " "\\.c$" "\\.h$"))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
197
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
198
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
199 (defvar iswitchb-default-method 'always-frame
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
200 "*How to switch to new buffer when using `iswitchb-buffer'.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
201 Possible values:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
202 `samewindow' Show new buffer in same window
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
203 `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
204 `display' Display buffer in another window without switching to it
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
205 `otherframe' Show new buffer in another frame
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
206 `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
207 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
208 frame or in the other frame.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
209 `always-frame' If a buffer is visible in another frame, raise that
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
210 frame. Otherwise, visit the buffer in the same window.")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
211
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
212 (defvar iswitchb-regexp nil
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
213 "*Non-nil means that `iswitchb' will do regexp matching.
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
214 Value can be toggled within `iswitchb'.")
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
215
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
216 (defvar iswitchb-newbuffer t
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
217 "*Non-nil means create new buffer if no buffer matches substring.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
218 See also `iswitchb-prompt-newbuffer'.")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
219
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
220 (defvar iswitchb-prompt-newbuffer t
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
221 "*Non-nil means prompt user to confirm before creating new buffer.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
222 See also `iswitchb-newbuffer'.")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
223
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
224 (defvar iswitchb-define-mode-map-hook nil
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
225 "*Hook to define keys in `iswitchb-mode-map' for extra keybindings.")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
226
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
227
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
228 (defvar iswitchb-use-fonts t
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
229 "*Non-nil means use fonts for showing first match.")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
230
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
231 (defvar iswitchb-make-buflist-hook nil
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
232 "*Hook to run when list of matching buffers is created.")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
233
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
234
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
235 (defvar iswitchb-method nil
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
236 "*Stores the method for viewing the selected buffer.
17618
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
237 Its value is one of `samewindow', `otherwindow', `display', `otherframe',
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
238 `maybe-frame' or `always-frame'. See `iswitchb-default-method' for
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
239 details of values.")
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
240
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
241 (defvar iswitchb-all-frames 'visible
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
242 "*Argument to pass to `walk-windows' when finding visible buffers.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
243 See documentation of `walk-windows' for useful values.")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
244
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
245 ;;; THINGS TO DO / BUGS
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
246
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
247 ;; In Xemacs, the default buffer is not shown the first time you enter
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
248 ; the minibuffer, but if you type a char and then delete a char, the
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
249 ; default appears. The first time we enter the minibuffer in XEmacs,
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
250 ; the default msg is not displayed, presumably because the hook is not
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
251 ; being called. I have put in a temporary hack therefore at the
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
252 ; bottom of this file.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
253 ;
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
254 ; There is also a problem with the backspace key in XEmacs, so I have
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
255 ; bound it to the normal backward-delete-char.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
256
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
257 ;; iswitch-buffer features Not yet implemented:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
258 ; C-f Quit iswitch and drop into find-file
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
259
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
260
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
261 ;; Do we need the variable iswitchb-use-mycompletion?
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
262
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
263
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
264 ;;; Internal Variables
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
265 (defvar iswitchb-minibuffer-setup-hook nil
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
266 "*Iswitchb-specific customization of minibuffer setup.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
267
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
268 This hook is run during minibuffer setup iff `iswitchb' will be active.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
269 It is intended for use in customizing iswitchb for interoperation
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
270 with other packages. For instance:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
271
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
272 \(add-hook 'iswitchb-minibuffer-setup-hook
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
273 \(function
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
274 \(lambda ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
275 \(make-local-variable 'resize-minibuffer-window-max-height)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
276 \(setq resize-minibuffer-window-max-height 3))))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
277
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
278 will constrain rsz-mini to a maximum minibuffer height of 3 lines when
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
279 iswitchb is running. Copied from `icomplete-minibuffer-setup-hook'.")
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
280
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
281 (defvar iswitchb-eoinput 1
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
282 "Point where minibuffer input ends and completion info begins.
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
283 Copied from `icomplete-eoinput'.")
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
284 (make-variable-buffer-local 'iswitchb-eoinput)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
285
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
286
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
287 (defvar iswitchb-buflist nil
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
288 "Stores the current list of buffers that will be searched through.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
289 The list is ordered, so that the most recent buffers come first,
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
290 although by default, the buffers visible in the current frame are put
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
291 at the end of the list. Created by `iswitchb-make-buflist'.")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
292
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
293 ;; todo -- is this necessary?
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
294
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
295 (defvar iswitchb-use-mycompletion nil
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
296 "Non-nil means use `iswitchb-buffer' completion feedback.
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
297 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
298 interfere with other minibuffer usage.")
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
299
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
300 (defvar iswitchb-change-word-sub nil
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
301 "Private variable used by `iswitchb-word-matching-substring'.")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
302
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
303
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
304 (defvar iswitchb-common-match-string nil
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
305 "Stores the string that is common to all matching buffers.")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
306
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
307
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
308 (defvar iswitchb-rescan nil
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
309 "Non-nil means we need to regenerate the list of matching buffers.")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
310
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
311 (defvar iswitchb-text nil
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
312 "Stores the users string as it is typed in.")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
313
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
314 (defvar iswitchb-matches nil
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
315 "List of buffers currenly matching `iswitchb-text'.")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
316
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
317 (defvar iswitchb-default-buffer nil
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
318 "Default buffer to switch to.")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
319
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
320 (defvar iswitchb-mode-map nil
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
321 "Keymap for `iswitchb-buffer'.")
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
322
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
323 (defvar iswitchb-history nil
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
324 "History of buffers selected using `iswitchb-buffer'.")
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
325
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
326 (defvar iswitchb-exit nil
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
327 "Flag to monitor how `iswitchb-buffer' exits.
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
328 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
329 selected.")
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
330
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
331 (defvar iswitchb-buffer-ignore-orig nil
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
332 "Stores original value of `iswitchb-buffer-ignore'.")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
333
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
334 (defvar iswitchb-xemacs (string-match "XEmacs" (emacs-version))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
335 "Non-nil if we are running XEmacs. Otherwise, assume we are running Emacs.")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
336
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
337
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
338 ;;; FUNCTIONS
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
339
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
340
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
341 ;;; ISWITCHB KEYMAP
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
342 (defun iswitchb-define-mode-map ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
343 "Set up the keymap for `iswitchb-buffer'."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
344 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
345 (let (map)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
346 ;; generated every time so that it can inheret new functions.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
347 ;;(or iswitchb-mode-map
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
348
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
349 (setq map (copy-keymap minibuffer-local-map))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
350 (define-key map "?" 'iswitchb-completion-help)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
351 (define-key map "\C-s" 'iswitchb-next-match)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
352 (define-key map "\C-r" 'iswitchb-prev-match)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
353 (define-key map "\t" 'iswitchb-complete)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
354 (define-key map "\C-j" 'iswitchb-select-buffer-text)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
355 (define-key map "\C-t" 'iswitchb-toggle-regexp)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
356 ;;(define-key map "\C-a" 'iswitchb-toggle-ignore)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
357 (define-key map "\C-c" 'iswitchb-toggle-case)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
358 (setq iswitchb-mode-map map)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
359 (run-hooks 'iswitchb-define-mode-map-hook)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
360 ))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
361
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
362
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
363
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
364 ;;; MAIN FUNCTION
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
365 (defun iswitchb ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
366 "Switch to buffer matching a substring.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
367 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
368 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
369 selected. As you type, most keys have their normal keybindings,
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
370 except for the following:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
371 \\<iswitchb-mode-map>
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
372
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
373 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
374 list is empty, possibly prompt to create new buffer.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
375
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
376 \\[iswitchb-select-buffer-text] Select the current prompt as the buffer.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
377 If no buffer is found, prompt for a new one.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
378
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
379 \\[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
380 \\[iswitchb-prev-match] Put the last element at the start of the list.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
381 \\[iswitchb-complete] Complete a common suffix to the current string that
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
382 matches all buffers. If there is only one match, select that buffer.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
383 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
384 in a separate window.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
385 \\[iswitchb-toggle-regexp] Toggle rexep searching.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
386 \\[iswitchb-toggle-case] Toggle case-sensitive searching of buffer names.
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
387 \\[iswitchb-completion-help] Show list of matching buffers in separate window."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
388 ;;\\[iswitchb-toggle-ignore] Toggle ignoring certain buffers (see \
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
389 ;;`iswitchb-buffer-ignore')
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
390
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
391 (let
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
392 (
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
393 prompt
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
394 buf-sel
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
395 iswitchb-final-text
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
396 (minibuffer-confirm-incomplete nil) ;XEmacs todo: prevent `;confirm'
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
397 (icomplete-mode nil) ;; prevent icomplete starting up
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
398 (minibuffer-local-completion-map minibuffer-local-completion-map)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
399 ;; can only use fonts if they have been bound.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
400 (iswitchb-use-fonts (and iswitchb-use-fonts
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
401 (boundp 'font-lock-comment-face)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
402 (boundp 'font-lock-function-name-face)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
403 )
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
404
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
405 (iswitchb-define-mode-map)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
406 (setq minibuffer-local-completion-map iswitchb-mode-map)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
407
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
408 (setq iswitchb-exit nil)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
409 (setq iswitchb-rescan t)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
410 (setq iswitchb-text "")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
411 (setq iswitchb-matches nil)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
412 ;;(setq iswitchb-default-buffer (buffer-name (other-buffer)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
413 (setq prompt (format "iswitch "))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
414 (iswitchb-make-buflist)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
415 (setq iswitchb-default-buffer (format "%s" (car iswitchb-buflist)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
416
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
417 ;; highlight the default.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
418 (if iswitchb-use-fonts
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
419 (put-text-property 0 (length iswitchb-default-buffer)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
420 'face
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
421 'font-lock-function-name-face
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
422 iswitchb-default-buffer))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
423
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
424 ;; prompt the user for the buffer name
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
425 (setq iswitchb-final-text (completing-read prompt
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
426 ;;nil
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
427 '(("dummy".1))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
428 ;;("2".2) ("3".3))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
429 nil nil
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
430 nil;init string
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
431 'iswitchb-history))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
432 ;;(message "chosen text %s" iswitchb-final-text)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
433 ;; Choose the buffer name: either the text typed in, or the head
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
434 ;; of the list of matches
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
435 (if (or
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
436 (eq iswitchb-exit 'takeprompt)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
437 (null iswitchb-matches))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
438 (setq buf-sel iswitchb-final-text)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
439 ;; else take head of list
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
440 (setq buf-sel (car iswitchb-matches)))
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 ;; Or possibly choose the default buffer
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
443 (if (equal iswitchb-final-text "")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
444 (setq buf-sel iswitchb-default-buffer))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
445
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
446 ;; View the buffer
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
447 (message "go to buf %s" buf-sel)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
448
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
449 (if (get-buffer buf-sel)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
450 ;; buffer exists, so view it and then exit
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
451 (iswitchb-visit-buffer buf-sel)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
452 ;; else buffer doesnt exist
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
453 (iswitchb-possible-new-buffer buf-sel))
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 ))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
456
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 ;;; COMPLETION CODE
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
459
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
460 (defun iswitchb-set-common-completion ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
461 "Find common completion of `iswitchb-text' in `iswitchb-matches'.
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
462 The result is stored in `iswitchb-common-match-string'."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
463
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
464 (let* (val)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
465 (setq iswitchb-common-match-string nil)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
466 (if (and iswitchb-matches
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
467 (stringp iswitchb-text)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
468 (> (length iswitchb-text) 0))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
469 (if (setq val (iswitchb-find-common-substring
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
470 iswitchb-matches iswitchb-text))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
471 (setq iswitchb-common-match-string val)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
472 val
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
473 ))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
474
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
475
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
476 (defun iswitchb-complete ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
477 "Try and complete the current pattern amongst the buffer names."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
478 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
479 (let (res)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
480 (cond ((not iswitchb-matches)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
481
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
482 ;; todo
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
483 ;;(message "No buffer completions.")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
484 ;;(sit-for 0.3)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
485 (iswitchb-completion-help)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
486 )
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
487
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
488 ((eq 1 (length iswitchb-matches))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
489 ;; only one choice, so select it.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
490 (exit-minibuffer))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
491
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
492 (t
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
493 ;; else there could be some completions
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
494
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
495 (setq res (iswitchb-find-common-substring
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
496 iswitchb-matches iswitchb-text))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
497 (if (and (not (memq res '(t nil)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
498 (not (eq res iswitchb-text)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
499 ;; found something to complete, so put it in the minibuff.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
500 (progn
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
501 (setq iswitchb-rescan nil)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
502 (delete-region (point-min) (point))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
503 (insert res))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
504 ;; else nothing to complete
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
505 (iswitchb-completion-help)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
506 )
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
507 )
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
508 )))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
509
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
510
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
511
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
512 ;;; TOGGLE FUNCTIONS
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
513
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
514 (defun iswitchb-toggle-case ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
515 "Toggle the value of `iswitchb-case'."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
516 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
517 (setq iswitchb-case (not iswitchb-case))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
518 ;; ask for list to be regenerated.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
519 (setq iswitchb-rescan t)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
520 )
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
521
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
522 (defun iswitchb-toggle-regexp ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
523 "Toggle the value of `iswitchb-regexp'."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
524 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
525 (setq iswitchb-regexp (not iswitchb-regexp))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
526 ;; ask for list to be regenerated.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
527 (setq iswitchb-rescan t)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
528 )
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
529
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
530
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
531 (defun iswitchb-toggle-ignore ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
532 "Toggle ignoring buffers specified with `iswitchb-buffer-ignore'."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
533 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
534 (if iswitchb-buffer-ignore
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
535 (progn
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
536 (setq iswitchb-buffer-ignore-orig iswitchb-buffer-ignore)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
537 (setq iswitchb-buffer-ignore nil)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
538 )
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
539 ;; else
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
540 (setq iswitchb-buffer-ignore iswitchb-buffer-ignore-orig)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
541 )
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
542 ;; ask for list to be regenerated.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
543 (setq iswitchb-rescan t)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
544 )
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
545
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
546
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
547 (defun iswitchb-select-buffer-text ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
548 "Select the buffer named by the prompt.
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
549 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
550 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
551 (setq iswitchb-exit 'takeprompt)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
552 (exit-minibuffer))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
553
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
554
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
555 (defun iswitchb-next-match ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
556 "Put first element of `iswitchb-matches' at the end of the list."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
557 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
558 (let ((tmp (car iswitchb-matches)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
559 (setq iswitchb-matches (cdr iswitchb-matches))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
560 (setq iswitchb-matches (append iswitchb-matches (list tmp)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
561 (setq iswitchb-rescan nil)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
562 ))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
563
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
564 (defun iswitchb-prev-match ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
565 "Put last element of `iswitchb-matches' at the front of the list."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
566 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
567 (setq iswitchb-matches (iswitchb-rotate-list iswitchb-matches))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
568 (setq iswitchb-rescan nil)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
569 )
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
570
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
571
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
572
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
573
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
574 ;;; CREATE LIST OF ALL CURRENT BUFFERS
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
575
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
576 (defun iswitchb-make-buflist ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
577 "Set `iswitchb-buflist' to the current list of buffers.
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
578 Currently visible buffers are put at the end of the list."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
579 (setq iswitchb-buflist
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
580 (let (buflist
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
581 iswitchb-current-buffers)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
582 (setq iswitchb-current-buffers (iswitchb-get-buffers-in-frames))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
583 (setq buflist (mapcar 'buffer-name (buffer-list)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
584 (setq buflist (delq nil
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
585 (mapcar
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
586 '(lambda (x)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
587 (if (not (iswitchb-ignore-buffername-p x))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
588 x))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
589 buflist)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
590 (mapcar 'iswitchb-to-end iswitchb-current-buffers)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
591
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
592 (run-hooks 'iswitchb-make-buflist-hook)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
593 buflist)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
594
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
595
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
596 (defun iswitchb-to-end (elem)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
597 "Move ELEM to the end of BUFLIST."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
598 (setq buflist (delq elem buflist))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
599 ;;(message "removing %s" elem)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
600 (setq buflist (append buflist (list elem))))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
601
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
602
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
603
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
604
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
605 (defun iswitchb-get-buffers-in-frames (&optional current)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
606 "Return the list of buffers that are visible in the current frame.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
607 If optional argument `current' is given, restrict searching to the
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
608 current frame, rather than all frames, regardless of value of
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
609 `iswitchb-all-frames'."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
610 (let ((iswitchb-bufs-in-frame nil))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
611 (walk-windows 'iswitchb-get-bufname nil
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
612 (if current
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
613 nil
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
614 iswitchb-all-frames))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
615 iswitchb-bufs-in-frame))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
617
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
618 (defun iswitchb-get-bufname (win)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
619 "Used by `iswitchb-get-buffers-in-frames' to walk through all windows."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
620 (setq iswitchb-bufs-in-frame
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
621 (cons (buffer-name (window-buffer win))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
622 iswitchb-bufs-in-frame)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
623
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
624
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
625 ;;; FIND MATCHING BUFFERS
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
626
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
627 (defun iswitchb-set-matches ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
628 "Set `iswitchb-matches' to the list of buffers matching prompt."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
629 (if iswitchb-rescan
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
630 (setq iswitchb-matches
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
631 (let* ((buflist iswitchb-buflist)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
632 )
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
633 (if (> (length iswitchb-text) 0)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
634 (iswitchb-get-matched-buffers iswitchb-text iswitchb-regexp
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
635 buflist)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
636 ;; else no text, no matches
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
637 nil)))))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
638
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
639 (defun iswitchb-get-matched-buffers (regexp &optional string-format buffer-list)
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
640 "Return matched buffers.
17618
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
641 If STRING-FORMAT is non-nil, consider REGEXP as string.
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
642 BUFFER-LIST can be list of buffers or list of strings."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
643 (let* ((case-fold-search iswitchb-case)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
644 ;; need reverse since we are building up list backwards
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
645 (list (reverse buffer-list))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
646 (do-string (stringp (car list)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
647 name
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
648 ret
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
649 )
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
650 (mapcar
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
651 (function
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
652 (lambda (x)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
653
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
654 (if do-string
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
655 (setq name x) ;We already have the name
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
656 (setq name (buffer-name x)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
657
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
658 (cond
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
659 ((and (or (and string-format (string-match regexp name))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
660 (and (null string-format)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
661 (string-match (regexp-quote regexp) name)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
662
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
663 ;; todo (not (iswitchb-ignore-buffername-p name))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
664 )
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
665 (setq ret (cons name ret))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
666 ))))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
667 list)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
668 ret
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
669 ))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
670
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
671
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
672
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
673
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
674 (defun iswitchb-ignore-buffername-p (bufname)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
675 "Return t if the buffer BUFNAME should be ignored."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
676 (let ((data (match-data))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
677 (re-list iswitchb-buffer-ignore)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
678 ignorep
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
679 nextstr
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
680 )
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
681 (while re-list
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
682 (setq nextstr (car re-list))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
683 (cond
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
684 ((stringp nextstr)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
685 (if (string-match nextstr bufname)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
686 (progn
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
687 (setq ignorep t)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
688 (setq re-list nil))))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
689 ((fboundp nextstr)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
690 (if (funcall nextstr bufname)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
691 (progn
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
692 (setq ignorep t)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
693 (setq re-list nil))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
694 ))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
695 )
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
696 (setq re-list (cdr re-list)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
697 (store-match-data data)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
698
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
699 ;; return the result
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
700 ignorep)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
701 )
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
702
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
703
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
704
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
705 (defun iswitchb-word-matching-substring (word)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
706 "Return part of WORD before 1st match to `iswitchb-change-word-sub'.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
707 If `iswitchb-change-word-sub' cannot be found in WORD, return nil."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
708 (let ((case-fold-search iswitchb-case))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
709 (let ((m (string-match iswitchb-change-word-sub word)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
710 (if m
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
711 (substring word m)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
712 ;; else no match
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
713 nil))))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
714
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
715
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
716
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
717
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
718
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
719
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
720 (defun iswitchb-find-common-substring (lis subs)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
721 "Return common string following SUBS in each element of LIS."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
722 (let (res
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
723 alist
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
724 iswitchb-change-word-sub
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
725 )
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
726 (setq iswitchb-change-word-sub
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
727 (if iswitchb-regexp
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
728 subs
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
729 (regexp-quote subs)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
730 (setq res (mapcar 'iswitchb-word-matching-substring lis))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
731 (setq res (delq nil res)) ;; remove any nil elements (shouldnt happen)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
732 (setq alist (mapcar 'iswitchb-makealist res)) ;; could use an OBARRAY
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 ;; try-completion returns t if there is an exact match.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
735 (let ((completion-ignore-case iswitchb-case))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
736
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
737 (try-completion subs alist)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
738 )))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
739
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
740
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
741 (defun iswitchb-makealist (res)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
742 "Return dotted pair (RES . 1)."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
743 (cons res 1))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
744
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
745 ;; from Wayne Mesard <wmesard@esd.sgi.com>
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
746 (defun iswitchb-rotate-list (lis)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
747 "Destructively removes the last element from LIS.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
748 Return the modified list with the last element prepended to it."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
749 (if (<= (length lis) 1)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
750 lis
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
751 (let ((las lis)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
752 (prev lis))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
753 (while (consp (cdr las))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
754 (setq prev las
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
755 las (cdr las)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
756 (setcdr prev nil)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
757 (cons (car las) lis))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
758 ))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
759
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
760
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
761 (defun iswitchb-completion-help ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
762 "Show possible completions in a *Buffer Completions* buffer."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
763 ;; we could allow this buffer to be used to select match, but I think
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
764 ;; choose-completion-string will need redifining, so it just inserts
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
765 ;; choice with out any previous input.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
766 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
767 (let ((completion-setup-hook nil) ;disable fancy highlight/selection.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
768 )
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
769 (with-output-to-temp-buffer "*Buffer Completions*"
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
770 (if iswitchb-xemacs
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 ;; XEmacs extents are put on by default, doesn't seem to be
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
773 ;; any way of switching them off.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
774 (display-completion-list (if iswitchb-matches
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
775 iswitchb-matches
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
776 iswitchb-buflist)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
777 :help-string "iswitchb "
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
778 :activate-callback
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
779 '(lambda (x y z)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
780 (message "doesnt work yet, sorry!")))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
781 ;; else running Emacs
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
782 (display-completion-list (if iswitchb-matches
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
783 iswitchb-matches
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
784 iswitchb-buflist))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
785 ))))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
786
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
787 ;;; VISIT CHOSEN BUFFER
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
788 (defun iswitchb-visit-buffer (buffer)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
789 "Visit buffer named BUFFER according to `iswitchb-method'."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
790 (let* (win newframe)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
791 (cond
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
792 ((eq iswitchb-method 'samewindow)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
793 (switch-to-buffer buffer))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
794
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
795 ((memq iswitchb-method '(always-frame maybe-frame))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
796 (cond
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
797 ((and (setq win (iswitchb-window-buffer-p buffer))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
798 (or (eq iswitchb-method 'always-frame)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
799 (y-or-n-p "Jump to frame? ")))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
800 (setq newframe (window-frame win))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
801 (raise-frame newframe)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
802 (select-frame newframe)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
803 (select-window win)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
804 (if (not iswitchb-xemacs)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
805 ;; reposition mouse to make frame active. not needed in XEmacs
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
806 ;; This line came from the other-frame defun in Emacs.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
807 (set-mouse-position (selected-frame) (1- (frame-width)) 0))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
808 )
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
809 (t
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
810 ;; No buffer in other frames...
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
811 (switch-to-buffer buffer)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
812 )))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
813
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
814
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
815
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
816 ((eq iswitchb-method 'otherwindow)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
817 (switch-to-buffer-other-window buffer))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
818
17618
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
819 ((eq iswitchb-method 'display)
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
820 (display-buffer buffer))
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
821
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
822 ((eq iswitchb-method 'otherframe)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
823 (progn
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
824 (switch-to-buffer-other-frame buffer)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
825 (if (not iswitchb-xemacs)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
826 (set-mouse-position (selected-frame) (1- (frame-width)) 0))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
827 )
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
828 ) )))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
829
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
830 (defun iswitchb-possible-new-buffer (buf)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
831 "Possibly create and visit a new buffer called BUF."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
832
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
833 (let ((newbufcreated))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
834 (if (and iswitchb-newbuffer
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
835 (or
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
836 (not iswitchb-prompt-newbuffer)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
837
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
838 (and iswitchb-prompt-newbuffer
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
839 (y-or-n-p
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
840 (format
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
841 "No buffer matching `%s', create one? "
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
842 buf)))))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
843 ;; then create a new buffer
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
844 (progn
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
845 (setq newbufcreated (get-buffer-create buf))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
846 (if (fboundp 'set-buffer-major-mode)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
847 (set-buffer-major-mode newbufcreated))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
848 (iswitchb-visit-buffer newbufcreated))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
849 ;; else wont create new buffer
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
850 (message (format "no buffer matching `%s'" buf))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
851 )))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
852
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
853 (defun iswitchb-window-buffer-p (buffer)
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
854 "Return window pointer if BUFFER is visible in another frame.
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
855 If BUFFER is visible in the current frame, return nil."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
856 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
857 (let ((blist (iswitchb-get-buffers-in-frames 'current)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
858 ;;If the buffer is visible in current frame, return nil
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
859 (if (memq buffer blist)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
860 nil
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
861 ;; maybe in other frame...
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
862 (get-buffer-window buffer 'visible)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
863 )))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
864
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
865 ;;;###autoload
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
866 (defun iswitchb-default-keybindings ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
867 "Set up default keybindings for `iswitchb-buffer'.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
868 Call this function to override the normal bindings."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
869 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
870 (global-set-key "b" 'iswitchb-buffer)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
871 (global-set-key "4b" 'iswitchb-buffer-other-window)
17618
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
872 (global-set-key "4" 'iswitchb-display-buffer)
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
873 (global-set-key "5b" 'iswitchb-buffer-other-frame))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
874
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
875
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
876
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
877 ;;;###autoload
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
878 (defun iswitchb-buffer ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
879 "Switch to another buffer.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
880
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
881 The buffer name is selected interactively by typing a substring. The
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
882 buffer is displayed according to `iswitchb-default-method' -- the
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
883 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
884 in another frame.
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
885 For details of keybindings, do `\\[describe-function] iswitchb'."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
886 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
887 (setq iswitchb-method iswitchb-default-method)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
888 (iswitchb-entry))
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
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
891 ;;;###autoload
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
892 (defun iswitchb-buffer-other-window ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
893 "Switch to another buffer and show it in another window.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
894 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
895 For details of keybindings, do `\\[describe-function] iswitchb'."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
896 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
897 (setq iswitchb-method 'otherwindow)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
898 (iswitchb-entry))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
899
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
900
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
901
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
902 ;;;###autoload
17618
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
903 (defun iswitchb-display-buffer ()
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
904 "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
905 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
906 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
907 (interactive)
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
908 (setq iswitchb-method 'display)
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
909 (iswitchb-entry))
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
910
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
911
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
912
8d33666b1152 (iswitchb-visit-buffer): Handle `display' alternative.
Richard M. Stallman <rms@gnu.org>
parents: 17617
diff changeset
913 ;;;###autoload
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
914 (defun iswitchb-buffer-other-frame ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
915 "Switch to another buffer and show it in another frame.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
916 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
917 For details of keybindings, do `\\[describe-function] iswitchb'."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
918 (interactive)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
919 (setq iswitchb-method 'otherframe)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
920 (iswitchb-entry))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
921
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
922
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
923
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
924 (defun iswitchb-entry ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
925 "Simply fall into `iswitchb' -- the main function."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
926 (iswitchb))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
927
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
928
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
929
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
930
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
931
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
932 ;;; XEMACS HACK FOR SHOWING DEFAULT BUFFER
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
933
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
934 ;; The first time we enter the minibuffer, Emacs puts up the default
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
935 ;; buffer to switch to, but XEmacs doesnt -- presumably there is a
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
936 ;; subtle difference in the two, either in icomplete or somewhere
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
937 ;; else. The default is shown for both whenever we delete all of our
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
938 ;; text though, indicating its just a problem the first time we enter
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
939 ;; the function. To solve this, we use another entry hook for emacs
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
940 ;; to show the default the first time we enter the minibuffer.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
941
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
942 (defun iswitchb-init-Xemacs-trick ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
943 "Display default buffer when first entering minibuffer.
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
944 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
945 (if (iswitchb-entryfn-p)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
946 (progn
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
947 (iswitchb-show-default-buffer)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
948 (goto-char (point-min)))))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
949
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
950 ;; add this hook for Xemacs only.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
951 (if iswitchb-xemacs
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
952 (add-hook 'iswitchb-minibuffer-setup-hook
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
953 'iswitchb-init-Xemacs-trick))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
954
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
955
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
956 ;;; XEMACS / BACKSPACE key
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
957 ;; For some reason, if the backspace key is pressed in xemacs, the
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
958 ;; line gets confused, so I've added a simple key definition to make
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
959 ;; backspace act like the normal delete key.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
960
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
961 (defun iswitchb-xemacs-backspacekey ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
962 "Bind backspace to `backward-delete-char'."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
963 (define-key iswitchb-mode-map '[backspace] 'backward-delete-char)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
964 (define-key iswitchb-mode-map '[(meta backspace)] 'backward-kill-word)
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
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
967
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
968 (if iswitchb-xemacs
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
969 (add-hook 'iswitchb-define-mode-map-hook
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
970 'iswitchb-xemacs-backspacekey))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
971
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
972
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
973
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
974 ;;; ICOMPLETE TYPE CODE
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
975
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
976 (defun iswitchb-exhibit ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
977 "Find matching buffers and display a list in the minibuffer.
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
978 Copied from `icomplete-exhibit' with two changes:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
979 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
980 2. It calls my completion routine rather than the standard completion."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
981
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
982 (if iswitchb-use-mycompletion
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
983 (let ((contents (buffer-substring (point-min)(point-max)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
984 (buffer-undo-list t))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
985 (save-excursion
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
986 (goto-char (point-max))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
987 ; Register the end of input, so we
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
988 ; know where the extra stuff
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
989 ; (match-status info) begins:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
990 (if (not (boundp 'iswitchb-eoinput))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
991 ;; In case it got wiped out by major mode business:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
992 (make-local-variable 'iswitchb-eoinput))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
993 (setq iswitchb-eoinput (point))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
994 ;; Update the list of matches
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
995 (setq iswitchb-text contents)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
996 (iswitchb-set-matches)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
997 (setq iswitchb-rescan t)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
998 (iswitchb-set-common-completion)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
999
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1000 ;; Insert the match-status information:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1001 (if (> (point-max) 1)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1002 (insert-string
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1003 (iswitchb-completions
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1004 contents
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1005 minibuffer-completion-table
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1006 minibuffer-completion-predicate
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1007 (not minibuffer-completion-confirm)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1008 ;; else put in default
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1009 (iswitchb-show-default-buffer))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1010 ))))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1011
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1012 (defun iswitchb-show-default-buffer ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1013 "Insert the default buffer to switch to."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1014 ;; insert done this way to preserve any text-propertes.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1015 (insert (concat " {" iswitchb-default-buffer "} [Default]")))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1016
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1017 (defun iswitchb-completions
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1018 (name candidates predicate require-match)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1019 "Return the string that is displayed after the user's text.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1020 Modified from `icomplete-completions'."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1021
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1022 (let ((comps iswitchb-matches)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1023 ; "-determined" - only one candidate
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1024 (open-bracket-determined (if require-match "(" "["))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1025 (close-bracket-determined (if require-match ")" "]"))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1026 ;"-prospects" - more than one candidate
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1027 (open-bracket-prospects "{")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1028 (close-bracket-prospects "}")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1029 first
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1030 )
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1031
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1032 (if (and iswitchb-use-fonts comps)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1033 (progn
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1034 (setq first (car comps))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1035 (setq first (format "%s" first))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1036 (put-text-property 0 (length first) 'face
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1037 (if (eq (length comps) 1)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1038 'font-lock-comment-face
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1039 'font-lock-function-name-face)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1040 first)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1041 (setq comps (cons first (cdr comps)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1042 ))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1043
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1044 (cond ((null comps) (format " %sNo match%s"
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1045 open-bracket-determined
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1046 close-bracket-determined))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1047
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1048 ((null (cdr comps)) ;one match
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1049 (concat (if (and (> (length (car comps))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1050 (length name)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1051 (concat open-bracket-determined
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1052 ;; when there is one match, show the
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1053 ;; matching buffer name in full
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1054 (car comps)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1055 close-bracket-determined)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1056 "")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1057 (if (not iswitchb-use-fonts) " [Matched]")
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1058 ))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1059 (t ;multiple matches
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1060 (let* (
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1061 ;;(most (try-completion name candidates predicate))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1062 (most nil)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1063 (most-len (length most))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1064 most-is-exact
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1065 first
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1066 (alternatives
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1067 (apply
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1068 (function concat)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1069 (cdr (apply
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1070 (function nconc)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1071 (mapcar '(lambda (com)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1072 (if (= (length com) most-len)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1073 ;; Most is one exact match,
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1074 ;; note that and leave out
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1075 ;; for later indication:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1076 (progn
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1077 (setq most-is-exact t)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1078 ())
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1079 (list ","
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1080 (substring com
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1081 most-len))))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1082 comps))))))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1083
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1084 (concat
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1085
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1086 ;; put in common completion item -- what you get by
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1087 ;; pressing tab
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1088 (if (> (length iswitchb-common-match-string) (length name))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1089 (concat open-bracket-determined
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1090 (substring iswitchb-common-match-string
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1091 (length name))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1092 close-bracket-determined)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1093 )
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1094 ;; end of partial matches...
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1095
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1096 ;; think this bit can be ignored.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1097 (and (> most-len (length name))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1098 (concat open-bracket-determined
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1099 (substring most (length name))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1100 close-bracket-determined))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1101
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1102 ;; list all alternatives
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1103 open-bracket-prospects
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1104 (if most-is-exact
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1105 (concat "," alternatives)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1106 alternatives)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1107 close-bracket-prospects)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1108 )))
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-minibuffer-setup ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1111 "Set up minibuffer for `iswitchb-buffer'.
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1112 Copied from `icomplete-minibuffer-setup-hook'."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1113 (if (iswitchb-entryfn-p)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1114 (progn
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1115
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1116 (make-local-variable 'iswitchb-use-mycompletion)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1117 (setq iswitchb-use-mycompletion t)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1118 (make-local-hook 'pre-command-hook)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1119 (add-hook 'pre-command-hook
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1120 'iswitchb-pre-command
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1121 nil t)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1122 (make-local-hook 'post-command-hook)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1123 (add-hook 'post-command-hook
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1124 'iswitchb-post-command
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1125 nil t)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1126
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1127 (run-hooks 'iswitchb-minibuffer-setup-hook)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1128 )
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1129 ))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1130
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1131
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1132 (defun iswitchb-pre-command ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1133 "Run before command in `iswitchb-buffer'."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1134 (iswitchb-tidy))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1135
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1136
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1137 (defun iswitchb-post-command ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1138 "Run after command in `iswitchb-buffer'."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1139 (iswitchb-exhibit)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1140 )
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1141
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1142
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1143
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1144 (defun iswitchb-tidy ()
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1145 "Remove completions display, if any, prior to new user input.
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1146 Copied from `icomplete-tidy'."
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1147
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1148 (if (and (boundp 'iswitchb-eoinput)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1149 iswitchb-eoinput)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1150
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1151 (if (> iswitchb-eoinput (point-max))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1152 ;; Oops, got rug pulled out from under us - reinit:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1153 (setq iswitchb-eoinput (point-max))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1154 (let ((buffer-undo-list buffer-undo-list )) ; prevent entry
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1155 (delete-region iswitchb-eoinput (point-max))))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1156
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1157 ;; Reestablish the local variable 'cause minibuffer-setup is weird:
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1158 (make-local-variable 'iswitchb-eoinput)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1159 (setq iswitchb-eoinput 1)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1160
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1161
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1162 (defun iswitchb-entryfn-p ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1163 "Return non-nil if `this-command' shows we are using `iswitchb-buffer'."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1164 (and (symbolp this-command) ; ignore lambda functions
17619
c8e876b73dcd (iswitchb-entryfn-p): Use memq, not member.
Richard M. Stallman <rms@gnu.org>
parents: 17618
diff changeset
1165 (memq this-command
c8e876b73dcd (iswitchb-entryfn-p): Use memq, not member.
Richard M. Stallman <rms@gnu.org>
parents: 17618
diff changeset
1166 '(iswitchb-buffer
c8e876b73dcd (iswitchb-entryfn-p): Use memq, not member.
Richard M. Stallman <rms@gnu.org>
parents: 17618
diff changeset
1167 iswitchb-buffer-other-frame
c8e876b73dcd (iswitchb-entryfn-p): Use memq, not member.
Richard M. Stallman <rms@gnu.org>
parents: 17618
diff changeset
1168 iswitchb-display-buffer
c8e876b73dcd (iswitchb-entryfn-p): Use memq, not member.
Richard M. Stallman <rms@gnu.org>
parents: 17618
diff changeset
1169 iswitchb-buffer-other-window))))
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1170
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1171 (defun iswitchb-summaries-to-end ()
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1172 "Move the summaries to the end of the list.
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1173 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
1174 `iswitchb-make-buflist-hook'. Any buffer matching the regexps
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1175 `Summary' or `output\*$'are put to the end of the list."
17616
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1176 (let ((summaries (delq nil (mapcar
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1177 '(lambda (x)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1178 (if (or
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1179 (string-match "Summary" x)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1180 (string-match "output\\*$" x))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1181 x))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1182 buflist)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1183 )))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1184
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1185 (mapcar 'iswitchb-to-end summaries)))
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1186
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1187
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1188
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1189 ;;; HOOKS
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1190 (add-hook 'minibuffer-setup-hook 'iswitchb-minibuffer-setup)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1191
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1192 (provide 'iswitchb)
a64126a1f870 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1193
17617
4851316697c1 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17616
diff changeset
1194 ;;; iswitchb.el ends here