annotate lisp/ebuff-menu.el @ 62149:e64f1e2ecec2

(easy-mmode-pretty-mode-name): Explain more about the LIGHTER arg's usage in the doc string. Add commentary to clarify what the code does. Fix the regexp that strips whitespace from LIGHTER. Quote LIGHTER before using it, since it could have characters special to regular expressions.
author Eli Zaretskii <eliz@gnu.org>
date Sat, 07 May 2005 15:05:00 +0000
parents 1312906d3476
children 3b4e0fdb401f cb67264d6096
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
31559
5066b4e03c62 Add Keywords:.
Dave Love <fx@gnu.org>
parents: 23007
diff changeset
7 ;; Keywords: convenience
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
8
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
9 ;; This file is part of GNU Emacs.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
10
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
11 ;; GNU Emacs is free software; you can redistribute it and/or modify
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
12 ;; 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
13 ;; the Free Software Foundation; either version 2, or (at your option)
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14 ;; any later version.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
19 ;; GNU General Public License for more details.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
21 ;; 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
22 ;; 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
23 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12568
diff changeset
24 ;; Boston, MA 02111-1307, USA.
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
25
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
26 ;;; Commentary:
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
27
2307
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2026
diff changeset
28 ;; 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
29 ;; 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
30 ;; ITS Emacs lunar or tmacs libraries.
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
31
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
32 ;;; Code:
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
33
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
34 (require 'electric)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
35
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
36 ;; this depends on the format of list-buffers (from src/buffer.c) and
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
37 ;; on stuff in lisp/buff-menu.el
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
38
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
39 (defvar electric-buffer-menu-mode-map nil)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
40
58120
9ca7944ad9e9 Doc fixes throughout.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 52401
diff changeset
41 (defvar electric-buffer-menu-mode-hook nil
9ca7944ad9e9 Doc fixes throughout.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 52401
diff changeset
42 "Normal hook run by `electric-buffer-list'.")
9ca7944ad9e9 Doc fixes throughout.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 52401
diff changeset
43
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
44 ;;;###autoload
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
45 (defun electric-buffer-list (arg)
58120
9ca7944ad9e9 Doc fixes throughout.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 52401
diff changeset
46 "Pop up a buffer describing the set of Emacs buffers.
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
47 Vaguely like ITS lunar select buffer; combining typeoutoid buffer
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
48 listing with menuoid buffer selection.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
49
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
50 If the very next character typed is a space then the buffer list
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
51 window disappears. Otherwise, one may move around in the buffer list
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
52 window, marking buffers to be selected, saved or deleted.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
53
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
54 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
55 the appropriate line of the buffer-list window. Other commands are
58120
9ca7944ad9e9 Doc fixes throughout.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 52401
diff changeset
56 much like those of `Buffer-menu-mode'.
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
57
58120
9ca7944ad9e9 Doc fixes throughout.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 52401
diff changeset
58 Run hooks in `electric-buffer-menu-mode-hook' on entry.
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
59
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 41016
diff changeset
60 \\{electric-buffer-menu-mode-map}"
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
61 (interactive "P")
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
62 (let (select buffer)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
63 (save-window-excursion
38928
86b624b00b77 (electric-buffer-list): Use list-buffers-noselect.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31559
diff changeset
64 (setq buffer (list-buffers-noselect arg))
86b624b00b77 (electric-buffer-list): Use list-buffers-noselect.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31559
diff changeset
65 (Electric-pop-up-window buffer)
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
66 (unwind-protect
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
67 (progn
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
68 (set-buffer buffer)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
69 (Electric-buffer-menu-mode)
41016
7cbfb84f7362 (electric-buffer-update-highlight): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38928
diff changeset
70 (electric-buffer-update-highlight)
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
71 (setq select
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
72 (catch 'electric-buffer-menu-select
8122
2fae14e8ae5d (electric-buffer-list): Change prompt message.
Richard M. Stallman <rms@gnu.org>
parents: 7300
diff changeset
73 (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
74 (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
75 ?\ )
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1607
diff changeset
76 (progn (setq unread-command-events nil)
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
77 (throw 'electric-buffer-menu-select nil)))
12568
94ee086557db (electric-buffer-list): Save point before
Karl Heuer <kwzh@gnu.org>
parents: 11275
diff changeset
78 (let ((start-point (point))
94ee086557db (electric-buffer-list): Save point before
Karl Heuer <kwzh@gnu.org>
parents: 11275
diff changeset
79 (first (progn (goto-char (point-min))
50035
af49d6f1e6cc (electric-buffer-list): Respect `Buffer-menu-use-header-line'.
John Paul Wallington <jpw@pobox.com>
parents: 49588
diff changeset
80 (unless Buffer-menu-use-header-line
af49d6f1e6cc (electric-buffer-list): Respect `Buffer-menu-use-header-line'.
John Paul Wallington <jpw@pobox.com>
parents: 49588
diff changeset
81 (forward-line 2))
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
82 (point)))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
83 (last (progn (goto-char (point-max))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
84 (forward-line -1)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
85 (point)))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
86 (goal-column 0))
12568
94ee086557db (electric-buffer-list): Save point before
Karl Heuer <kwzh@gnu.org>
parents: 11275
diff changeset
87 ;; Use start-point if it is meaningful.
94ee086557db (electric-buffer-list): Save point before
Karl Heuer <kwzh@gnu.org>
parents: 11275
diff changeset
88 (goto-char (if (or (< start-point first)
94ee086557db (electric-buffer-list): Save point before
Karl Heuer <kwzh@gnu.org>
parents: 11275
diff changeset
89 (> start-point last))
94ee086557db (electric-buffer-list): Save point before
Karl Heuer <kwzh@gnu.org>
parents: 11275
diff changeset
90 first
94ee086557db (electric-buffer-list): Save point before
Karl Heuer <kwzh@gnu.org>
parents: 11275
diff changeset
91 start-point))
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
92 (Electric-command-loop 'electric-buffer-menu-select
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
93 nil
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
94 t
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
95 'electric-buffer-menu-looper
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
96 (cons first last))))))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
97 (set-buffer buffer)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
98 (Buffer-menu-mode)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
99 (bury-buffer buffer)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
100 (message "")))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
101 (if select
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
102 (progn (set-buffer buffer)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
103 (let ((opoint (point-marker)))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
104 (Buffer-menu-execute)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
105 (goto-char (point-min))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
106 (if (prog1 (search-forward "\n>" nil t)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
107 (goto-char opoint) (set-marker opoint nil))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
108 (Buffer-menu-select)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
109 (switch-to-buffer (Buffer-menu-buffer t))))))))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
110
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
111 (defun electric-buffer-menu-looper (state condition)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
112 (cond ((and condition
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
113 (not (memq (car condition) '(buffer-read-only
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
114 end-of-buffer
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
115 beginning-of-buffer))))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
116 (signal (car condition) (cdr condition)))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
117 ((< (point) (car state))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
118 (goto-char (point-min))
50035
af49d6f1e6cc (electric-buffer-list): Respect `Buffer-menu-use-header-line'.
John Paul Wallington <jpw@pobox.com>
parents: 49588
diff changeset
119 (unless Buffer-menu-use-header-line
af49d6f1e6cc (electric-buffer-list): Respect `Buffer-menu-use-header-line'.
John Paul Wallington <jpw@pobox.com>
parents: 49588
diff changeset
120 (forward-line 2)))
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
121 ((> (point) (cdr state))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
122 (goto-char (point-max))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
123 (forward-line -1)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
124 (if (pos-visible-in-window-p (point-max))
41016
7cbfb84f7362 (electric-buffer-update-highlight): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38928
diff changeset
125 (recenter -1))))
7cbfb84f7362 (electric-buffer-update-highlight): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38928
diff changeset
126 (electric-buffer-update-highlight))
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
127
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
128 (put 'Electric-buffer-menu-mode 'mode-class 'special)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
129 (defun Electric-buffer-menu-mode ()
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
130 "Major mode for editing a list of buffers.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
131 Each line describes one of the buffers in Emacs.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
132 Letters do not insert themselves; instead, they are commands.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
133 \\<electric-buffer-menu-mode-map>
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
134 \\[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
135 configuration. If the very first character typed is a space, it
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
136 also has this effect.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
137 \\[Electric-buffer-menu-select] -- select buffer of line point is on.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
138 Also show buffers marked with m in other windows,
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
139 deletes buffers marked with \"D\", and saves those marked with \"S\".
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
140 \\[Buffer-menu-mark] -- mark buffer to be displayed.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
141 \\[Buffer-menu-not-modified] -- clear modified-flag on that buffer.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
142 \\[Buffer-menu-save] -- mark that buffer to be saved.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
143 \\[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
144 \\[Buffer-menu-unmark] -- remove all kinds of marks from current line.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
145 \\[Electric-buffer-menu-mode-view-buffer] -- view buffer, returning when done.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
146 \\[Buffer-menu-backup-unmark] -- back up a line and remove marks.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
147
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
148 \\{electric-buffer-menu-mode-map}
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
149
58120
9ca7944ad9e9 Doc fixes throughout.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 52401
diff changeset
150 Entry to this mode via command `electric-buffer-list' calls the value of
9ca7944ad9e9 Doc fixes throughout.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 52401
diff changeset
151 `electric-buffer-menu-mode-hook'."
59453
1312906d3476 (Electric-buffer-menu-mode):
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 58120
diff changeset
152 (let ((saved header-line-format))
1312906d3476 (Electric-buffer-menu-mode):
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 58120
diff changeset
153 (kill-all-local-variables)
1312906d3476 (Electric-buffer-menu-mode):
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 58120
diff changeset
154 (setq header-line-format saved))
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
155 (use-local-map electric-buffer-menu-mode-map)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
156 (setq mode-name "Electric Buffer Menu")
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
157 (setq mode-line-buffer-identification "Electric Buffer List")
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
158 (make-local-variable 'Helper-return-blurb)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
159 (setq Helper-return-blurb "return to buffer editing")
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
160 (setq truncate-lines t)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
161 (setq buffer-read-only t)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
162 (setq major-mode 'Electric-buffer-menu-mode)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
163 (goto-char (point-min))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
164 (if (search-forward "\n." nil t) (forward-char -1))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
165 (run-hooks 'electric-buffer-menu-mode-hook))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
166
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
167 ;; generally the same as Buffer-menu-mode-map
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
168 ;; (except we don't indirect to global-map)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
169 (put 'Electric-buffer-menu-undefined 'suppress-keymap t)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
170 (if electric-buffer-menu-mode-map
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
171 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
172 (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
173 (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
174 (define-key map "\e" nil)
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
175 (define-key map "\C-z" 'suspend-emacs)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
176 (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
177 (define-key map (char-to-string help-char) 'Helper-help)
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
178 (define-key map "?" 'Helper-describe-bindings)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
179 (define-key map "\C-c" nil)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
180 (define-key map "\C-c\C-c" 'Electric-buffer-menu-quit)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
181 (define-key map "\C-]" 'Electric-buffer-menu-quit)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
182 (define-key map "q" 'Electric-buffer-menu-quit)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
183 (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
184 (define-key map "\C-m" 'Electric-buffer-menu-select)
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
185 (define-key map "\C-l" 'recenter)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
186 (define-key map "s" 'Buffer-menu-save)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
187 (define-key map "d" 'Buffer-menu-delete)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
188 (define-key map "k" 'Buffer-menu-delete)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
189 (define-key map "\C-d" 'Buffer-menu-delete-backwards)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
190 ;(define-key map "\C-k" 'Buffer-menu-delete)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
191 (define-key map "\177" 'Buffer-menu-backup-unmark)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
192 (define-key map "~" 'Buffer-menu-not-modified)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
193 (define-key map "u" 'Buffer-menu-unmark)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
194 (let ((i ?0))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
195 (while (<= i ?9)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
196 (define-key map (char-to-string i) 'digit-argument)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
197 (define-key map (concat "\e" (char-to-string i)) 'digit-argument)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
198 (setq i (1+ i))))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
199 (define-key map "-" 'negative-argument)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
200 (define-key map "\e-" 'negative-argument)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
201 (define-key map "m" 'Buffer-menu-mark)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
202 (define-key map "\C-u" 'universal-argument)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
203 (define-key map "\C-p" 'previous-line)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
204 (define-key map "\C-n" 'next-line)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
205 (define-key map "p" 'previous-line)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
206 (define-key map "n" 'next-line)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
207 (define-key map "\C-v" 'scroll-up)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
208 (define-key map "\ev" 'scroll-down)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
209 (define-key map ">" 'scroll-right)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
210 (define-key map "<" 'scroll-left)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
211 (define-key map "\e\C-v" 'scroll-other-window)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
212 (define-key map "\e>" 'end-of-buffer)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
213 (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
214 (define-key map "\e\e" nil)
10115
e55ee438bd10 (electric-buffer-menu-mode-map):
Richard M. Stallman <rms@gnu.org>
parents: 8122
diff changeset
215 (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
216 (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
217 (define-key map [mouse-2] 'Electric-buffer-menu-mouse-select)
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
218 (setq electric-buffer-menu-mode-map map)))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 41016
diff changeset
219
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
220 (defun Electric-buffer-menu-exit ()
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
221 (interactive)
2026
3514a9bf50c5 (electric-buffer-list): Handle any kind of event.
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
222 (setq unread-command-events (listify-key-sequence (this-command-keys)))
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
223 ;; for robustness
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
224 (condition-case ()
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
225 (throw 'electric-buffer-menu-select nil)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
226 (error (Buffer-menu-mode)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
227 (other-buffer))))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
228
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
229 (defun Electric-buffer-menu-select ()
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
230 "Leave Electric Buffer Menu, selecting buffers and executing changes.
58120
9ca7944ad9e9 Doc fixes throughout.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 52401
diff changeset
231 Save buffers marked \"S\". Delete buffers marked \"K\".
9ca7944ad9e9 Doc fixes throughout.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 52401
diff changeset
232 Select buffer at point and display buffers marked \">\" in other windows."
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
233 (interactive)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
234 (throw 'electric-buffer-menu-select (point)))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
235
7006
5f1e5be68fcd (Electric-buffer-menu-mouse-select): New function.
Karl Heuer <kwzh@gnu.org>
parents: 2397
diff changeset
236 (defun Electric-buffer-menu-mouse-select (event)
5f1e5be68fcd (Electric-buffer-menu-mouse-select): New function.
Karl Heuer <kwzh@gnu.org>
parents: 2397
diff changeset
237 (interactive "e")
5f1e5be68fcd (Electric-buffer-menu-mouse-select): New function.
Karl Heuer <kwzh@gnu.org>
parents: 2397
diff changeset
238 (select-window (posn-window (event-end event)))
5f1e5be68fcd (Electric-buffer-menu-mouse-select): New function.
Karl Heuer <kwzh@gnu.org>
parents: 2397
diff changeset
239 (set-buffer (window-buffer (selected-window)))
5f1e5be68fcd (Electric-buffer-menu-mouse-select): New function.
Karl Heuer <kwzh@gnu.org>
parents: 2397
diff changeset
240 (goto-char (posn-point (event-end event)))
5f1e5be68fcd (Electric-buffer-menu-mouse-select): New function.
Karl Heuer <kwzh@gnu.org>
parents: 2397
diff changeset
241 (throw 'electric-buffer-menu-select (point)))
5f1e5be68fcd (Electric-buffer-menu-mouse-select): New function.
Karl Heuer <kwzh@gnu.org>
parents: 2397
diff changeset
242
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
243 (defun Electric-buffer-menu-quit ()
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
244 "Leave Electric Buffer Menu, restoring previous window configuration.
58120
9ca7944ad9e9 Doc fixes throughout.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 52401
diff changeset
245 Skip execution of select, save, and delete commands."
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
246 (interactive)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
247 (throw 'electric-buffer-menu-select nil))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
248
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
249 (defun Electric-buffer-menu-undefined ()
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
250 (interactive)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
251 (ding)
14310
49af6e2bfaa8 (Electric-buffer-menu-undefined): Pass proper format string to message.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
252 (message "%s"
49af6e2bfaa8 (Electric-buffer-menu-undefined): Pass proper format string to message.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
253 (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
254 (eq (key-binding " ") 'Electric-buffer-menu-select)
919
567b06901789 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 918
diff changeset
255 (eq (key-binding (char-to-string help-char)) 'Helper-help)
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
256 (eq (key-binding "?") 'Helper-describe-bindings))
916
938f166a0874 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 915
diff changeset
257 (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
258 (substitute-command-keys "\
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
259 Type \\[Electric-buffer-menu-quit] to exit, \
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
260 \\[Electric-buffer-menu-select] to select, \
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
261 \\[Helper-help] for help, \\[Helper-describe-bindings] for commands.")))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
262 (sit-for 4))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
263
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
264 (defun Electric-buffer-menu-mode-view-buffer ()
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
265 "View buffer on current line in Electric Buffer Menu.
58120
9ca7944ad9e9 Doc fixes throughout.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 52401
diff changeset
266 Return to Electric Buffer Menu when done."
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
267 (interactive)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
268 (let ((bufnam (Buffer-menu-buffer nil)))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
269 (if bufnam
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
270 (view-buffer bufnam)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
271 (ding)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
272 (message "Buffer %s does not exist!" bufnam)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
273 (sit-for 4))))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
274
41016
7cbfb84f7362 (electric-buffer-update-highlight): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38928
diff changeset
275 (defvar electric-buffer-overlay nil)
7cbfb84f7362 (electric-buffer-update-highlight): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38928
diff changeset
276 (defun electric-buffer-update-highlight ()
50068
9fa70ec97b76 (electric-buffer-update-highlight): Do nothing
John Paul Wallington <jpw@pobox.com>
parents: 50035
diff changeset
277 (when (eq major-mode 'Electric-buffer-menu-mode)
9fa70ec97b76 (electric-buffer-update-highlight): Do nothing
John Paul Wallington <jpw@pobox.com>
parents: 50035
diff changeset
278 ;; Make sure we have an overlay to use.
9fa70ec97b76 (electric-buffer-update-highlight): Do nothing
John Paul Wallington <jpw@pobox.com>
parents: 50035
diff changeset
279 (or electric-buffer-overlay
9fa70ec97b76 (electric-buffer-update-highlight): Do nothing
John Paul Wallington <jpw@pobox.com>
parents: 50035
diff changeset
280 (progn
9fa70ec97b76 (electric-buffer-update-highlight): Do nothing
John Paul Wallington <jpw@pobox.com>
parents: 50035
diff changeset
281 (make-local-variable 'electric-buffer-overlay)
9fa70ec97b76 (electric-buffer-update-highlight): Do nothing
John Paul Wallington <jpw@pobox.com>
parents: 50035
diff changeset
282 (setq electric-buffer-overlay (make-overlay (point) (point)))))
9fa70ec97b76 (electric-buffer-update-highlight): Do nothing
John Paul Wallington <jpw@pobox.com>
parents: 50035
diff changeset
283 (move-overlay electric-buffer-overlay
9fa70ec97b76 (electric-buffer-update-highlight): Do nothing
John Paul Wallington <jpw@pobox.com>
parents: 50035
diff changeset
284 (save-excursion (beginning-of-line) (point))
9fa70ec97b76 (electric-buffer-update-highlight): Do nothing
John Paul Wallington <jpw@pobox.com>
parents: 50035
diff changeset
285 (save-excursion (end-of-line) (point)))
9fa70ec97b76 (electric-buffer-update-highlight): Do nothing
John Paul Wallington <jpw@pobox.com>
parents: 50035
diff changeset
286 (overlay-put electric-buffer-overlay 'face 'highlight)))
41016
7cbfb84f7362 (electric-buffer-update-highlight): New function.
Richard M. Stallman <rms@gnu.org>
parents: 38928
diff changeset
287
18383
11218164bc54 Add provide call.
Richard M. Stallman <rms@gnu.org>
parents: 14310
diff changeset
288 (provide 'ebuff-menu)
11218164bc54 Add provide call.
Richard M. Stallman <rms@gnu.org>
parents: 14310
diff changeset
289
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 50068
diff changeset
290 ;;; arch-tag: 1d4509b3-eece-4d4f-95ea-77c83eaf0275
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 475
diff changeset
291 ;;; ebuff-menu.el ends here