annotate lisp/buff-menu.el @ 8275:4fdf77f4e45c

type-break-mode: New variable and function. type-break-interval: Increase default to 1 hour. type-break-query-interval: Variable renamed from type-break-delay-interval. type-break-keystroke-interval: Variable deleted. type-break-keystroke-threshold: New variable. type-break-demo-life: Function renamed from type-break-life. type-break-demo-hanoi: Function renamed from type-break-hanoi. type-break-alarm-p: Variable renamed from type-break-p. type-break: Don't query. type-break-query: (New function) query here. type-break-check: Call type-break-query, not type-break. Do nothing if type-break-mode is nil. Increment type-break-keystroke-count with the length of this-command-keys, not just 1. Query for break when keystroke count exceeds cdr of keystroke threshold variable. Query for break after an alarm only if keystroke count exceeds car of keystroke threshold variable. type-break-select: Function deleted. type-break: Move that code here. type-break-cancel-schedule: Function renamed from cancel-type-break. Reset type-break-alarm-p. type-break-alarm: Function renamed from type-break-soon. (top level): Call type-break-mode; don't set up hook explicitly.
author Noah Friedman <friedman@splode.com>
date Mon, 18 Jul 1994 07:37:18 +0000
parents e82a71b09d7a
children 2d49d0dc9fc3
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: 194
diff changeset
1 ;;; buff-menu.el --- buffer menu main function and support functions.
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 194
diff changeset
2
7298
4fd40bd394fe Update copyright.
Karl Heuer <kwzh@gnu.org>
parents: 6640
diff changeset
3 ;; Copyright (C) 1985, 1986, 1987, 1993, 1994 Free Software Foundation, Inc.
845
213978acbc1e entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 801
diff changeset
4
801
e9e34745ae3b *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 777
diff changeset
5 ;; Maintainer: FSF
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
7 ;; This file is part of GNU Emacs.
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
8
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
9 ;; GNU Emacs is free software; you can redistribute it and/or modify
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
10 ;; it under the terms of the GNU General Public License as published by
735
ea0823fe7df5 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 662
diff changeset
11 ;; the Free Software Foundation; either version 2, or (at your option)
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
12 ;; any later version.
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14 ;; GNU Emacs is distributed in the hope that it will be useful,
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17 ;; GNU General Public License for more details.
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
18
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
19 ;; You should have received a copy of the GNU General Public License
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20 ;; along with GNU Emacs; see the file COPYING. If not, write to
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
21 ;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
22
2307
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 845
diff changeset
23 ;;; Commentary:
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 845
diff changeset
24
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 845
diff changeset
25 ;; Edit, delete, or change attributes of all currently active Emacs
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 2736
diff changeset
26 ;; buffers from a list summarizing their state. A good way to browse
2307
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 845
diff changeset
27 ;; any special or scratch buffers you have loaded, since you can't find
2334
ec4ffd67483d Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
28 ;; them by filename. The single entry point is `Buffer-menu-mode',
ec4ffd67483d Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
29 ;; normally bound to C-x C-b.
ec4ffd67483d Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
30
ec4ffd67483d Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
31 ;;; Change Log:
ec4ffd67483d Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
32
ec4ffd67483d Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
33 ;; Merged by esr with recent mods to Emacs 19 buff-menu, 23 Mar 1993
ec4ffd67483d Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
34 ;;
ec4ffd67483d Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
35 ;; Modified by Bob Weiner, Motorola, Inc., 4/14/89
ec4ffd67483d Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
36 ;;
ec4ffd67483d Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
37 ;; Added optional backup argument to 'Buffer-menu-unmark' to make it undelete
ec4ffd67483d Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
38 ;; current entry and then move to previous one.
ec4ffd67483d Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
39 ;;
ec4ffd67483d Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
40 ;; Based on FSF code dating back to 1985.
2307
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 845
diff changeset
41
801
e9e34745ae3b *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 777
diff changeset
42 ;;; Code:
2334
ec4ffd67483d Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
43
2736
d6ff54640930 (buffer-menu): Don't save a window config.
Richard M. Stallman <rms@gnu.org>
parents: 2422
diff changeset
44 ;;;Not needed, now that q is now just quit and Buffer-menu-select is v.
d6ff54640930 (buffer-menu): Don't save a window config.
Richard M. Stallman <rms@gnu.org>
parents: 2422
diff changeset
45 ;;;(defvar Buffer-menu-window-config nil
d6ff54640930 (buffer-menu): Don't save a window config.
Richard M. Stallman <rms@gnu.org>
parents: 2422
diff changeset
46 ;;; "Window configuration saved from entry to `buffer-menu'.")
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
47
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
48 ; Put buffer *Buffer List* into proper mode right away
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
49 ; so that from now on even list-buffers is enough to get a buffer menu.
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
50
6640
532754d63384 (Buffer-menu-mode): Highlight only the buffer name, not the whole line.
Karl Heuer <kwzh@gnu.org>
parents: 6638
diff changeset
51 (defvar Buffer-menu-buffer-column nil)
532754d63384 (Buffer-menu-mode): Highlight only the buffer name, not the whole line.
Karl Heuer <kwzh@gnu.org>
parents: 6638
diff changeset
52
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
53 (defvar Buffer-menu-mode-map nil "")
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
54
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
55 (if Buffer-menu-mode-map
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
56 ()
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
57 (setq Buffer-menu-mode-map (make-keymap))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
58 (suppress-keymap Buffer-menu-mode-map t)
2736
d6ff54640930 (buffer-menu): Don't save a window config.
Richard M. Stallman <rms@gnu.org>
parents: 2422
diff changeset
59 (define-key Buffer-menu-mode-map "q" 'Buffer-menu-quit)
d6ff54640930 (buffer-menu): Don't save a window config.
Richard M. Stallman <rms@gnu.org>
parents: 2422
diff changeset
60 (define-key Buffer-menu-mode-map "v" 'Buffer-menu-select)
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
61 (define-key Buffer-menu-mode-map "2" 'Buffer-menu-2-window)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
62 (define-key Buffer-menu-mode-map "1" 'Buffer-menu-1-window)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
63 (define-key Buffer-menu-mode-map "f" 'Buffer-menu-this-window)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
64 (define-key Buffer-menu-mode-map "o" 'Buffer-menu-other-window)
735
ea0823fe7df5 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 662
diff changeset
65 (define-key Buffer-menu-mode-map "\C-o" 'Buffer-menu-switch-other-window)
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
66 (define-key Buffer-menu-mode-map "s" 'Buffer-menu-save)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
67 (define-key Buffer-menu-mode-map "d" 'Buffer-menu-delete)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
68 (define-key Buffer-menu-mode-map "k" 'Buffer-menu-delete)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
69 (define-key Buffer-menu-mode-map "\C-d" 'Buffer-menu-delete-backwards)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
70 (define-key Buffer-menu-mode-map "\C-k" 'Buffer-menu-delete)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
71 (define-key Buffer-menu-mode-map "x" 'Buffer-menu-execute)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
72 (define-key Buffer-menu-mode-map " " 'next-line)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
73 (define-key Buffer-menu-mode-map "n" 'next-line)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
74 (define-key Buffer-menu-mode-map "p" 'previous-line)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
75 (define-key Buffer-menu-mode-map "\177" 'Buffer-menu-backup-unmark)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
76 (define-key Buffer-menu-mode-map "~" 'Buffer-menu-not-modified)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
77 (define-key Buffer-menu-mode-map "?" 'describe-mode)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
78 (define-key Buffer-menu-mode-map "u" 'Buffer-menu-unmark)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
79 (define-key Buffer-menu-mode-map "m" 'Buffer-menu-mark)
2378
c5d0140aa7b6 (Buffer-menu-toggle-read-only) Added, per Rob Austein's suggestion
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2334
diff changeset
80 (define-key Buffer-menu-mode-map "t" 'Buffer-menu-visit-tags-table)
c5d0140aa7b6 (Buffer-menu-toggle-read-only) Added, per Rob Austein's suggestion
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2334
diff changeset
81 (define-key Buffer-menu-mode-map "%" 'Buffer-menu-toggle-read-only)
8161
6b104526819d (Buffer-menu-revert-function): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7659
diff changeset
82 (define-key Buffer-menu-mode-map "g" 'revert-buffer)
6609
3b1eb7f1eba1 (Buffer-menu-mouse-select): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6084
diff changeset
83 (define-key Buffer-menu-mode-map [mouse-2] 'Buffer-menu-mouse-select)
2378
c5d0140aa7b6 (Buffer-menu-toggle-read-only) Added, per Rob Austein's suggestion
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2334
diff changeset
84 )
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
85
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
86 ;; Buffer Menu mode is suitable only for specially formatted data.
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
87 (put 'Buffer-menu-mode 'mode-class 'special)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
88
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
89 (defun Buffer-menu-mode ()
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
90 "Major mode for editing a list of buffers.
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
91 Each line describes one of the buffers in Emacs.
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
92 Letters do not insert themselves; instead, they are commands.
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
93 \\<Buffer-menu-mode-map>
6609
3b1eb7f1eba1 (Buffer-menu-mouse-select): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6084
diff changeset
94 \\[Buffer-menu-mouse-select] -- select buffer you click on, in place of the buffer menu.
3b1eb7f1eba1 (Buffer-menu-mouse-select): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6084
diff changeset
95 \\[Buffer-menu-this-window] -- select current line's buffer in place of the buffer menu.
3b1eb7f1eba1 (Buffer-menu-mouse-select): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6084
diff changeset
96 \\[Buffer-menu-other-window] -- select that buffer in another window,
3b1eb7f1eba1 (Buffer-menu-mouse-select): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6084
diff changeset
97 so the buffer menu buffer remains visible in its window.
3b1eb7f1eba1 (Buffer-menu-mouse-select): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6084
diff changeset
98 \\[Buffer-menu-switch-other-window] -- make another window display that buffer.
3b1eb7f1eba1 (Buffer-menu-mouse-select): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6084
diff changeset
99 \\[Buffer-menu-mark] -- mark current line's buffer to be displayed.
3b1eb7f1eba1 (Buffer-menu-mouse-select): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6084
diff changeset
100 \\[Buffer-menu-select] -- select current line's buffer.
3b1eb7f1eba1 (Buffer-menu-mouse-select): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6084
diff changeset
101 Also show buffers marked with m, in other windows.
777
c99faf9381bb *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
102 \\[Buffer-menu-1-window] -- select that buffer in full-frame window.
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
103 \\[Buffer-menu-2-window] -- select that buffer in one window,
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
104 together with buffer selected before this one in another window.
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
105 \\[Buffer-menu-visit-tags-table] -- visit-tags-table this buffer.
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
106 \\[Buffer-menu-not-modified] -- clear modified-flag on that buffer.
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
107 \\[Buffer-menu-save] -- mark that buffer to be saved, and move down.
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
108 \\[Buffer-menu-delete] -- mark that buffer to be deleted, and move down.
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
109 \\[Buffer-menu-delete-backwards] -- mark that buffer to be deleted, and move up.
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
110 \\[Buffer-menu-execute] -- delete or save marked buffers.
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
111 \\[Buffer-menu-unmark] -- remove all kinds of marks from current line.
2334
ec4ffd67483d Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
112 With prefix argument, also move up one line.
2378
c5d0140aa7b6 (Buffer-menu-toggle-read-only) Added, per Rob Austein's suggestion
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2334
diff changeset
113 \\[Buffer-menu-backup-unmark] -- back up a line and remove marks.
c5d0140aa7b6 (Buffer-menu-toggle-read-only) Added, per Rob Austein's suggestion
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2334
diff changeset
114 \\[Buffer-menu-toggle-read-only] -- toggle read-only status of buffer on this line."
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
115 (kill-all-local-variables)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
116 (use-local-map Buffer-menu-mode-map)
6638
61e40a447c92 (Buffer-menu-mode): Add mouse-face properties.
Karl Heuer <kwzh@gnu.org>
parents: 6609
diff changeset
117 (setq major-mode 'Buffer-menu-mode)
61e40a447c92 (Buffer-menu-mode): Add mouse-face properties.
Karl Heuer <kwzh@gnu.org>
parents: 6609
diff changeset
118 (setq mode-name "Buffer Menu")
61e40a447c92 (Buffer-menu-mode): Add mouse-face properties.
Karl Heuer <kwzh@gnu.org>
parents: 6609
diff changeset
119 (save-excursion
61e40a447c92 (Buffer-menu-mode): Add mouse-face properties.
Karl Heuer <kwzh@gnu.org>
parents: 6609
diff changeset
120 (goto-char (point-min))
6640
532754d63384 (Buffer-menu-mode): Highlight only the buffer name, not the whole line.
Karl Heuer <kwzh@gnu.org>
parents: 6638
diff changeset
121 (search-forward "Buffer")
532754d63384 (Buffer-menu-mode): Highlight only the buffer name, not the whole line.
Karl Heuer <kwzh@gnu.org>
parents: 6638
diff changeset
122 (backward-word 1)
532754d63384 (Buffer-menu-mode): Highlight only the buffer name, not the whole line.
Karl Heuer <kwzh@gnu.org>
parents: 6638
diff changeset
123 (setq Buffer-menu-buffer-column (current-column))
6638
61e40a447c92 (Buffer-menu-mode): Add mouse-face properties.
Karl Heuer <kwzh@gnu.org>
parents: 6609
diff changeset
124 (forward-line 2)
61e40a447c92 (Buffer-menu-mode): Add mouse-face properties.
Karl Heuer <kwzh@gnu.org>
parents: 6609
diff changeset
125 (while (not (eobp))
6640
532754d63384 (Buffer-menu-mode): Highlight only the buffer name, not the whole line.
Karl Heuer <kwzh@gnu.org>
parents: 6638
diff changeset
126 (let ((where (Buffer-menu-buffer-name-position)))
532754d63384 (Buffer-menu-mode): Highlight only the buffer name, not the whole line.
Karl Heuer <kwzh@gnu.org>
parents: 6638
diff changeset
127 (put-text-property (car where) (cdr where) 'mouse-face 'highlight))
6638
61e40a447c92 (Buffer-menu-mode): Add mouse-face properties.
Karl Heuer <kwzh@gnu.org>
parents: 6609
diff changeset
128 (forward-line 1)))
8161
6b104526819d (Buffer-menu-revert-function): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7659
diff changeset
129 (make-local-variable 'revert-buffer-function)
6b104526819d (Buffer-menu-revert-function): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7659
diff changeset
130 (setq revert-buffer-function 'Buffer-menu-revert-function)
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
131 (setq truncate-lines t)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
132 (setq buffer-read-only t)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
133 (run-hooks 'buffer-menu-mode-hook))
8161
6b104526819d (Buffer-menu-revert-function): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7659
diff changeset
134
6b104526819d (Buffer-menu-revert-function): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7659
diff changeset
135 (defun Buffer-menu-revert-function (ignore1 ignore2)
6b104526819d (Buffer-menu-revert-function): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7659
diff changeset
136 (list-buffers))
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
137
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
138 (defun Buffer-menu-buffer (error-if-non-existent-p)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
139 "Return buffer described by this line of buffer menu."
6640
532754d63384 (Buffer-menu-mode): Highlight only the buffer name, not the whole line.
Karl Heuer <kwzh@gnu.org>
parents: 6638
diff changeset
140 (let* ((where (Buffer-menu-buffer-name-position))
532754d63384 (Buffer-menu-mode): Highlight only the buffer name, not the whole line.
Karl Heuer <kwzh@gnu.org>
parents: 6638
diff changeset
141 (string (buffer-substring (car where) (cdr where))))
532754d63384 (Buffer-menu-mode): Highlight only the buffer name, not the whole line.
Karl Heuer <kwzh@gnu.org>
parents: 6638
diff changeset
142 (or (get-buffer string)
532754d63384 (Buffer-menu-mode): Highlight only the buffer name, not the whole line.
Karl Heuer <kwzh@gnu.org>
parents: 6638
diff changeset
143 (if error-if-non-existent-p
532754d63384 (Buffer-menu-mode): Highlight only the buffer name, not the whole line.
Karl Heuer <kwzh@gnu.org>
parents: 6638
diff changeset
144 (error "No buffer named \"%s\"" string)
532754d63384 (Buffer-menu-mode): Highlight only the buffer name, not the whole line.
Karl Heuer <kwzh@gnu.org>
parents: 6638
diff changeset
145 nil))))
532754d63384 (Buffer-menu-mode): Highlight only the buffer name, not the whole line.
Karl Heuer <kwzh@gnu.org>
parents: 6638
diff changeset
146
532754d63384 (Buffer-menu-mode): Highlight only the buffer name, not the whole line.
Karl Heuer <kwzh@gnu.org>
parents: 6638
diff changeset
147 ;; Find the start and end positions of the buffer name on this line.
532754d63384 (Buffer-menu-mode): Highlight only the buffer name, not the whole line.
Karl Heuer <kwzh@gnu.org>
parents: 6638
diff changeset
148 ;; Returns a cons (START . END).
532754d63384 (Buffer-menu-mode): Highlight only the buffer name, not the whole line.
Karl Heuer <kwzh@gnu.org>
parents: 6638
diff changeset
149 (defun Buffer-menu-buffer-name-position ()
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
150 (save-excursion
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
151 (beginning-of-line)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
152 (forward-char Buffer-menu-buffer-column)
6640
532754d63384 (Buffer-menu-mode): Highlight only the buffer name, not the whole line.
Karl Heuer <kwzh@gnu.org>
parents: 6638
diff changeset
153 (let ((start (point)))
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
154 (re-search-forward "\t\\| ")
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
155 (skip-chars-backward " \t")
6640
532754d63384 (Buffer-menu-mode): Highlight only the buffer name, not the whole line.
Karl Heuer <kwzh@gnu.org>
parents: 6638
diff changeset
156 (cons start (point)))))
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
157
756
0276f8eb306f *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 735
diff changeset
158 (defun buffer-menu (&optional arg)
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
159 "Make a menu of buffers so you can save, delete or select them.
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
160 With argument, show only buffers that are visiting files.
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
161 Type ? after invocation to get help on commands available.
2334
ec4ffd67483d Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
162 Type q immediately to make the buffer menu go away and to restore
ec4ffd67483d Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
163 previous window configuration."
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
164 (interactive "P")
2736
d6ff54640930 (buffer-menu): Don't save a window config.
Richard M. Stallman <rms@gnu.org>
parents: 2422
diff changeset
165 ;;; (setq Buffer-menu-window-config (current-window-configuration))
8223
e82a71b09d7a (buffer-menu): Call pop-to-buffer before
Richard M. Stallman <rms@gnu.org>
parents: 8196
diff changeset
166 ;; This order seems to let list-buffers set the value of point
e82a71b09d7a (buffer-menu): Call pop-to-buffer before
Richard M. Stallman <rms@gnu.org>
parents: 8196
diff changeset
167 ;; regardless of whether we are using the same buffer or another.
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
168 (pop-to-buffer "*Buffer List*")
8223
e82a71b09d7a (buffer-menu): Call pop-to-buffer before
Richard M. Stallman <rms@gnu.org>
parents: 8196
diff changeset
169 (list-buffers arg)
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
170 (message
2736
d6ff54640930 (buffer-menu): Don't save a window config.
Richard M. Stallman <rms@gnu.org>
parents: 2422
diff changeset
171 "Commands: d, s, x, u; f, o, 1, 2, m, v; ~, %%; q to quit; ? for help."))
d6ff54640930 (buffer-menu): Don't save a window config.
Richard M. Stallman <rms@gnu.org>
parents: 2422
diff changeset
172
d6ff54640930 (buffer-menu): Don't save a window config.
Richard M. Stallman <rms@gnu.org>
parents: 2422
diff changeset
173 (defun Buffer-menu-quit ()
d6ff54640930 (buffer-menu): Don't save a window config.
Richard M. Stallman <rms@gnu.org>
parents: 2422
diff changeset
174 "Quit the buffer menu."
d6ff54640930 (buffer-menu): Don't save a window config.
Richard M. Stallman <rms@gnu.org>
parents: 2422
diff changeset
175 (interactive)
d6ff54640930 (buffer-menu): Don't save a window config.
Richard M. Stallman <rms@gnu.org>
parents: 2422
diff changeset
176 (let ((buffer (current-buffer)))
d6ff54640930 (buffer-menu): Don't save a window config.
Richard M. Stallman <rms@gnu.org>
parents: 2422
diff changeset
177 ;; Restore previous window configuration before displaying
d6ff54640930 (buffer-menu): Don't save a window config.
Richard M. Stallman <rms@gnu.org>
parents: 2422
diff changeset
178 ;; selected buffers.
d6ff54640930 (buffer-menu): Don't save a window config.
Richard M. Stallman <rms@gnu.org>
parents: 2422
diff changeset
179 (switch-to-buffer (other-buffer))
d6ff54640930 (buffer-menu): Don't save a window config.
Richard M. Stallman <rms@gnu.org>
parents: 2422
diff changeset
180 (bury-buffer buffer)))
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
181
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
182 (defun Buffer-menu-mark ()
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
183 "Mark buffer on this line for being displayed by \\<Buffer-menu-mode-map>\\[Buffer-menu-select] command."
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
184 (interactive)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
185 (beginning-of-line)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
186 (if (looking-at " [-M]")
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
187 (ding)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
188 (let ((buffer-read-only nil))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
189 (delete-char 1)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
190 (insert ?>)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
191 (forward-line 1))))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
192
2334
ec4ffd67483d Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
193 (defun Buffer-menu-unmark (&optional backup)
ec4ffd67483d Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
194 "Cancel all requested operations on buffer on this line and move down.
ec4ffd67483d Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
195 Optional ARG means move up."
ec4ffd67483d Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
196 (interactive "P")
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
197 (beginning-of-line)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
198 (if (looking-at " [-M]")
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
199 (ding)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
200 (let* ((buf (Buffer-menu-buffer t))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
201 (mod (buffer-modified-p buf))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
202 (readonly (save-excursion (set-buffer buf) buffer-read-only))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
203 (buffer-read-only nil))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
204 (delete-char 3)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
205 (insert (if readonly (if mod " *%" " %") (if mod " * " " ")))))
2334
ec4ffd67483d Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
206 (forward-line (if backup -1 1)))
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
207
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
208 (defun Buffer-menu-backup-unmark ()
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
209 "Move up and cancel all requested operations on buffer on line above."
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
210 (interactive)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
211 (forward-line -1)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
212 (Buffer-menu-unmark)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
213 (forward-line -1))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
214
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
215 (defun Buffer-menu-delete ()
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
216 "Mark buffer on this line to be deleted by \\<Buffer-menu-mode-map>\\[Buffer-menu-execute] command."
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
217 (interactive)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
218 (beginning-of-line)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
219 (if (looking-at " [-M]") ;header lines
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
220 (ding)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
221 (let ((buffer-read-only nil))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
222 (delete-char 1)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
223 (insert ?D)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
224 (forward-line 1))))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
225
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
226 (defun Buffer-menu-delete-backwards ()
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
227 "Mark buffer on this line to be deleted by \\<Buffer-menu-mode-map>\\[Buffer-menu-execute] command
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
228 and then move up one line"
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
229 (interactive)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
230 (Buffer-menu-delete)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
231 (forward-line -2)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
232 (if (looking-at " [-M]") (forward-line 1)))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
233
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
234 (defun Buffer-menu-save ()
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
235 "Mark buffer on this line to be saved by \\<Buffer-menu-mode-map>\\[Buffer-menu-execute] command."
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
236 (interactive)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
237 (beginning-of-line)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
238 (forward-char 1)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
239 (if (looking-at " [-M]") ;header lines
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
240 (ding)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
241 (let ((buffer-read-only nil))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
242 (delete-char 1)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
243 (insert ?S)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
244 (forward-line 1))))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
245
8196
89db3662bcec (Buffer-menu-not-modified): Make `Buffer-menu-not-modified' handle an
Richard M. Stallman <rms@gnu.org>
parents: 8161
diff changeset
246 (defun Buffer-menu-not-modified (&optional arg)
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
247 "Mark buffer on this line as unmodified (no changes to save)."
8196
89db3662bcec (Buffer-menu-not-modified): Make `Buffer-menu-not-modified' handle an
Richard M. Stallman <rms@gnu.org>
parents: 8161
diff changeset
248 (interactive "P")
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
249 (save-excursion
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
250 (set-buffer (Buffer-menu-buffer t))
8196
89db3662bcec (Buffer-menu-not-modified): Make `Buffer-menu-not-modified' handle an
Richard M. Stallman <rms@gnu.org>
parents: 8161
diff changeset
251 (set-buffer-modified-p arg))
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
252 (save-excursion
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
253 (beginning-of-line)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
254 (forward-char 1)
8196
89db3662bcec (Buffer-menu-not-modified): Make `Buffer-menu-not-modified' handle an
Richard M. Stallman <rms@gnu.org>
parents: 8161
diff changeset
255 (if (= (char-after (point)) (if arg ? ?*))
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
256 (let ((buffer-read-only nil))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
257 (delete-char 1)
8196
89db3662bcec (Buffer-menu-not-modified): Make `Buffer-menu-not-modified' handle an
Richard M. Stallman <rms@gnu.org>
parents: 8161
diff changeset
258 (insert (if arg ?* ? ))))))
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
259
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
260 (defun Buffer-menu-execute ()
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
261 "Save and/or delete buffers marked with \\<Buffer-menu-mode-map>\\[Buffer-menu-save] or \\<Buffer-menu-mode-map>\\[Buffer-menu-delete] commands."
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
262 (interactive)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
263 (save-excursion
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
264 (goto-char (point-min))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
265 (forward-line 1)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
266 (while (re-search-forward "^.S" nil t)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
267 (let ((modp nil))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
268 (save-excursion
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
269 (set-buffer (Buffer-menu-buffer t))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
270 (save-buffer)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
271 (setq modp (buffer-modified-p)))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
272 (let ((buffer-read-only nil))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
273 (delete-char -1)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
274 (insert (if modp ?* ? ))))))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
275 (save-excursion
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
276 (goto-char (point-min))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
277 (forward-line 1)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
278 (let ((buff-menu-buffer (current-buffer))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
279 (buffer-read-only nil))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
280 (while (search-forward "\nD" nil t)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
281 (forward-char -1)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
282 (let ((buf (Buffer-menu-buffer nil)))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
283 (or (eq buf nil)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
284 (eq buf buff-menu-buffer)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
285 (save-excursion (kill-buffer buf))))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
286 (if (Buffer-menu-buffer nil)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
287 (progn (delete-char 1)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
288 (insert ? ))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
289 (delete-region (point) (progn (forward-line 1) (point)))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
290 (forward-char -1))))))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
291
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
292 (defun Buffer-menu-select ()
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
293 "Select this line's buffer; also display buffers marked with `>'.
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
294 You can mark buffers with the \\<Buffer-menu-mode-map>\\[Buffer-menu-mark] command."
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
295 (interactive)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
296 (let ((buff (Buffer-menu-buffer t))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
297 (menu (current-buffer))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
298 (others ())
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
299 tem)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
300 (goto-char (point-min))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
301 (while (search-forward "\n>" nil t)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
302 (setq tem (Buffer-menu-buffer t))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
303 (let ((buffer-read-only nil))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
304 (delete-char -1)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
305 (insert ?\ ))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
306 (or (eq tem buff) (memq tem others) (setq others (cons tem others))))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
307 (setq others (nreverse others)
777
c99faf9381bb *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
308 tem (/ (1- (frame-height)) (1+ (length others))))
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
309 (delete-other-windows)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
310 (switch-to-buffer buff)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
311 (or (eq menu buff)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
312 (bury-buffer menu))
2334
ec4ffd67483d Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
313 (if (equal (length others) 0)
ec4ffd67483d Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
314 (progn
2736
d6ff54640930 (buffer-menu): Don't save a window config.
Richard M. Stallman <rms@gnu.org>
parents: 2422
diff changeset
315 ;;; ;; Restore previous window configuration before displaying
d6ff54640930 (buffer-menu): Don't save a window config.
Richard M. Stallman <rms@gnu.org>
parents: 2422
diff changeset
316 ;;; ;; selected buffers.
d6ff54640930 (buffer-menu): Don't save a window config.
Richard M. Stallman <rms@gnu.org>
parents: 2422
diff changeset
317 ;;; (if Buffer-menu-window-config
d6ff54640930 (buffer-menu): Don't save a window config.
Richard M. Stallman <rms@gnu.org>
parents: 2422
diff changeset
318 ;;; (progn
d6ff54640930 (buffer-menu): Don't save a window config.
Richard M. Stallman <rms@gnu.org>
parents: 2422
diff changeset
319 ;;; (set-window-configuration Buffer-menu-window-config)
d6ff54640930 (buffer-menu): Don't save a window config.
Richard M. Stallman <rms@gnu.org>
parents: 2422
diff changeset
320 ;;; (setq Buffer-menu-window-config nil)))
2334
ec4ffd67483d Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
321 (switch-to-buffer buff))
ec4ffd67483d Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
322 (while others
ec4ffd67483d Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
323 (split-window nil tem)
ec4ffd67483d Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
324 (other-window 1)
ec4ffd67483d Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
325 (switch-to-buffer (car others))
ec4ffd67483d Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
326 (setq others (cdr others)))
ec4ffd67483d Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
327 (other-window 1) ;back to the beginning!
ec4ffd67483d Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
328 )))
ec4ffd67483d Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
329
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
330
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
331 (defun Buffer-menu-visit-tags-table ()
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
332 "Visit the tags table in the buffer on this line. See `visit-tags-table'."
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
333 (interactive)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
334 (let ((file (buffer-file-name (Buffer-menu-buffer t))))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
335 (if file
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
336 (visit-tags-table file)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
337 (error "Specified buffer has no file"))))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
338
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
339 (defun Buffer-menu-1-window ()
777
c99faf9381bb *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
340 "Select this line's buffer, alone, in full frame."
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
341 (interactive)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
342 (switch-to-buffer (Buffer-menu-buffer t))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
343 (bury-buffer (other-buffer))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
344 (delete-other-windows))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
345
6609
3b1eb7f1eba1 (Buffer-menu-mouse-select): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6084
diff changeset
346 (defun Buffer-menu-mouse-select (event)
3b1eb7f1eba1 (Buffer-menu-mouse-select): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6084
diff changeset
347 "Select the buffer whose line you click on."
3b1eb7f1eba1 (Buffer-menu-mouse-select): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6084
diff changeset
348 (interactive "e")
3b1eb7f1eba1 (Buffer-menu-mouse-select): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6084
diff changeset
349 (let (buffer)
3b1eb7f1eba1 (Buffer-menu-mouse-select): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6084
diff changeset
350 (save-excursion
3b1eb7f1eba1 (Buffer-menu-mouse-select): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6084
diff changeset
351 (set-buffer (window-buffer (posn-window (event-end event))))
3b1eb7f1eba1 (Buffer-menu-mouse-select): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6084
diff changeset
352 (save-excursion
3b1eb7f1eba1 (Buffer-menu-mouse-select): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6084
diff changeset
353 (goto-char (posn-point (event-end event)))
3b1eb7f1eba1 (Buffer-menu-mouse-select): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6084
diff changeset
354 (setq buffer (Buffer-menu-buffer t))))
3b1eb7f1eba1 (Buffer-menu-mouse-select): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6084
diff changeset
355 (select-window (posn-window (event-end event)))
7659
ed3bbbdd9ef5 (Buffer-menu-mouse-select): Handle dedicated window.
Richard M. Stallman <rms@gnu.org>
parents: 7298
diff changeset
356 (if (and (window-dedicated-p (selected-window))
ed3bbbdd9ef5 (Buffer-menu-mouse-select): Handle dedicated window.
Richard M. Stallman <rms@gnu.org>
parents: 7298
diff changeset
357 (eq (selected-window) (frame-root-window)))
ed3bbbdd9ef5 (Buffer-menu-mouse-select): Handle dedicated window.
Richard M. Stallman <rms@gnu.org>
parents: 7298
diff changeset
358 (switch-to-buffer-other-frame buffer)
ed3bbbdd9ef5 (Buffer-menu-mouse-select): Handle dedicated window.
Richard M. Stallman <rms@gnu.org>
parents: 7298
diff changeset
359 (switch-to-buffer buffer))))
6609
3b1eb7f1eba1 (Buffer-menu-mouse-select): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6084
diff changeset
360
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
361 (defun Buffer-menu-this-window ()
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
362 "Select this line's buffer in this window."
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
363 (interactive)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
364 (switch-to-buffer (Buffer-menu-buffer t)))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
365
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
366 (defun Buffer-menu-other-window ()
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
367 "Select this line's buffer in other window, leaving buffer menu visible."
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
368 (interactive)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
369 (switch-to-buffer-other-window (Buffer-menu-buffer t)))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
370
735
ea0823fe7df5 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 662
diff changeset
371 (defun Buffer-menu-switch-other-window ()
ea0823fe7df5 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 662
diff changeset
372 "Make the other window select this line's buffer.
ea0823fe7df5 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 662
diff changeset
373 The current window remains selected."
ea0823fe7df5 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 662
diff changeset
374 (interactive)
ea0823fe7df5 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 662
diff changeset
375 (display-buffer (Buffer-menu-buffer t)))
ea0823fe7df5 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 662
diff changeset
376
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
377 (defun Buffer-menu-2-window ()
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
378 "Select this line's buffer, with previous buffer in second window."
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
379 (interactive)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
380 (let ((buff (Buffer-menu-buffer t))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
381 (menu (current-buffer))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
382 (pop-up-windows t))
2334
ec4ffd67483d Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
383 (delete-other-windows)
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
384 (switch-to-buffer (other-buffer))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
385 (pop-to-buffer buff)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
386 (bury-buffer menu)))
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 194
diff changeset
387
2378
c5d0140aa7b6 (Buffer-menu-toggle-read-only) Added, per Rob Austein's suggestion
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2334
diff changeset
388 (defun Buffer-menu-toggle-read-only ()
6084
d42c85701055 (Buffer-menu-toggle-read-only): Change toggle-read-only to
Karl Heuer <kwzh@gnu.org>
parents: 3591
diff changeset
389 "Toggle read-only status of buffer on this line, perhaps via version control."
2378
c5d0140aa7b6 (Buffer-menu-toggle-read-only) Added, per Rob Austein's suggestion
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2334
diff changeset
390 (interactive)
c5d0140aa7b6 (Buffer-menu-toggle-read-only) Added, per Rob Austein's suggestion
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2334
diff changeset
391 (let (char)
c5d0140aa7b6 (Buffer-menu-toggle-read-only) Added, per Rob Austein's suggestion
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2334
diff changeset
392 (save-excursion
c5d0140aa7b6 (Buffer-menu-toggle-read-only) Added, per Rob Austein's suggestion
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2334
diff changeset
393 (set-buffer (Buffer-menu-buffer t))
6084
d42c85701055 (Buffer-menu-toggle-read-only): Change toggle-read-only to
Karl Heuer <kwzh@gnu.org>
parents: 3591
diff changeset
394 (vc-toggle-read-only)
2378
c5d0140aa7b6 (Buffer-menu-toggle-read-only) Added, per Rob Austein's suggestion
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2334
diff changeset
395 (setq char (if buffer-read-only ?% ? )))
c5d0140aa7b6 (Buffer-menu-toggle-read-only) Added, per Rob Austein's suggestion
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2334
diff changeset
396 (save-excursion
c5d0140aa7b6 (Buffer-menu-toggle-read-only) Added, per Rob Austein's suggestion
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2334
diff changeset
397 (beginning-of-line)
c5d0140aa7b6 (Buffer-menu-toggle-read-only) Added, per Rob Austein's suggestion
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2334
diff changeset
398 (forward-char 2)
c5d0140aa7b6 (Buffer-menu-toggle-read-only) Added, per Rob Austein's suggestion
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2334
diff changeset
399 (if (/= (following-char) char)
c5d0140aa7b6 (Buffer-menu-toggle-read-only) Added, per Rob Austein's suggestion
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2334
diff changeset
400 (let (buffer-read-only)
c5d0140aa7b6 (Buffer-menu-toggle-read-only) Added, per Rob Austein's suggestion
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2334
diff changeset
401 (delete-char 1)
c5d0140aa7b6 (Buffer-menu-toggle-read-only) Added, per Rob Austein's suggestion
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2334
diff changeset
402 (insert char))))))
c5d0140aa7b6 (Buffer-menu-toggle-read-only) Added, per Rob Austein's suggestion
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2334
diff changeset
403
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 194
diff changeset
404 ;;; buff-menu.el ends here