annotate lisp/ebuff-menu.el @ 17846:c427501449a1

(display_text_line): Move the code to fill out the line with the newline's face to the end of the newline code. Add changes (commented out) to record ellipsis positions in charstarts.
author Richard M. Stallman <rms@gnu.org>
date Fri, 16 May 1997 07:32:59 +0000
parents 49af6e2bfaa8
children 11218164bc54
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>
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
7 ;; This file is part of GNU Emacs.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
8
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
9 ;; GNU Emacs is free software; you can redistribute it and/or modify
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
10 ;; 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
11 ;; the Free Software Foundation; either version 2, or (at your option)
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
12 ;; any later version.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14 ;; GNU Emacs is distributed in the hope that it will be useful,
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17 ;; GNU General Public License for more details.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
18
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
19 ;; 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
20 ;; 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
21 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12568
diff changeset
22 ;; Boston, MA 02111-1307, USA.
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
23
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
24 ;;; Commentary:
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
25
2307
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2026
diff changeset
26 ;; 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
27 ;; 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
28 ;; ITS Emacs lunar or tmacs libraries.
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
29
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
30 ;;; Code:
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
31
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
32 (require 'electric)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
33
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
34 ;; this depends on the format of list-buffers (from src/buffer.c) and
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
35 ;; on stuff in lisp/buff-menu.el
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
36
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
37 (defvar electric-buffer-menu-mode-map nil)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
38
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
39 ;;;###autoload
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
40 (defun electric-buffer-list (arg)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
41 "Pops up a buffer describing the set of Emacs buffers.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
42 Vaguely like ITS lunar select buffer; combining typeoutoid buffer
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
43 listing with menuoid buffer selection.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
44
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
45 If the very next character typed is a space then the buffer list
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
46 window disappears. Otherwise, one may move around in the buffer list
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
47 window, marking buffers to be selected, saved or deleted.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
48
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
49 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
50 the appropriate line of the buffer-list window. Other commands are
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
51 much like those of buffer-menu-mode.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
52
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
53 Calls value of `electric-buffer-menu-mode-hook' on entry if non-nil.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
54
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
55 \\{electric-buffer-menu-mode-map}"
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
56 (interactive "P")
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
57 (let (select buffer)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
58 (save-window-excursion
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
59 (save-window-excursion (list-buffers arg))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
60 (setq buffer (window-buffer (Electric-pop-up-window "*Buffer List*")))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
61 (unwind-protect
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
62 (progn
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
63 (set-buffer buffer)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
64 (Electric-buffer-menu-mode)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
65 (setq select
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
66 (catch 'electric-buffer-menu-select
8122
2fae14e8ae5d (electric-buffer-list): Change prompt message.
Richard M. Stallman <rms@gnu.org>
parents: 7300
diff changeset
67 (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
68 (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
69 ?\ )
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1607
diff changeset
70 (progn (setq unread-command-events nil)
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
71 (throw 'electric-buffer-menu-select nil)))
12568
94ee086557db (electric-buffer-list): Save point before
Karl Heuer <kwzh@gnu.org>
parents: 11275
diff changeset
72 (let ((start-point (point))
94ee086557db (electric-buffer-list): Save point before
Karl Heuer <kwzh@gnu.org>
parents: 11275
diff changeset
73 (first (progn (goto-char (point-min))
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
74 (forward-line 2)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
75 (point)))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
76 (last (progn (goto-char (point-max))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
77 (forward-line -1)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
78 (point)))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
79 (goal-column 0))
12568
94ee086557db (electric-buffer-list): Save point before
Karl Heuer <kwzh@gnu.org>
parents: 11275
diff changeset
80 ;; Use start-point if it is meaningful.
94ee086557db (electric-buffer-list): Save point before
Karl Heuer <kwzh@gnu.org>
parents: 11275
diff changeset
81 (goto-char (if (or (< start-point first)
94ee086557db (electric-buffer-list): Save point before
Karl Heuer <kwzh@gnu.org>
parents: 11275
diff changeset
82 (> start-point last))
94ee086557db (electric-buffer-list): Save point before
Karl Heuer <kwzh@gnu.org>
parents: 11275
diff changeset
83 first
94ee086557db (electric-buffer-list): Save point before
Karl Heuer <kwzh@gnu.org>
parents: 11275
diff changeset
84 start-point))
475
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
85 (Electric-command-loop 'electric-buffer-menu-select
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
86 nil
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
87 t
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
88 'electric-buffer-menu-looper
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
89 (cons first last))))))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
90 (set-buffer buffer)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
91 (Buffer-menu-mode)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
92 (bury-buffer buffer)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
93 (message "")))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
94 (if select
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
95 (progn (set-buffer buffer)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
96 (let ((opoint (point-marker)))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
97 (Buffer-menu-execute)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
98 (goto-char (point-min))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
99 (if (prog1 (search-forward "\n>" nil t)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
100 (goto-char opoint) (set-marker opoint nil))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
101 (Buffer-menu-select)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
102 (switch-to-buffer (Buffer-menu-buffer t))))))))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
103
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
104 (defun electric-buffer-menu-looper (state condition)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
105 (cond ((and condition
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
106 (not (memq (car condition) '(buffer-read-only
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
107 end-of-buffer
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
108 beginning-of-buffer))))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
109 (signal (car condition) (cdr condition)))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
110 ((< (point) (car state))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
111 (goto-char (point-min))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
112 (forward-line 2))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
113 ((> (point) (cdr state))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
114 (goto-char (point-max))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
115 (forward-line -1)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
116 (if (pos-visible-in-window-p (point-max))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
117 (recenter -1)))))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
118
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
119 (put 'Electric-buffer-menu-mode 'mode-class 'special)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
120 (defun Electric-buffer-menu-mode ()
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
121 "Major mode for editing a list of buffers.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
122 Each line describes one of the buffers in Emacs.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
123 Letters do not insert themselves; instead, they are commands.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
124 \\<electric-buffer-menu-mode-map>
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
125 \\[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
126 configuration. If the very first character typed is a space, it
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
127 also has this effect.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
128 \\[Electric-buffer-menu-select] -- select buffer of line point is on.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
129 Also show buffers marked with m in other windows,
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
130 deletes buffers marked with \"D\", and saves those marked with \"S\".
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
131 \\[Buffer-menu-mark] -- mark buffer to be displayed.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
132 \\[Buffer-menu-not-modified] -- clear modified-flag on that buffer.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
133 \\[Buffer-menu-save] -- mark that buffer to be saved.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
134 \\[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
135 \\[Buffer-menu-unmark] -- remove all kinds of marks from current line.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
136 \\[Electric-buffer-menu-mode-view-buffer] -- view buffer, returning when done.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
137 \\[Buffer-menu-backup-unmark] -- back up a line and remove marks.
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
138
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
139 \\{electric-buffer-menu-mode-map}
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
140
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
141 Entry to this mode via command electric-buffer-list calls the value of
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
142 electric-buffer-menu-mode-hook if it is non-nil."
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
143 (kill-all-local-variables)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
144 (use-local-map electric-buffer-menu-mode-map)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
145 (setq mode-name "Electric Buffer Menu")
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
146 (setq mode-line-buffer-identification "Electric Buffer List")
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
147 (make-local-variable 'Helper-return-blurb)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
148 (setq Helper-return-blurb "return to buffer editing")
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
149 (setq truncate-lines t)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
150 (setq buffer-read-only t)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
151 (setq major-mode 'Electric-buffer-menu-mode)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
152 (goto-char (point-min))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
153 (if (search-forward "\n." nil t) (forward-char -1))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
154 (run-hooks 'electric-buffer-menu-mode-hook))
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
155
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
156 ;; generally the same as Buffer-menu-mode-map
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
157 ;; (except we don't indirect to global-map)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
158 (put 'Electric-buffer-menu-undefined 'suppress-keymap t)
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
159 (if electric-buffer-menu-mode-map
fb215f87f4a9 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
160 nil
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
161 (let ((map (make-keymap)) (submap (make-keymap)))
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
162 (fillarray (car (cdr map)) 'Electric-buffer-menu-undefined)
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 (define-key map "\e" submap)
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
164 (fillarray (car (cdr submap)) 'Electric-buffer-menu-undefined)
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
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 475
diff changeset
265 ;;; ebuff-menu.el ends here