annotate lisp/ebuff-menu.el @ 28285:c54d62415e91

Changed the type of parameter passed to the function defined by `quickurl-format-function'. Before only the text of the URL was passed. Now the whole URL structure is passed and the function is responsible for extracting the parts it requires. Changed the default of `quickurl-format-function' accordingly. (quickurl-insert): Changed the `funcall' of `quickurl-format-function' to match the above change. (quickurl-list-insert): Changed the `url' case so that it makes use of `quickurl-format-function', previous to this the format was hard wired.
author Gerd Moellmann <gerd@gnu.org>
date Thu, 23 Mar 2000 13:53:14 +0000
parents 62da6fd2d526
children 5066b4e03c62
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 475
diff changeset
1 ;;; ebuff-menu.el --- electric-buffer-list mode
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 475
diff changeset
2
7300
cc7cd83ccf3f Update copyright.
Karl Heuer <kwzh@gnu.org>
parents: 7006
diff changeset
3 ;; Copyright (C) 1985, 1986, 1994 Free Software Foundation, Inc.
846
20674ae6bf52 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 807
diff changeset
4
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
5 ;; Author: Richard Mlynarik <mly@ai.mit.edu>
21045
cc3f3c1ea725 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 18383
diff changeset
6 ;; Maintainer: FSF
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
7
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
8 ;; This file is part of GNU Emacs.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
9
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
10 ;; GNU Emacs is free software; you can redistribute it and/or modify
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
11 ;; it under the terms of the GNU General Public License as published by
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
12 ;; the Free Software Foundation; either version 2, or (at your option)
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13 ;; any later version.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15 ;; GNU Emacs is distributed in the hope that it will be useful,
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
18 ;; GNU General Public License for more details.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
19
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12568
diff changeset
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12568
diff changeset
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12568
diff changeset
23 ;; Boston, MA 02111-1307, USA.
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
24
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
25 ;;; Commentary:
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
26
2307
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2026
diff changeset
27 ;; Who says one can't have typeout windows in GNU Emacs? The entry
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2026
diff changeset
28 ;; point, `electric-buffer-list' works like ^r select buffer from the
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2026
diff changeset
29 ;; ITS Emacs lunar or tmacs libraries.
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
30
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
31 ;;; Code:
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
32
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
33 (require 'electric)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
34
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
35 ;; this depends on the format of list-buffers (from src/buffer.c) and
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
36 ;; on stuff in lisp/buff-menu.el
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
37
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
38 (defvar electric-buffer-menu-mode-map nil)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
39
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
40 ;;;###autoload
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
41 (defun electric-buffer-list (arg)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
42 "Pops up a buffer describing the set of Emacs buffers.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
43 Vaguely like ITS lunar select buffer; combining typeoutoid buffer
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
44 listing with menuoid buffer selection.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
45
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
46 If the very next character typed is a space then the buffer list
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
47 window disappears. Otherwise, one may move around in the buffer list
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
48 window, marking buffers to be selected, saved or deleted.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
49
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
50 To exit and select a new buffer, type a space when the cursor is on
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
51 the appropriate line of the buffer-list window. Other commands are
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
52 much like those of buffer-menu-mode.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
53
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
54 Calls value of `electric-buffer-menu-mode-hook' on entry if non-nil.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
55
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
56 \\{electric-buffer-menu-mode-map}"
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
57 (interactive "P")
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
58 (let (select buffer)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
59 (save-window-excursion
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
60 (save-window-excursion (list-buffers arg))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
61 (setq buffer (window-buffer (Electric-pop-up-window "*Buffer List*")))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
62 (unwind-protect
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
63 (progn
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
64 (set-buffer buffer)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
65 (Electric-buffer-menu-mode)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
66 (setq select
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
67 (catch 'electric-buffer-menu-select
8122
2fae14e8ae5d (electric-buffer-list): Change prompt message.
Richard M. Stallman <rms@gnu.org>
parents: 7300
diff changeset
68 (message "<<< Press Return to bury the buffer list >>>")
2026
3514a9bf50c5 (electric-buffer-list): Handle any kind of event.
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
69 (if (eq (setq unread-command-events (list (read-event)))
3514a9bf50c5 (electric-buffer-list): Handle any kind of event.
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
70 ?\ )
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1607
diff changeset
71 (progn (setq unread-command-events nil)
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
72 (throw 'electric-buffer-menu-select nil)))
12568
94ee086557db (electric-buffer-list): Save point before
Karl Heuer <kwzh@gnu.org>
parents: 11275
diff changeset
73 (let ((start-point (point))
94ee086557db (electric-buffer-list): Save point before
Karl Heuer <kwzh@gnu.org>
parents: 11275
diff changeset
74 (first (progn (goto-char (point-min))
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
75 (forward-line 2)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
76 (point)))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
77 (last (progn (goto-char (point-max))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
78 (forward-line -1)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
79 (point)))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
80 (goal-column 0))
12568
94ee086557db (electric-buffer-list): Save point before
Karl Heuer <kwzh@gnu.org>
parents: 11275
diff changeset
81 ;; Use start-point if it is meaningful.
94ee086557db (electric-buffer-list): Save point before
Karl Heuer <kwzh@gnu.org>
parents: 11275
diff changeset
82 (goto-char (if (or (< start-point first)
94ee086557db (electric-buffer-list): Save point before
Karl Heuer <kwzh@gnu.org>
parents: 11275
diff changeset
83 (> start-point last))
94ee086557db (electric-buffer-list): Save point before
Karl Heuer <kwzh@gnu.org>
parents: 11275
diff changeset
84 first
94ee086557db (electric-buffer-list): Save point before
Karl Heuer <kwzh@gnu.org>
parents: 11275
diff changeset
85 start-point))
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
86 (Electric-command-loop 'electric-buffer-menu-select
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
87 nil
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
88 t
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
89 'electric-buffer-menu-looper
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
90 (cons first last))))))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
91 (set-buffer buffer)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
92 (Buffer-menu-mode)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
93 (bury-buffer buffer)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
94 (message "")))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
95 (if select
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
96 (progn (set-buffer buffer)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
97 (let ((opoint (point-marker)))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
98 (Buffer-menu-execute)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
99 (goto-char (point-min))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
100 (if (prog1 (search-forward "\n>" nil t)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
101 (goto-char opoint) (set-marker opoint nil))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
102 (Buffer-menu-select)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
103 (switch-to-buffer (Buffer-menu-buffer t))))))))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
104
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
105 (defun electric-buffer-menu-looper (state condition)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
106 (cond ((and condition
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
107 (not (memq (car condition) '(buffer-read-only
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
108 end-of-buffer
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
109 beginning-of-buffer))))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
110 (signal (car condition) (cdr condition)))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
111 ((< (point) (car state))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
112 (goto-char (point-min))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
113 (forward-line 2))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
114 ((> (point) (cdr state))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
115 (goto-char (point-max))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
116 (forward-line -1)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
117 (if (pos-visible-in-window-p (point-max))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
118 (recenter -1)))))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
119
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
120 (put 'Electric-buffer-menu-mode 'mode-class 'special)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
121 (defun Electric-buffer-menu-mode ()
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
122 "Major mode for editing a list of buffers.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
123 Each line describes one of the buffers in Emacs.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
124 Letters do not insert themselves; instead, they are commands.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
125 \\<electric-buffer-menu-mode-map>
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
126 \\[keyboard-quit] or \\[Electric-buffer-menu-quit] -- exit buffer menu, returning to previous window and buffer
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
127 configuration. If the very first character typed is a space, it
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
128 also has this effect.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
129 \\[Electric-buffer-menu-select] -- select buffer of line point is on.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
130 Also show buffers marked with m in other windows,
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
131 deletes buffers marked with \"D\", and saves those marked with \"S\".
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
132 \\[Buffer-menu-mark] -- mark buffer to be displayed.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
133 \\[Buffer-menu-not-modified] -- clear modified-flag on that buffer.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
134 \\[Buffer-menu-save] -- mark that buffer to be saved.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
135 \\[Buffer-menu-delete] or \\[Buffer-menu-delete-backwards] -- mark that buffer to be deleted.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
136 \\[Buffer-menu-unmark] -- remove all kinds of marks from current line.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
137 \\[Electric-buffer-menu-mode-view-buffer] -- view buffer, returning when done.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
138 \\[Buffer-menu-backup-unmark] -- back up a line and remove marks.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
139
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
140 \\{electric-buffer-menu-mode-map}
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
141
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
142 Entry to this mode via command electric-buffer-list calls the value of
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
143 electric-buffer-menu-mode-hook if it is non-nil."
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
144 (kill-all-local-variables)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
145 (use-local-map electric-buffer-menu-mode-map)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
146 (setq mode-name "Electric Buffer Menu")
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
147 (setq mode-line-buffer-identification "Electric Buffer List")
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
148 (make-local-variable 'Helper-return-blurb)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
149 (setq Helper-return-blurb "return to buffer editing")
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
150 (setq truncate-lines t)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
151 (setq buffer-read-only t)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
152 (setq major-mode 'Electric-buffer-menu-mode)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
153 (goto-char (point-min))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
154 (if (search-forward "\n." nil t) (forward-char -1))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
155 (run-hooks 'electric-buffer-menu-mode-hook))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
156
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
157 ;; generally the same as Buffer-menu-mode-map
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
158 ;; (except we don't indirect to global-map)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
159 (put 'Electric-buffer-menu-undefined 'suppress-keymap t)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
160 (if electric-buffer-menu-mode-map
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
161 nil
23007
62da6fd2d526 (electric-buffer-menu-mode-map): Don't wipe out all Meta keys.
Richard M. Stallman <rms@gnu.org>
parents: 21045
diff changeset
162 (let ((map (make-keymap)))
2397
2b34a2ef4d63 (electric-buffer-menu-mode-map): fillarray isn't a valid operation on maps
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
163 (fillarray (car (cdr map)) 'Electric-buffer-menu-undefined)
23007
62da6fd2d526 (electric-buffer-menu-mode-map): Don't wipe out all Meta keys.
Richard M. Stallman <rms@gnu.org>
parents: 21045
diff changeset
164 (define-key map "\e" nil)
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
165 (define-key map "\C-z" 'suspend-emacs)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
166 (define-key map "v" 'Electric-buffer-menu-mode-view-buffer)
918
94b50bbd43c3 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 917
diff changeset
167 (define-key map (char-to-string help-char) 'Helper-help)
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
168 (define-key map "?" 'Helper-describe-bindings)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
169 (define-key map "\C-c" nil)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
170 (define-key map "\C-c\C-c" 'Electric-buffer-menu-quit)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
171 (define-key map "\C-]" 'Electric-buffer-menu-quit)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
172 (define-key map "q" 'Electric-buffer-menu-quit)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
173 (define-key map " " 'Electric-buffer-menu-select)
8122
2fae14e8ae5d (electric-buffer-list): Change prompt message.
Richard M. Stallman <rms@gnu.org>
parents: 7300
diff changeset
174 (define-key map "\C-m" 'Electric-buffer-menu-select)
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
175 (define-key map "\C-l" 'recenter)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
176 (define-key map "s" 'Buffer-menu-save)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
177 (define-key map "d" 'Buffer-menu-delete)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
178 (define-key map "k" 'Buffer-menu-delete)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
179 (define-key map "\C-d" 'Buffer-menu-delete-backwards)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
180 ;(define-key map "\C-k" 'Buffer-menu-delete)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
181 (define-key map "\177" 'Buffer-menu-backup-unmark)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
182 (define-key map "~" 'Buffer-menu-not-modified)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
183 (define-key map "u" 'Buffer-menu-unmark)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
184 (let ((i ?0))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
185 (while (<= i ?9)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
186 (define-key map (char-to-string i) 'digit-argument)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
187 (define-key map (concat "\e" (char-to-string i)) 'digit-argument)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
188 (setq i (1+ i))))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
189 (define-key map "-" 'negative-argument)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
190 (define-key map "\e-" 'negative-argument)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
191 (define-key map "m" 'Buffer-menu-mark)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
192 (define-key map "\C-u" 'universal-argument)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
193 (define-key map "\C-p" 'previous-line)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
194 (define-key map "\C-n" 'next-line)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
195 (define-key map "p" 'previous-line)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
196 (define-key map "n" 'next-line)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
197 (define-key map "\C-v" 'scroll-up)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
198 (define-key map "\ev" 'scroll-down)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
199 (define-key map ">" 'scroll-right)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
200 (define-key map "<" 'scroll-left)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
201 (define-key map "\e\C-v" 'scroll-other-window)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
202 (define-key map "\e>" 'end-of-buffer)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
203 (define-key map "\e<" 'beginning-of-buffer)
11275
53f0ebe096f5 (electric-buffer-menu-mode-map): Undefine ESC ESC
Richard M. Stallman <rms@gnu.org>
parents: 10115
diff changeset
204 (define-key map "\e\e" nil)
10115
e55ee438bd10 (electric-buffer-menu-mode-map):
Richard M. Stallman <rms@gnu.org>
parents: 8122
diff changeset
205 (define-key map "\e\e\e" 'Electric-buffer-menu-quit)
e55ee438bd10 (electric-buffer-menu-mode-map):
Richard M. Stallman <rms@gnu.org>
parents: 8122
diff changeset
206 (define-key map [escape escape escape] 'Electric-buffer-menu-quit)
7006
5f1e5be68fcd (Electric-buffer-menu-mouse-select): New function.
Karl Heuer <kwzh@gnu.org>
parents: 2397
diff changeset
207 (define-key map [mouse-2] 'Electric-buffer-menu-mouse-select)
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
208 (setq electric-buffer-menu-mode-map map)))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
209
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
210 (defun Electric-buffer-menu-exit ()
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
211 (interactive)
2026
3514a9bf50c5 (electric-buffer-list): Handle any kind of event.
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
212 (setq unread-command-events (listify-key-sequence (this-command-keys)))
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
213 ;; for robustness
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
214 (condition-case ()
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
215 (throw 'electric-buffer-menu-select nil)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
216 (error (Buffer-menu-mode)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
217 (other-buffer))))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
218
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
219 (defun Electric-buffer-menu-select ()
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
220 "Leave Electric Buffer Menu, selecting buffers and executing changes.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
221 Saves buffers marked \"S\". Deletes buffers marked \"K\".
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
222 Selects buffer at point and displays buffers marked \">\" in other windows."
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
223 (interactive)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
224 (throw 'electric-buffer-menu-select (point)))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
225
7006
5f1e5be68fcd (Electric-buffer-menu-mouse-select): New function.
Karl Heuer <kwzh@gnu.org>
parents: 2397
diff changeset
226 (defun Electric-buffer-menu-mouse-select (event)
5f1e5be68fcd (Electric-buffer-menu-mouse-select): New function.
Karl Heuer <kwzh@gnu.org>
parents: 2397
diff changeset
227 (interactive "e")
5f1e5be68fcd (Electric-buffer-menu-mouse-select): New function.
Karl Heuer <kwzh@gnu.org>
parents: 2397
diff changeset
228 (select-window (posn-window (event-end event)))
5f1e5be68fcd (Electric-buffer-menu-mouse-select): New function.
Karl Heuer <kwzh@gnu.org>
parents: 2397
diff changeset
229 (set-buffer (window-buffer (selected-window)))
5f1e5be68fcd (Electric-buffer-menu-mouse-select): New function.
Karl Heuer <kwzh@gnu.org>
parents: 2397
diff changeset
230 (goto-char (posn-point (event-end event)))
5f1e5be68fcd (Electric-buffer-menu-mouse-select): New function.
Karl Heuer <kwzh@gnu.org>
parents: 2397
diff changeset
231 (throw 'electric-buffer-menu-select (point)))
5f1e5be68fcd (Electric-buffer-menu-mouse-select): New function.
Karl Heuer <kwzh@gnu.org>
parents: 2397
diff changeset
232
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
233 (defun Electric-buffer-menu-quit ()
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
234 "Leave Electric Buffer Menu, restoring previous window configuration.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
235 Does not execute select, save, or delete commands."
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
236 (interactive)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
237 (throw 'electric-buffer-menu-select nil))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
238
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
239 (defun Electric-buffer-menu-undefined ()
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
240 (interactive)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
241 (ding)
14310
49af6e2bfaa8 (Electric-buffer-menu-undefined): Pass proper format string to message.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
242 (message "%s"
49af6e2bfaa8 (Electric-buffer-menu-undefined): Pass proper format string to message.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
243 (if (and (eq (key-binding "\C-c\C-c") 'Electric-buffer-menu-quit)
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
244 (eq (key-binding " ") 'Electric-buffer-menu-select)
919
567b06901789 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 918
diff changeset
245 (eq (key-binding (char-to-string help-char)) 'Helper-help)
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
246 (eq (key-binding "?") 'Helper-describe-bindings))
916
938f166a0874 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 915
diff changeset
247 (substitute-command-keys "Type C-c C-c to exit, Space to select, \\[Helper-help] for help, ? for commands")
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
248 (substitute-command-keys "\
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
249 Type \\[Electric-buffer-menu-quit] to exit, \
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
250 \\[Electric-buffer-menu-select] to select, \
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
251 \\[Helper-help] for help, \\[Helper-describe-bindings] for commands.")))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
252 (sit-for 4))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
253
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
254 (defun Electric-buffer-menu-mode-view-buffer ()
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
255 "View buffer on current line in Electric Buffer Menu.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
256 Returns to Electric Buffer Menu when done."
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
257 (interactive)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
258 (let ((bufnam (Buffer-menu-buffer nil)))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
259 (if bufnam
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
260 (view-buffer bufnam)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
261 (ding)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
262 (message "Buffer %s does not exist!" bufnam)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
263 (sit-for 4))))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
264
18383
11218164bc54 Add provide call.
Richard M. Stallman <rms@gnu.org>
parents: 14310
diff changeset
265 (provide 'ebuff-menu)
11218164bc54 Add provide call.
Richard M. Stallman <rms@gnu.org>
parents: 14310
diff changeset
266
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 475
diff changeset
267 ;;; ebuff-menu.el ends here