annotate lisp/buff-menu.el @ 96627:ae085a544367

Use more correct IPA characters for English pronunciation. Add the combining acute accent after the accented vowel in the Russian example like it is used in dictionaries.
author Juri Linkov <juri@jurta.org>
date Sat, 12 Jul 2008 20:41:45 +0000
parents 5f58c2a66de7
children ad71105ebd5b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
58425
f0b9b97606f9 (list-buffers-noselect): Use fixed-pitch only in the header-line.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58352
diff changeset
1 ;;; buff-menu.el --- buffer menu main function and support functions -*- coding:utf-8 -*-
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 194
diff changeset
2
58299
40fc4ca7acc0 (list-buffers-noselect): Massage to fit in 80 columns.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58276
diff changeset
3 ;; Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 2000, 2001, 2002, 2003,
79721
73661ddc7ac7 Add 2008 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 78236
diff changeset
4 ;; 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
845
213978acbc1e entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 801
diff changeset
5
801
e9e34745ae3b *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 777
diff changeset
6 ;; Maintainer: FSF
39012
aa310bebddef Add Keywords header.
Gerd Moellmann <gerd@gnu.org>
parents: 38412
diff changeset
7 ;; Keywords: convenience
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
8
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
9 ;; This file is part of GNU Emacs.
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
10
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 92953
diff changeset
11 ;; GNU Emacs is free software: you can redistribute it and/or modify
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
12 ;; it under the terms of the GNU General Public License as published by
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 92953
diff changeset
13 ;; the Free Software Foundation, either version 3 of the License, or
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 92953
diff changeset
14 ;; (at your option) any later version.
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
19 ;; GNU General Public License for more details.
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
21 ;; You should have received a copy of the GNU General Public License
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 92953
diff changeset
22 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
23
2307
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 845
diff changeset
24 ;;; Commentary:
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 845
diff changeset
25
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 845
diff changeset
26 ;; 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
27 ;; 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
28 ;; any special or scratch buffers you have loaded, since you can't find
39012
aa310bebddef Add Keywords header.
Gerd Moellmann <gerd@gnu.org>
parents: 38412
diff changeset
29 ;; them by filename. The single entry point is `list-buffers',
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
30 ;; 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
31
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 ;;; 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
33
25166
e8ec0085ff7b (Buffer-menu-mode-map): Add V for Buffer-menu-View.
Richard M. Stallman <rms@gnu.org>
parents: 21093
diff changeset
34 ;; Buffer-menu-view: New function
e8ec0085ff7b (Buffer-menu-mode-map): Add V for Buffer-menu-View.
Richard M. Stallman <rms@gnu.org>
parents: 21093
diff changeset
35 ;; Buffer-menu-view-other-window: New function
e8ec0085ff7b (Buffer-menu-mode-map): Add V for Buffer-menu-View.
Richard M. Stallman <rms@gnu.org>
parents: 21093
diff changeset
36
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
37 ;; 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
38 ;;
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 ;; 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
40 ;;
ec4ffd67483d Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
41 ;; 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
42 ;; 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
43 ;;
ec4ffd67483d Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
44 ;; 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
45
801
e9e34745ae3b *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 777
diff changeset
46 ;;; Code:
30851
f9233f642b88 * buff-menu.el (list-buffers-noselect): Use `dolist' instead of
Sam Steingold <sds@gnu.org>
parents: 30828
diff changeset
47
54580
f9e5bd96c71c (Buffer-menu-sort, Buffer-menu-make-sort-button): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
48 ;;Trying to preserve the old window configuration works well in
f9e5bd96c71c (Buffer-menu-sort, Buffer-menu-make-sort-button): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
49 ;;simple scenarios, when you enter the buffer menu, use it, and exit it.
f9e5bd96c71c (Buffer-menu-sort, Buffer-menu-make-sort-button): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
50 ;;But it does strange things when you switch back to the buffer list buffer
f9e5bd96c71c (Buffer-menu-sort, Buffer-menu-make-sort-button): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
51 ;;with C-x b, later on, when the window configuration is different.
f9e5bd96c71c (Buffer-menu-sort, Buffer-menu-make-sort-button): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
52 ;;The choice seems to be, either restore the window configuration
f9e5bd96c71c (Buffer-menu-sort, Buffer-menu-make-sort-button): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
53 ;;in all cases, or in no cases.
f9e5bd96c71c (Buffer-menu-sort, Buffer-menu-make-sort-button): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
54 ;;I decided it was better not to restore the window config at all. -- rms.
10592
bbb68f0d31c6 (list-buffers-noselect): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 10421
diff changeset
55
54580
f9e5bd96c71c (Buffer-menu-sort, Buffer-menu-make-sort-button): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
56 ;;But since then, I changed buffer-menu to use the selected window,
f9e5bd96c71c (Buffer-menu-sort, Buffer-menu-make-sort-button): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
57 ;;so q now once again goes back to the previous window configuration.
10592
bbb68f0d31c6 (list-buffers-noselect): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 10421
diff changeset
58
54580
f9e5bd96c71c (Buffer-menu-sort, Buffer-menu-make-sort-button): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
59 ;;(defvar Buffer-menu-window-config nil
f9e5bd96c71c (Buffer-menu-sort, Buffer-menu-make-sort-button): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
60 ;; "Window configuration saved from entry to `buffer-menu'.")
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
61
54580
f9e5bd96c71c (Buffer-menu-sort, Buffer-menu-make-sort-button): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
62 ;; Put buffer *Buffer List* into proper mode right away
f9e5bd96c71c (Buffer-menu-sort, Buffer-menu-make-sort-button): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
63 ;; so that from now on even list-buffers is enough to get a buffer menu.
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
64
48864
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
65 (defgroup Buffer-menu nil
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
66 "Show a menu of all buffers in a buffer."
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
67 :group 'tools
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
68 :group 'convenience)
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
69
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
70 (defcustom Buffer-menu-use-header-line t
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
71 "*Non-nil means to use an immovable header-line."
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
72 :type 'boolean
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
73 :group 'Buffer-menu)
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
74
68228
badae83666f6 (buffer-menu-buffer) <defface>: Renamed from
Juri Linkov <juri@jurta.org>
parents: 67492
diff changeset
75 (defface buffer-menu-buffer
48864
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
76 '((t (:weight bold)))
68228
badae83666f6 (buffer-menu-buffer) <defface>: Renamed from
Juri Linkov <juri@jurta.org>
parents: 67492
diff changeset
77 "Face used to highlight buffer names in the buffer menu."
65733
296124f7ef0e (Buffer-menu-buffer): Remove group `font-lock-highlighting-faces'.
Juri Linkov <juri@jurta.org>
parents: 65355
diff changeset
78 :group 'Buffer-menu)
68228
badae83666f6 (buffer-menu-buffer) <defface>: Renamed from
Juri Linkov <juri@jurta.org>
parents: 67492
diff changeset
79 (put 'Buffer-menu-buffer 'face-alias 'buffer-menu-buffer)
48864
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
80
48889
ec1a96fb72d6 Change default width of Buffer-menu-buffer+size-width to 24
Robert J. Chassell <bob@rattlesnake.com>
parents: 48864
diff changeset
81 (defcustom Buffer-menu-buffer+size-width 26
48864
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
82 "*How wide to jointly make the buffer name and size columns."
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
83 :type 'number
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
84 :group 'Buffer-menu)
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
85
48889
ec1a96fb72d6 Change default width of Buffer-menu-buffer+size-width to 24
Robert J. Chassell <bob@rattlesnake.com>
parents: 48864
diff changeset
86 (defcustom Buffer-menu-mode-width 16
48864
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
87 "*How wide to make the mode name column."
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
88 :type 'number
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
89 :group 'Buffer-menu)
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
90
67327
8e9343dc7c39 (Buffer-menu-use-frame-buffer-list): New user option.
Luc Teirlinck <teirllm@auburn.edu>
parents: 67177
diff changeset
91 (defcustom Buffer-menu-use-frame-buffer-list t
8e9343dc7c39 (Buffer-menu-use-frame-buffer-list): New user option.
Luc Teirlinck <teirllm@auburn.edu>
parents: 67177
diff changeset
92 "If non-nil, the Buffer Menu uses the selected frame's buffer list.
8e9343dc7c39 (Buffer-menu-use-frame-buffer-list): New user option.
Luc Teirlinck <teirllm@auburn.edu>
parents: 67177
diff changeset
93 Buffers that were never selected in that frame are listed at the end.
8e9343dc7c39 (Buffer-menu-use-frame-buffer-list): New user option.
Luc Teirlinck <teirllm@auburn.edu>
parents: 67177
diff changeset
94 If the value is nil, the Buffer Menu uses the global buffer list.
8e9343dc7c39 (Buffer-menu-use-frame-buffer-list): New user option.
Luc Teirlinck <teirllm@auburn.edu>
parents: 67177
diff changeset
95 This variable matters if the Buffer Menu is sorted by visited order,
8e9343dc7c39 (Buffer-menu-use-frame-buffer-list): New user option.
Luc Teirlinck <teirllm@auburn.edu>
parents: 67177
diff changeset
96 as it is by default."
8e9343dc7c39 (Buffer-menu-use-frame-buffer-list): New user option.
Luc Teirlinck <teirllm@auburn.edu>
parents: 67177
diff changeset
97 :type 'boolean
8e9343dc7c39 (Buffer-menu-use-frame-buffer-list): New user option.
Luc Teirlinck <teirllm@auburn.edu>
parents: 67177
diff changeset
98 :group 'Buffer-menu
8e9343dc7c39 (Buffer-menu-use-frame-buffer-list): New user option.
Luc Teirlinck <teirllm@auburn.edu>
parents: 67177
diff changeset
99 :version "22.1")
8e9343dc7c39 (Buffer-menu-use-frame-buffer-list): New user option.
Luc Teirlinck <teirllm@auburn.edu>
parents: 67177
diff changeset
100
54580
f9e5bd96c71c (Buffer-menu-sort, Buffer-menu-make-sort-button): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
101 ;; This should get updated & resorted when you click on a column heading
48864
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
102 (defvar Buffer-menu-sort-column nil
77727
02de25cb97f4 (Buffer-menu-sort-column): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 77707
diff changeset
103 "Which column to sort the menu on.
02de25cb97f4 (Buffer-menu-sort-column): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 77707
diff changeset
104 Use 2 to sort by buffer names, or 5 to sort by file names.
85610
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
105 A nil value means sort by visited order (the default).")
48864
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
106
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
107 (defconst Buffer-menu-buffer-column 4)
6640
532754d63384 (Buffer-menu-mode): Highlight only the buffer name, not the whole line.
Karl Heuer <kwzh@gnu.org>
parents: 6638
diff changeset
108
54594
c07fb48cb0e2 (Buffer-menu-revert-function): Make it suitable for
Luc Teirlinck <teirllm@auburn.edu>
parents: 54580
diff changeset
109 (defvar Buffer-menu-files-only nil
c07fb48cb0e2 (Buffer-menu-revert-function): Make it suitable for
Luc Teirlinck <teirllm@auburn.edu>
parents: 54580
diff changeset
110 "Non-nil if the current buffer-menu lists only file buffers.
c07fb48cb0e2 (Buffer-menu-revert-function): Make it suitable for
Luc Teirlinck <teirllm@auburn.edu>
parents: 54580
diff changeset
111 This variable determines whether reverting the buffer lists only
c07fb48cb0e2 (Buffer-menu-revert-function): Make it suitable for
Luc Teirlinck <teirllm@auburn.edu>
parents: 54580
diff changeset
112 file buffers. It affects both manual reverting and reverting by
c07fb48cb0e2 (Buffer-menu-revert-function): Make it suitable for
Luc Teirlinck <teirllm@auburn.edu>
parents: 54580
diff changeset
113 Auto Revert Mode.")
c07fb48cb0e2 (Buffer-menu-revert-function): Make it suitable for
Luc Teirlinck <teirllm@auburn.edu>
parents: 54580
diff changeset
114
85610
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
115 (make-variable-buffer-local 'Buffer-menu-files-only)
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
116
70967
b4e6091c2346 (list-buffers-noselect): For Info buffers, use Info-current-file as the
Eli Zaretskii <eliz@gnu.org>
parents: 69024
diff changeset
117 (defvar Info-current-file) ;; from info.el
72289
40a24db2adc4 (list-buffers-noselect): For Info buffers, use "(file)node" instead of the
Eli Zaretskii <eliz@gnu.org>
parents: 71516
diff changeset
118 (defvar Info-current-node) ;; from info.el
70967
b4e6091c2346 (list-buffers-noselect): For Info buffers, use Info-current-file as the
Eli Zaretskii <eliz@gnu.org>
parents: 69024
diff changeset
119
85610
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
120 (defvar Buffer-menu-mode-map
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
121 (let ((map (make-keymap)))
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
122 (suppress-keymap map t)
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
123 (define-key map "q" 'quit-window)
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
124 (define-key map "v" 'Buffer-menu-select)
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
125 (define-key map "2" 'Buffer-menu-2-window)
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
126 (define-key map "1" 'Buffer-menu-1-window)
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
127 (define-key map "f" 'Buffer-menu-this-window)
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
128 (define-key map "e" 'Buffer-menu-this-window)
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
129 (define-key map "\C-m" 'Buffer-menu-this-window)
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
130 (define-key map "o" 'Buffer-menu-other-window)
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
131 (define-key map "\C-o" 'Buffer-menu-switch-other-window)
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
132 (define-key map "s" 'Buffer-menu-save)
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
133 (define-key map "d" 'Buffer-menu-delete)
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
134 (define-key map "k" 'Buffer-menu-delete)
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
135 (define-key map "\C-d" 'Buffer-menu-delete-backwards)
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
136 (define-key map "\C-k" 'Buffer-menu-delete)
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
137 (define-key map "x" 'Buffer-menu-execute)
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
138 (define-key map " " 'next-line)
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
139 (define-key map "n" 'next-line)
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
140 (define-key map "p" 'previous-line)
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
141 (define-key map "\177" 'Buffer-menu-backup-unmark)
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
142 (define-key map "~" 'Buffer-menu-not-modified)
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
143 (define-key map "?" 'describe-mode)
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
144 (define-key map "u" 'Buffer-menu-unmark)
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
145 (define-key map "m" 'Buffer-menu-mark)
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
146 (define-key map "t" 'Buffer-menu-visit-tags-table)
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
147 (define-key map "%" 'Buffer-menu-toggle-read-only)
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
148 (define-key map "b" 'Buffer-menu-bury)
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
149 (define-key map "g" 'Buffer-menu-revert)
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
150 (define-key map "V" 'Buffer-menu-view)
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
151 (define-key map "T" 'Buffer-menu-toggle-files-only)
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
152 (define-key map [mouse-2] 'Buffer-menu-mouse-select)
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
153 (define-key map [follow-link] 'mouse-face)
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
154 map)
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
155 "Local keymap for `Buffer-menu-mode' buffers.")
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
156
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
157 ;; Buffer Menu mode is suitable only for specially formatted data.
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
158 (put 'Buffer-menu-mode 'mode-class 'special)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
159
85610
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
160 (define-derived-mode Buffer-menu-mode nil "Buffer Menu"
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
161 "Major mode for editing a list of buffers.
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
162 Each line describes one of the buffers in Emacs.
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
163 Letters do not insert themselves; instead, they are commands.
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
164 \\<Buffer-menu-mode-map>
6609
3b1eb7f1eba1 (Buffer-menu-mouse-select): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6084
diff changeset
165 \\[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
166 \\[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
167 \\[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
168 so the buffer menu buffer remains visible in its window.
25166
e8ec0085ff7b (Buffer-menu-mode-map): Add V for Buffer-menu-View.
Richard M. Stallman <rms@gnu.org>
parents: 21093
diff changeset
169 \\[Buffer-menu-view] -- select current line's buffer, but in view-mode.
e8ec0085ff7b (Buffer-menu-mode-map): Add V for Buffer-menu-View.
Richard M. Stallman <rms@gnu.org>
parents: 21093
diff changeset
170 \\[Buffer-menu-view-other-window] -- select that buffer in
e8ec0085ff7b (Buffer-menu-mode-map): Add V for Buffer-menu-View.
Richard M. Stallman <rms@gnu.org>
parents: 21093
diff changeset
171 another window, in view-mode.
6609
3b1eb7f1eba1 (Buffer-menu-mouse-select): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6084
diff changeset
172 \\[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
173 \\[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
174 \\[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
175 Also show buffers marked with m, in other windows.
777
c99faf9381bb *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
176 \\[Buffer-menu-1-window] -- select that buffer in full-frame window.
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
177 \\[Buffer-menu-2-window] -- select that buffer in one window,
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
178 together with buffer selected before this one in another window.
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
179 \\[Buffer-menu-visit-tags-table] -- visit-tags-table this buffer.
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
180 \\[Buffer-menu-not-modified] -- clear modified-flag on that buffer.
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
181 \\[Buffer-menu-save] -- mark that buffer to be saved, and move down.
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
182 \\[Buffer-menu-delete] -- mark that buffer to be deleted, and move down.
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
183 \\[Buffer-menu-delete-backwards] -- mark that buffer to be deleted, and move up.
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
184 \\[Buffer-menu-execute] -- delete or save marked buffers.
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
185 \\[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
186 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
187 \\[Buffer-menu-backup-unmark] -- back up a line and remove marks.
16401
249f797c3750 (Buffer-menu-revert): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
188 \\[Buffer-menu-toggle-read-only] -- toggle read-only status of buffer on this line.
18280
f693db11df45 (Buffer-menu-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 18278
diff changeset
189 \\[Buffer-menu-revert] -- update the list of buffers.
54594
c07fb48cb0e2 (Buffer-menu-revert-function): Make it suitable for
Luc Teirlinck <teirllm@auburn.edu>
parents: 54580
diff changeset
190 \\[Buffer-menu-toggle-files-only] -- toggle whether the menu displays only file buffers.
18280
f693db11df45 (Buffer-menu-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 18278
diff changeset
191 \\[Buffer-menu-bury] -- bury the buffer listed on this line."
54594
c07fb48cb0e2 (Buffer-menu-revert-function): Make it suitable for
Luc Teirlinck <teirllm@auburn.edu>
parents: 54580
diff changeset
192 (set (make-local-variable 'revert-buffer-function)
c07fb48cb0e2 (Buffer-menu-revert-function): Make it suitable for
Luc Teirlinck <teirllm@auburn.edu>
parents: 54580
diff changeset
193 'Buffer-menu-revert-function)
c07fb48cb0e2 (Buffer-menu-revert-function): Make it suitable for
Luc Teirlinck <teirllm@auburn.edu>
parents: 54580
diff changeset
194 (set (make-local-variable 'buffer-stale-function)
54670
e30c06266ba0 (Buffer-menu-mode): Make the buffer-stale-function return `fast'.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54594
diff changeset
195 #'(lambda (&optional noconfirm) 'fast))
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
196 (setq truncate-lines t)
85610
e8808cf949cd (Buffer-menu-sort-column): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
197 (setq buffer-read-only t))
8161
6b104526819d (Buffer-menu-revert-function): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7659
diff changeset
198
58461
5049881e14d7 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 58425
diff changeset
199 ;; This function exists so we can make the doc string of Buffer-menu-mode
5049881e14d7 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 58425
diff changeset
200 ;; look nice.
16401
249f797c3750 (Buffer-menu-revert): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
201 (defun Buffer-menu-revert ()
249f797c3750 (Buffer-menu-revert): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
202 "Update the list of buffers."
249f797c3750 (Buffer-menu-revert): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
203 (interactive)
249f797c3750 (Buffer-menu-revert): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
204 (revert-buffer))
249f797c3750 (Buffer-menu-revert): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
205
8161
6b104526819d (Buffer-menu-revert-function): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7659
diff changeset
206 (defun Buffer-menu-revert-function (ignore1 ignore2)
59092
49971daa80c5 (Buffer-menu-revert-function): Clear out undo info before reverting
Luc Teirlinck <teirllm@auburn.edu>
parents: 58955
diff changeset
207 (or (eq buffer-undo-list t)
49971daa80c5 (Buffer-menu-revert-function): Clear out undo info before reverting
Luc Teirlinck <teirllm@auburn.edu>
parents: 58955
diff changeset
208 (setq buffer-undo-list nil))
54594
c07fb48cb0e2 (Buffer-menu-revert-function): Make it suitable for
Luc Teirlinck <teirllm@auburn.edu>
parents: 54580
diff changeset
209 ;; We can not use save-excursion here. The buffer gets erased.
62703
a078b317d07c (Buffer-menu-revert-function): Improve handling of point after reverting.
Luc Teirlinck <teirllm@auburn.edu>
parents: 62634
diff changeset
210 (let ((opoint (point))
a078b317d07c (Buffer-menu-revert-function): Improve handling of point after reverting.
Luc Teirlinck <teirllm@auburn.edu>
parents: 62634
diff changeset
211 (eobp (eobp))
a078b317d07c (Buffer-menu-revert-function): Improve handling of point after reverting.
Luc Teirlinck <teirllm@auburn.edu>
parents: 62634
diff changeset
212 (ocol (current-column))
57555
716fe8f547c3 (Buffer-menu-revert-function): Emulate save-excursion.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57030
diff changeset
213 (oline (progn (move-to-column 4)
716fe8f547c3 (Buffer-menu-revert-function): Emulate save-excursion.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57030
diff changeset
214 (get-text-property (point) 'buffer)))
59092
49971daa80c5 (Buffer-menu-revert-function): Clear out undo info before reverting
Luc Teirlinck <teirllm@auburn.edu>
parents: 58955
diff changeset
215 (prop (point-min))
49971daa80c5 (Buffer-menu-revert-function): Clear out undo info before reverting
Luc Teirlinck <teirllm@auburn.edu>
parents: 58955
diff changeset
216 ;; do not make undo records for the reversion.
49971daa80c5 (Buffer-menu-revert-function): Clear out undo info before reverting
Luc Teirlinck <teirllm@auburn.edu>
parents: 58955
diff changeset
217 (buffer-undo-list t))
67170
82157c2afd44 (Buffer-menu-revert-function): Make the selected window's buffer the
Luc Teirlinck <teirllm@auburn.edu>
parents: 65733
diff changeset
218 ;; We can be called by Auto Revert Mode with the "*Buffer Menu*"
82157c2afd44 (Buffer-menu-revert-function): Make the selected window's buffer the
Luc Teirlinck <teirllm@auburn.edu>
parents: 65733
diff changeset
219 ;; temporarily the current buffer. Make sure that the
82157c2afd44 (Buffer-menu-revert-function): Make the selected window's buffer the
Luc Teirlinck <teirllm@auburn.edu>
parents: 65733
diff changeset
220 ;; interactively current buffer is correctly identified with a `.'
82157c2afd44 (Buffer-menu-revert-function): Make the selected window's buffer the
Luc Teirlinck <teirllm@auburn.edu>
parents: 65733
diff changeset
221 ;; by `list-buffers-noselect'.
82157c2afd44 (Buffer-menu-revert-function): Make the selected window's buffer the
Luc Teirlinck <teirllm@auburn.edu>
parents: 65733
diff changeset
222 (with-current-buffer (window-buffer)
82157c2afd44 (Buffer-menu-revert-function): Make the selected window's buffer the
Luc Teirlinck <teirllm@auburn.edu>
parents: 65733
diff changeset
223 (list-buffers-noselect Buffer-menu-files-only))
62703
a078b317d07c (Buffer-menu-revert-function): Improve handling of point after reverting.
Luc Teirlinck <teirllm@auburn.edu>
parents: 62634
diff changeset
224 (if oline
a078b317d07c (Buffer-menu-revert-function): Improve handling of point after reverting.
Luc Teirlinck <teirllm@auburn.edu>
parents: 62634
diff changeset
225 (while (setq prop (next-single-property-change prop 'buffer))
a078b317d07c (Buffer-menu-revert-function): Improve handling of point after reverting.
Luc Teirlinck <teirllm@auburn.edu>
parents: 62634
diff changeset
226 (when (eq (get-text-property prop 'buffer) oline)
a078b317d07c (Buffer-menu-revert-function): Improve handling of point after reverting.
Luc Teirlinck <teirllm@auburn.edu>
parents: 62634
diff changeset
227 (goto-char prop)
a078b317d07c (Buffer-menu-revert-function): Improve handling of point after reverting.
Luc Teirlinck <teirllm@auburn.edu>
parents: 62634
diff changeset
228 (move-to-column ocol)))
a078b317d07c (Buffer-menu-revert-function): Improve handling of point after reverting.
Luc Teirlinck <teirllm@auburn.edu>
parents: 62634
diff changeset
229 (goto-char (if eobp (point-max) opoint)))))
54594
c07fb48cb0e2 (Buffer-menu-revert-function): Make it suitable for
Luc Teirlinck <teirllm@auburn.edu>
parents: 54580
diff changeset
230
c07fb48cb0e2 (Buffer-menu-revert-function): Make it suitable for
Luc Teirlinck <teirllm@auburn.edu>
parents: 54580
diff changeset
231 (defun Buffer-menu-toggle-files-only (arg)
c07fb48cb0e2 (Buffer-menu-revert-function): Make it suitable for
Luc Teirlinck <teirllm@auburn.edu>
parents: 54580
diff changeset
232 "Toggle whether the current buffer-menu displays only file buffers.
c07fb48cb0e2 (Buffer-menu-revert-function): Make it suitable for
Luc Teirlinck <teirllm@auburn.edu>
parents: 54580
diff changeset
233 With a positive ARG display only file buffers. With zero or
c07fb48cb0e2 (Buffer-menu-revert-function): Make it suitable for
Luc Teirlinck <teirllm@auburn.edu>
parents: 54580
diff changeset
234 negative ARG, display other buffers as well."
c07fb48cb0e2 (Buffer-menu-revert-function): Make it suitable for
Luc Teirlinck <teirllm@auburn.edu>
parents: 54580
diff changeset
235 (interactive "P")
c07fb48cb0e2 (Buffer-menu-revert-function): Make it suitable for
Luc Teirlinck <teirllm@auburn.edu>
parents: 54580
diff changeset
236 (setq Buffer-menu-files-only
c07fb48cb0e2 (Buffer-menu-revert-function): Make it suitable for
Luc Teirlinck <teirllm@auburn.edu>
parents: 54580
diff changeset
237 (cond ((not arg) (not Buffer-menu-files-only))
c07fb48cb0e2 (Buffer-menu-revert-function): Make it suitable for
Luc Teirlinck <teirllm@auburn.edu>
parents: 54580
diff changeset
238 ((> (prefix-numeric-value arg) 0) t)))
c07fb48cb0e2 (Buffer-menu-revert-function): Make it suitable for
Luc Teirlinck <teirllm@auburn.edu>
parents: 54580
diff changeset
239 (revert-buffer))
c07fb48cb0e2 (Buffer-menu-revert-function): Make it suitable for
Luc Teirlinck <teirllm@auburn.edu>
parents: 54580
diff changeset
240
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
241
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
242 (defun Buffer-menu-buffer (error-if-non-existent-p)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
243 "Return buffer described by this line of buffer menu."
11215
896932ac8ced (list-buffers-noselect): Put buffer name in a text
Richard M. Stallman <rms@gnu.org>
parents: 10765
diff changeset
244 (let* ((where (save-excursion
896932ac8ced (list-buffers-noselect): Put buffer name in a text
Richard M. Stallman <rms@gnu.org>
parents: 10765
diff changeset
245 (beginning-of-line)
896932ac8ced (list-buffers-noselect): Put buffer name in a text
Richard M. Stallman <rms@gnu.org>
parents: 10765
diff changeset
246 (+ (point) Buffer-menu-buffer-column)))
30828
26dae0a7f527 (list-buffers-noselect): Set `buffer' as well as
Gerd Moellmann <gerd@gnu.org>
parents: 30824
diff changeset
247 (name (and (not (eobp)) (get-text-property where 'buffer-name)))
26dae0a7f527 (list-buffers-noselect): Set `buffer' as well as
Gerd Moellmann <gerd@gnu.org>
parents: 30824
diff changeset
248 (buf (and (not (eobp)) (get-text-property where 'buffer))))
11215
896932ac8ced (list-buffers-noselect): Put buffer name in a text
Richard M. Stallman <rms@gnu.org>
parents: 10765
diff changeset
249 (if name
896932ac8ced (list-buffers-noselect): Put buffer name in a text
Richard M. Stallman <rms@gnu.org>
parents: 10765
diff changeset
250 (or (get-buffer name)
30828
26dae0a7f527 (list-buffers-noselect): Set `buffer' as well as
Gerd Moellmann <gerd@gnu.org>
parents: 30824
diff changeset
251 (and buf (buffer-name buf) buf)
11215
896932ac8ced (list-buffers-noselect): Put buffer name in a text
Richard M. Stallman <rms@gnu.org>
parents: 10765
diff changeset
252 (if error-if-non-existent-p
896932ac8ced (list-buffers-noselect): Put buffer name in a text
Richard M. Stallman <rms@gnu.org>
parents: 10765
diff changeset
253 (error "No buffer named `%s'" name)
896932ac8ced (list-buffers-noselect): Put buffer name in a text
Richard M. Stallman <rms@gnu.org>
parents: 10765
diff changeset
254 nil))
30828
26dae0a7f527 (list-buffers-noselect): Set `buffer' as well as
Gerd Moellmann <gerd@gnu.org>
parents: 30824
diff changeset
255 (or (and buf (buffer-name buf) buf)
50033
cd78fe221607 (Buffer-menu-mode-map): Add docstring.
John Paul Wallington <jpw@pobox.com>
parents: 49155
diff changeset
256 (if error-if-non-existent-p
cd78fe221607 (Buffer-menu-mode-map): Add docstring.
John Paul Wallington <jpw@pobox.com>
parents: 49155
diff changeset
257 (error "No buffer on this line")
30828
26dae0a7f527 (list-buffers-noselect): Set `buffer' as well as
Gerd Moellmann <gerd@gnu.org>
parents: 30824
diff changeset
258 nil)))))
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
259
756
0276f8eb306f *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 735
diff changeset
260 (defun buffer-menu (&optional arg)
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
261 "Make a menu of buffers so you can save, delete or select them.
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
262 With argument, show only buffers that are visiting files.
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
263 Type ? after invocation to get help on commands available.
40622
d2bfc00496d7 (buffer-menu): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 40489
diff changeset
264 Type q to remove the buffer menu from the display.
d2bfc00496d7 (buffer-menu): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 40489
diff changeset
265
d2bfc00496d7 (buffer-menu): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 40489
diff changeset
266 The first column shows `>' for a buffer you have
d2bfc00496d7 (buffer-menu): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 40489
diff changeset
267 marked to be displayed, `D' for one you have marked for
d2bfc00496d7 (buffer-menu): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 40489
diff changeset
268 deletion, and `.' for the current buffer.
d2bfc00496d7 (buffer-menu): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 40489
diff changeset
269
48864
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
270 The C column has a `.' for the buffer from which you came.
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
271 The R column has a `%' if the buffer is read-only.
40622
d2bfc00496d7 (buffer-menu): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 40489
diff changeset
272 The M column has a `*' if it is modified,
d2bfc00496d7 (buffer-menu): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 40489
diff changeset
273 or `S' if you have marked it for saving.
d2bfc00496d7 (buffer-menu): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 40489
diff changeset
274 After this come the buffer name, its size in characters,
d2bfc00496d7 (buffer-menu): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 40489
diff changeset
275 its major mode, and the visited file name (if any)."
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
276 (interactive "P")
2736
d6ff54640930 (buffer-menu): Don't save a window config.
Richard M. Stallman <rms@gnu.org>
parents: 2422
diff changeset
277 ;;; (setq Buffer-menu-window-config (current-window-configuration))
10592
bbb68f0d31c6 (list-buffers-noselect): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 10421
diff changeset
278 (switch-to-buffer (list-buffers-noselect arg))
bbb68f0d31c6 (list-buffers-noselect): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 10421
diff changeset
279 (message
bbb68f0d31c6 (list-buffers-noselect): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 10421
diff changeset
280 "Commands: d, s, x, u; f, o, 1, 2, m, v; ~, %%; q to quit; ? for help."))
bbb68f0d31c6 (list-buffers-noselect): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 10421
diff changeset
281
bbb68f0d31c6 (list-buffers-noselect): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 10421
diff changeset
282 (defun buffer-menu-other-window (&optional arg)
bbb68f0d31c6 (list-buffers-noselect): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 10421
diff changeset
283 "Display a list of buffers in another window.
bbb68f0d31c6 (list-buffers-noselect): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 10421
diff changeset
284 With the buffer list buffer, you can save, delete or select the buffers.
bbb68f0d31c6 (list-buffers-noselect): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 10421
diff changeset
285 With argument, show only buffers that are visiting files.
bbb68f0d31c6 (list-buffers-noselect): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 10421
diff changeset
286 Type ? after invocation to get help on commands available.
40622
d2bfc00496d7 (buffer-menu): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 40489
diff changeset
287 Type q to remove the buffer menu from the display.
d2bfc00496d7 (buffer-menu): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 40489
diff changeset
288 For more information, see the function `buffer-menu'."
10592
bbb68f0d31c6 (list-buffers-noselect): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 10421
diff changeset
289 (interactive "P")
bbb68f0d31c6 (list-buffers-noselect): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 10421
diff changeset
290 ;;; (setq Buffer-menu-window-config (current-window-configuration))
bbb68f0d31c6 (list-buffers-noselect): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 10421
diff changeset
291 (switch-to-buffer-other-window (list-buffers-noselect arg))
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
292 (message
2736
d6ff54640930 (buffer-menu): Don't save a window config.
Richard M. Stallman <rms@gnu.org>
parents: 2422
diff changeset
293 "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
294
48864
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
295 (defun Buffer-menu-no-header ()
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
296 (beginning-of-line)
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
297 (if (or Buffer-menu-use-header-line
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
298 (not (eq (char-after) ?C)))
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
299 t
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
300 (ding)
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
301 (forward-line 1)
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
302 nil))
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
303
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
304 (defun Buffer-menu-mark ()
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
305 "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
306 (interactive)
48864
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
307 (when (Buffer-menu-no-header)
96276
5f58c2a66de7 * buff-menu.el: Use with-current-buffer and inhibit-read-only.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
308 (let ((inhibit-read-only t))
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
309 (delete-char 1)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
310 (insert ?>)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
311 (forward-line 1))))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
312
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 (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
314 "Cancel all requested operations on buffer on this line and move down.
64529
8b0db2e8ccd3 (Buffer-menu-unmark): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
315 Optional prefix arg means move up."
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
316 (interactive "P")
48864
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
317 (when (Buffer-menu-no-header)
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
318 (let* ((buf (Buffer-menu-buffer t))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
319 (mod (buffer-modified-p buf))
96276
5f58c2a66de7 * buff-menu.el: Use with-current-buffer and inhibit-read-only.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
320 (readonly (with-current-buffer buf buffer-read-only))
5f58c2a66de7 * buff-menu.el: Use with-current-buffer and inhibit-read-only.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
321 (inhibit-read-only t))
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
322 (delete-char 3)
48864
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
323 (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
324 (forward-line (if backup -1 1)))
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
325
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
326 (defun Buffer-menu-backup-unmark ()
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
327 "Move up and cancel all requested operations on buffer on line above."
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
328 (interactive)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
329 (forward-line -1)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
330 (Buffer-menu-unmark)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
331 (forward-line -1))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
332
9063
d6913bc11bb2 (Buffer-menu-delete): Handle prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 8365
diff changeset
333 (defun Buffer-menu-delete (&optional arg)
d6913bc11bb2 (Buffer-menu-delete): Handle prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 8365
diff changeset
334 "Mark buffer on this line to be deleted by \\<Buffer-menu-mode-map>\\[Buffer-menu-execute] command.
d6913bc11bb2 (Buffer-menu-delete): Handle prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 8365
diff changeset
335 Prefix arg is how many buffers to delete.
d6913bc11bb2 (Buffer-menu-delete): Handle prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 8365
diff changeset
336 Negative arg means delete backwards."
d6913bc11bb2 (Buffer-menu-delete): Handle prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 8365
diff changeset
337 (interactive "p")
48864
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
338 (when (Buffer-menu-no-header)
96276
5f58c2a66de7 * buff-menu.el: Use with-current-buffer and inhibit-read-only.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
339 (let ((inhibit-read-only t))
9063
d6913bc11bb2 (Buffer-menu-delete): Handle prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 8365
diff changeset
340 (if (or (null arg) (= arg 0))
d6913bc11bb2 (Buffer-menu-delete): Handle prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 8365
diff changeset
341 (setq arg 1))
d6913bc11bb2 (Buffer-menu-delete): Handle prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 8365
diff changeset
342 (while (> arg 0)
d6913bc11bb2 (Buffer-menu-delete): Handle prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 8365
diff changeset
343 (delete-char 1)
d6913bc11bb2 (Buffer-menu-delete): Handle prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 8365
diff changeset
344 (insert ?D)
d6913bc11bb2 (Buffer-menu-delete): Handle prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 8365
diff changeset
345 (forward-line 1)
d6913bc11bb2 (Buffer-menu-delete): Handle prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 8365
diff changeset
346 (setq arg (1- arg)))
48864
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
347 (while (and (< arg 0)
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
348 (Buffer-menu-no-header))
9063
d6913bc11bb2 (Buffer-menu-delete): Handle prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 8365
diff changeset
349 (delete-char 1)
d6913bc11bb2 (Buffer-menu-delete): Handle prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 8365
diff changeset
350 (insert ?D)
d6913bc11bb2 (Buffer-menu-delete): Handle prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 8365
diff changeset
351 (forward-line -1)
d6913bc11bb2 (Buffer-menu-delete): Handle prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 8365
diff changeset
352 (setq arg (1+ arg))))))
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
353
9063
d6913bc11bb2 (Buffer-menu-delete): Handle prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 8365
diff changeset
354 (defun Buffer-menu-delete-backwards (&optional arg)
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
355 "Mark buffer on this line to be deleted by \\<Buffer-menu-mode-map>\\[Buffer-menu-execute] command
9063
d6913bc11bb2 (Buffer-menu-delete): Handle prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 8365
diff changeset
356 and then move up one line. Prefix arg means move that many lines."
d6913bc11bb2 (Buffer-menu-delete): Handle prefix arg.
Richard M. Stallman <rms@gnu.org>
parents: 8365
diff changeset
357 (interactive "p")
48864
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
358 (Buffer-menu-delete (- (or arg 1))))
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
359
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
360 (defun Buffer-menu-save ()
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
361 "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
362 (interactive)
48864
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
363 (when (Buffer-menu-no-header)
96276
5f58c2a66de7 * buff-menu.el: Use with-current-buffer and inhibit-read-only.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
364 (let ((inhibit-read-only t))
48864
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
365 (forward-char 2)
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
366 (delete-char 1)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
367 (insert ?S)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
368 (forward-line 1))))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
369
8196
89db3662bcec (Buffer-menu-not-modified): Make `Buffer-menu-not-modified' handle an
Richard M. Stallman <rms@gnu.org>
parents: 8161
diff changeset
370 (defun Buffer-menu-not-modified (&optional arg)
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
371 "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
372 (interactive "P")
96276
5f58c2a66de7 * buff-menu.el: Use with-current-buffer and inhibit-read-only.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
373 (with-current-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
374 (set-buffer-modified-p arg))
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
375 (save-excursion
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
376 (beginning-of-line)
48864
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
377 (forward-char 2)
64529
8b0db2e8ccd3 (Buffer-menu-unmark): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
378 (if (= (char-after) (if arg ?\s ?*))
96276
5f58c2a66de7 * buff-menu.el: Use with-current-buffer and inhibit-read-only.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
379 (let ((inhibit-read-only t))
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
380 (delete-char 1)
64529
8b0db2e8ccd3 (Buffer-menu-unmark): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
381 (insert (if arg ?* ?\s))))))
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
382
57555
716fe8f547c3 (Buffer-menu-revert-function): Emulate save-excursion.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57030
diff changeset
383 (defun Buffer-menu-beginning ()
716fe8f547c3 (Buffer-menu-revert-function): Emulate save-excursion.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57030
diff changeset
384 (goto-char (point-min))
716fe8f547c3 (Buffer-menu-revert-function): Emulate save-excursion.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57030
diff changeset
385 (unless Buffer-menu-use-header-line
716fe8f547c3 (Buffer-menu-revert-function): Emulate save-excursion.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57030
diff changeset
386 (forward-line)))
716fe8f547c3 (Buffer-menu-revert-function): Emulate save-excursion.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57030
diff changeset
387
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
388 (defun Buffer-menu-execute ()
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
389 "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
390 (interactive)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
391 (save-excursion
57555
716fe8f547c3 (Buffer-menu-revert-function): Emulate save-excursion.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57030
diff changeset
392 (Buffer-menu-beginning)
48864
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
393 (while (re-search-forward "^..S" nil t)
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
394 (let ((modp nil))
96276
5f58c2a66de7 * buff-menu.el: Use with-current-buffer and inhibit-read-only.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
395 (with-current-buffer (Buffer-menu-buffer t)
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
396 (save-buffer)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
397 (setq modp (buffer-modified-p)))
96276
5f58c2a66de7 * buff-menu.el: Use with-current-buffer and inhibit-read-only.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
398 (let ((inhibit-read-only t))
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
399 (delete-char -1)
64529
8b0db2e8ccd3 (Buffer-menu-unmark): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
400 (insert (if modp ?* ?\s))))))
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
401 (save-excursion
57555
716fe8f547c3 (Buffer-menu-revert-function): Emulate save-excursion.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57030
diff changeset
402 (Buffer-menu-beginning)
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
403 (let ((buff-menu-buffer (current-buffer))
96276
5f58c2a66de7 * buff-menu.el: Use with-current-buffer and inhibit-read-only.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
404 (inhibit-read-only t))
49050
8b38bac9826a (Buffer-menu-execute): Fix for effect of header
Dave Love <fx@gnu.org>
parents: 49046
diff changeset
405 (while (re-search-forward "^D" nil t)
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
406 (forward-char -1)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
407 (let ((buf (Buffer-menu-buffer nil)))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
408 (or (eq buf nil)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
409 (eq buf buff-menu-buffer)
30828
26dae0a7f527 (list-buffers-noselect): Set `buffer' as well as
Gerd Moellmann <gerd@gnu.org>
parents: 30824
diff changeset
410 (save-excursion (kill-buffer buf)))
26dae0a7f527 (list-buffers-noselect): Set `buffer' as well as
Gerd Moellmann <gerd@gnu.org>
parents: 30824
diff changeset
411 (if (and buf (buffer-name buf))
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
412 (progn (delete-char 1)
64529
8b0db2e8ccd3 (Buffer-menu-unmark): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
413 (insert ?\s))
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
414 (delete-region (point) (progn (forward-line 1) (point)))
49050
8b38bac9826a (Buffer-menu-execute): Fix for effect of header
Dave Love <fx@gnu.org>
parents: 49046
diff changeset
415 (unless (bobp)
8b38bac9826a (Buffer-menu-execute): Fix for effect of header
Dave Love <fx@gnu.org>
parents: 49046
diff changeset
416 (forward-char -1))))))))
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
417
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
418 (defun Buffer-menu-select ()
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
419 "Select this line's buffer; also display buffers marked with `>'.
10592
bbb68f0d31c6 (list-buffers-noselect): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 10421
diff changeset
420 You can mark buffers with the \\<Buffer-menu-mode-map>\\[Buffer-menu-mark] command.
bbb68f0d31c6 (list-buffers-noselect): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 10421
diff changeset
421 This command deletes and replaces all the previously existing windows
bbb68f0d31c6 (list-buffers-noselect): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 10421
diff changeset
422 in the selected frame."
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
423 (interactive)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
424 (let ((buff (Buffer-menu-buffer t))
30851
f9233f642b88 * buff-menu.el (list-buffers-noselect): Use `dolist' instead of
Sam Steingold <sds@gnu.org>
parents: 30828
diff changeset
425 (menu (current-buffer))
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
426 (others ())
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
427 tem)
57555
716fe8f547c3 (Buffer-menu-revert-function): Emulate save-excursion.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57030
diff changeset
428 (Buffer-menu-beginning)
49155
e8a430c172dc (Buffer-menu-select): Fix for effect of header line.
Andreas Schwab <schwab@suse.de>
parents: 49050
diff changeset
429 (while (re-search-forward "^>" nil t)
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
430 (setq tem (Buffer-menu-buffer t))
96276
5f58c2a66de7 * buff-menu.el: Use with-current-buffer and inhibit-read-only.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
431 (let ((inhibit-read-only t))
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
432 (delete-char -1)
64529
8b0db2e8ccd3 (Buffer-menu-unmark): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
433 (insert ?\s))
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
434 (or (eq tem buff) (memq tem others) (setq others (cons tem others))))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
435 (setq others (nreverse others)
777
c99faf9381bb *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
436 tem (/ (1- (frame-height)) (1+ (length others))))
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
437 (delete-other-windows)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
438 (switch-to-buffer buff)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
439 (or (eq menu buff)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
440 (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
441 (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
442 (progn
2736
d6ff54640930 (buffer-menu): Don't save a window config.
Richard M. Stallman <rms@gnu.org>
parents: 2422
diff changeset
443 ;;; ;; 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
444 ;;; ;; selected buffers.
d6ff54640930 (buffer-menu): Don't save a window config.
Richard M. Stallman <rms@gnu.org>
parents: 2422
diff changeset
445 ;;; (if Buffer-menu-window-config
d6ff54640930 (buffer-menu): Don't save a window config.
Richard M. Stallman <rms@gnu.org>
parents: 2422
diff changeset
446 ;;; (progn
d6ff54640930 (buffer-menu): Don't save a window config.
Richard M. Stallman <rms@gnu.org>
parents: 2422
diff changeset
447 ;;; (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
448 ;;; (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
449 (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
450 (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
451 (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
452 (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
453 (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
454 (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
455 (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
456 )))
ec4ffd67483d Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
457
10592
bbb68f0d31c6 (list-buffers-noselect): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 10421
diff changeset
458
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
459
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
460 (defun Buffer-menu-visit-tags-table ()
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
461 "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
462 (interactive)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
463 (let ((file (buffer-file-name (Buffer-menu-buffer t))))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
464 (if file
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
465 (visit-tags-table file)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
466 (error "Specified buffer has no file"))))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
467
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
468 (defun Buffer-menu-1-window ()
777
c99faf9381bb *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
469 "Select this line's buffer, alone, in full frame."
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
470 (interactive)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
471 (switch-to-buffer (Buffer-menu-buffer t))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
472 (bury-buffer (other-buffer))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
473 (delete-other-windows))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
474
6609
3b1eb7f1eba1 (Buffer-menu-mouse-select): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6084
diff changeset
475 (defun Buffer-menu-mouse-select (event)
3b1eb7f1eba1 (Buffer-menu-mouse-select): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6084
diff changeset
476 "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
477 (interactive "e")
3b1eb7f1eba1 (Buffer-menu-mouse-select): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6084
diff changeset
478 (let (buffer)
96276
5f58c2a66de7 * buff-menu.el: Use with-current-buffer and inhibit-read-only.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
479 (with-current-buffer (window-buffer (posn-window (event-end event)))
6609
3b1eb7f1eba1 (Buffer-menu-mouse-select): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6084
diff changeset
480 (save-excursion
3b1eb7f1eba1 (Buffer-menu-mouse-select): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6084
diff changeset
481 (goto-char (posn-point (event-end event)))
3b1eb7f1eba1 (Buffer-menu-mouse-select): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6084
diff changeset
482 (setq buffer (Buffer-menu-buffer t))))
3b1eb7f1eba1 (Buffer-menu-mouse-select): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6084
diff changeset
483 (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
484 (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
485 (eq (selected-window) (frame-root-window)))
ed3bbbdd9ef5 (Buffer-menu-mouse-select): Handle dedicated window.
Richard M. Stallman <rms@gnu.org>
parents: 7298
diff changeset
486 (switch-to-buffer-other-frame buffer)
ed3bbbdd9ef5 (Buffer-menu-mouse-select): Handle dedicated window.
Richard M. Stallman <rms@gnu.org>
parents: 7298
diff changeset
487 (switch-to-buffer buffer))))
6609
3b1eb7f1eba1 (Buffer-menu-mouse-select): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6084
diff changeset
488
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
489 (defun Buffer-menu-this-window ()
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
490 "Select this line's buffer in this window."
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
491 (interactive)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
492 (switch-to-buffer (Buffer-menu-buffer t)))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
493
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
494 (defun Buffer-menu-other-window ()
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
495 "Select this line's buffer in other window, leaving buffer menu visible."
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
496 (interactive)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
497 (switch-to-buffer-other-window (Buffer-menu-buffer t)))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
498
735
ea0823fe7df5 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 662
diff changeset
499 (defun Buffer-menu-switch-other-window ()
ea0823fe7df5 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 662
diff changeset
500 "Make the other window select this line's buffer.
ea0823fe7df5 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 662
diff changeset
501 The current window remains selected."
ea0823fe7df5 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 662
diff changeset
502 (interactive)
58955
58f1100f0a9e (Buffer-menu-switch-other-window): Bind pop-up-windows to t.
Juri Linkov <juri@jurta.org>
parents: 58954
diff changeset
503 (let ((pop-up-windows t)
58f1100f0a9e (Buffer-menu-switch-other-window): Bind pop-up-windows to t.
Juri Linkov <juri@jurta.org>
parents: 58954
diff changeset
504 same-window-buffer-names
58f1100f0a9e (Buffer-menu-switch-other-window): Bind pop-up-windows to t.
Juri Linkov <juri@jurta.org>
parents: 58954
diff changeset
505 same-window-regexps)
58f1100f0a9e (Buffer-menu-switch-other-window): Bind pop-up-windows to t.
Juri Linkov <juri@jurta.org>
parents: 58954
diff changeset
506 (display-buffer (Buffer-menu-buffer t))))
735
ea0823fe7df5 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 662
diff changeset
507
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
508 (defun Buffer-menu-2-window ()
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
509 "Select this line's buffer, with previous buffer in second window."
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
510 (interactive)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
511 (let ((buff (Buffer-menu-buffer t))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
512 (menu (current-buffer))
58955
58f1100f0a9e (Buffer-menu-switch-other-window): Bind pop-up-windows to t.
Juri Linkov <juri@jurta.org>
parents: 58954
diff changeset
513 (pop-up-windows t)
58f1100f0a9e (Buffer-menu-switch-other-window): Bind pop-up-windows to t.
Juri Linkov <juri@jurta.org>
parents: 58954
diff changeset
514 same-window-buffer-names
58f1100f0a9e (Buffer-menu-switch-other-window): Bind pop-up-windows to t.
Juri Linkov <juri@jurta.org>
parents: 58954
diff changeset
515 same-window-regexps)
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
516 (delete-other-windows)
194
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
517 (switch-to-buffer (other-buffer))
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
518 (pop-to-buffer buff)
5b0d1a9cf37e Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
519 (bury-buffer menu)))
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 194
diff changeset
520
2378
c5d0140aa7b6 (Buffer-menu-toggle-read-only) Added, per Rob Austein's suggestion
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2334
diff changeset
521 (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
522 "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
523 (interactive)
c5d0140aa7b6 (Buffer-menu-toggle-read-only) Added, per Rob Austein's suggestion
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2334
diff changeset
524 (let (char)
96276
5f58c2a66de7 * buff-menu.el: Use with-current-buffer and inhibit-read-only.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
525 (with-current-buffer (Buffer-menu-buffer t)
5f58c2a66de7 * buff-menu.el: Use with-current-buffer and inhibit-read-only.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
526 (toggle-read-only)
64529
8b0db2e8ccd3 (Buffer-menu-unmark): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
527 (setq char (if buffer-read-only ?% ?\s)))
2378
c5d0140aa7b6 (Buffer-menu-toggle-read-only) Added, per Rob Austein's suggestion
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2334
diff changeset
528 (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
529 (beginning-of-line)
48864
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
530 (forward-char 1)
2378
c5d0140aa7b6 (Buffer-menu-toggle-read-only) Added, per Rob Austein's suggestion
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2334
diff changeset
531 (if (/= (following-char) char)
96276
5f58c2a66de7 * buff-menu.el: Use with-current-buffer and inhibit-read-only.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
532 (let ((inhibit-read-only t))
2378
c5d0140aa7b6 (Buffer-menu-toggle-read-only) Added, per Rob Austein's suggestion
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2334
diff changeset
533 (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
534 (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
535
18278
4f78346eb734 (Buffer-menu-bury): New command.
Richard M. Stallman <rms@gnu.org>
parents: 16401
diff changeset
536 (defun Buffer-menu-bury ()
4f78346eb734 (Buffer-menu-bury): New command.
Richard M. Stallman <rms@gnu.org>
parents: 16401
diff changeset
537 "Bury the buffer listed on this line."
4f78346eb734 (Buffer-menu-bury): New command.
Richard M. Stallman <rms@gnu.org>
parents: 16401
diff changeset
538 (interactive)
48864
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
539 (when (Buffer-menu-no-header)
18280
f693db11df45 (Buffer-menu-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 18278
diff changeset
540 (save-excursion
f693db11df45 (Buffer-menu-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 18278
diff changeset
541 (beginning-of-line)
f693db11df45 (Buffer-menu-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 18278
diff changeset
542 (bury-buffer (Buffer-menu-buffer t))
f693db11df45 (Buffer-menu-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 18278
diff changeset
543 (let ((line (buffer-substring (point) (progn (forward-line 1) (point))))
96276
5f58c2a66de7 * buff-menu.el: Use with-current-buffer and inhibit-read-only.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
544 (inhibit-read-only t))
18280
f693db11df45 (Buffer-menu-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 18278
diff changeset
545 (delete-region (point) (progn (forward-line -1) (point)))
f693db11df45 (Buffer-menu-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 18278
diff changeset
546 (goto-char (point-max))
f693db11df45 (Buffer-menu-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 18278
diff changeset
547 (insert line))
f693db11df45 (Buffer-menu-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 18278
diff changeset
548 (message "Buried buffer moved to the end"))))
25166
e8ec0085ff7b (Buffer-menu-mode-map): Add V for Buffer-menu-View.
Richard M. Stallman <rms@gnu.org>
parents: 21093
diff changeset
549
e8ec0085ff7b (Buffer-menu-mode-map): Add V for Buffer-menu-View.
Richard M. Stallman <rms@gnu.org>
parents: 21093
diff changeset
550
e8ec0085ff7b (Buffer-menu-mode-map): Add V for Buffer-menu-View.
Richard M. Stallman <rms@gnu.org>
parents: 21093
diff changeset
551 (defun Buffer-menu-view ()
e8ec0085ff7b (Buffer-menu-mode-map): Add V for Buffer-menu-View.
Richard M. Stallman <rms@gnu.org>
parents: 21093
diff changeset
552 "View this line's buffer in View mode."
e8ec0085ff7b (Buffer-menu-mode-map): Add V for Buffer-menu-View.
Richard M. Stallman <rms@gnu.org>
parents: 21093
diff changeset
553 (interactive)
e8ec0085ff7b (Buffer-menu-mode-map): Add V for Buffer-menu-View.
Richard M. Stallman <rms@gnu.org>
parents: 21093
diff changeset
554 (view-buffer (Buffer-menu-buffer t)))
e8ec0085ff7b (Buffer-menu-mode-map): Add V for Buffer-menu-View.
Richard M. Stallman <rms@gnu.org>
parents: 21093
diff changeset
555
e8ec0085ff7b (Buffer-menu-mode-map): Add V for Buffer-menu-View.
Richard M. Stallman <rms@gnu.org>
parents: 21093
diff changeset
556
e8ec0085ff7b (Buffer-menu-mode-map): Add V for Buffer-menu-View.
Richard M. Stallman <rms@gnu.org>
parents: 21093
diff changeset
557 (defun Buffer-menu-view-other-window ()
e8ec0085ff7b (Buffer-menu-mode-map): Add V for Buffer-menu-View.
Richard M. Stallman <rms@gnu.org>
parents: 21093
diff changeset
558 "View this line's buffer in View mode in another window."
e8ec0085ff7b (Buffer-menu-mode-map): Add V for Buffer-menu-View.
Richard M. Stallman <rms@gnu.org>
parents: 21093
diff changeset
559 (interactive)
e8ec0085ff7b (Buffer-menu-mode-map): Add V for Buffer-menu-View.
Richard M. Stallman <rms@gnu.org>
parents: 21093
diff changeset
560 (view-buffer-other-window (Buffer-menu-buffer t)))
10419
cb6f68d16210 (list-buffers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10269
diff changeset
561
cb6f68d16210 (list-buffers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10269
diff changeset
562
cb6f68d16210 (list-buffers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10269
diff changeset
563 (define-key ctl-x-map "\C-b" 'list-buffers)
cb6f68d16210 (list-buffers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10269
diff changeset
564
cb6f68d16210 (list-buffers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10269
diff changeset
565 (defun list-buffers (&optional files-only)
cb6f68d16210 (list-buffers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10269
diff changeset
566 "Display a list of names of existing buffers.
cb6f68d16210 (list-buffers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10269
diff changeset
567 The list is displayed in a buffer named `*Buffer List*'.
cb6f68d16210 (list-buffers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10269
diff changeset
568 Note that buffers with names starting with spaces are omitted.
cb6f68d16210 (list-buffers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10269
diff changeset
569 Non-null optional arg FILES-ONLY means mention only file buffers.
cb6f68d16210 (list-buffers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10269
diff changeset
570
40622
d2bfc00496d7 (buffer-menu): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 40489
diff changeset
571 For more information, see the function `buffer-menu'."
10419
cb6f68d16210 (list-buffers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10269
diff changeset
572 (interactive "P")
10592
bbb68f0d31c6 (list-buffers-noselect): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 10421
diff changeset
573 (display-buffer (list-buffers-noselect files-only)))
bbb68f0d31c6 (list-buffers-noselect): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 10421
diff changeset
574
48864
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
575 (defun Buffer-menu-buffer+size (name size &optional name-props size-props)
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
576 (if (> (+ (length name) (length size) 2) Buffer-menu-buffer+size-width)
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
577 (setq name
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
578 (if (string-match "<[0-9]+>$" name)
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
579 (concat (substring name 0
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
580 (- Buffer-menu-buffer+size-width
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
581 (max (length size) 3)
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
582 (match-end 0)
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
583 (- (match-beginning 0))
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
584 2))
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
585 ":" ; narrow ellipsis
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
586 (match-string 0 name))
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
587 (concat (substring name 0
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
588 (- Buffer-menu-buffer+size-width
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
589 (max (length size) 3)
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
590 2))
49046
d6e1c5f7f468 (Buffer-menu-buffer+size): Don't clobber buffer name.
Andreas Schwab <schwab@suse.de>
parents: 48889
diff changeset
591 ":"))) ; narrow ellipsis
d6e1c5f7f468 (Buffer-menu-buffer+size): Don't clobber buffer name.
Andreas Schwab <schwab@suse.de>
parents: 48889
diff changeset
592 ;; Don't put properties on (buffer-name).
d6e1c5f7f468 (Buffer-menu-buffer+size): Don't clobber buffer name.
Andreas Schwab <schwab@suse.de>
parents: 48889
diff changeset
593 (setq name (copy-sequence name)))
48864
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
594 (add-text-properties 0 (length name) name-props name)
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
595 (add-text-properties 0 (length size) size-props size)
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
596 (concat name
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
597 (make-string (- Buffer-menu-buffer+size-width
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
598 (length name)
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
599 (length size))
64529
8b0db2e8ccd3 (Buffer-menu-unmark): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
600 ?\s)
48864
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
601 size))
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
602
54580
f9e5bd96c71c (Buffer-menu-sort, Buffer-menu-make-sort-button): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
603 (defun Buffer-menu-sort (column)
f9e5bd96c71c (Buffer-menu-sort, Buffer-menu-make-sort-button): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
604 "Sort the buffer menu by COLUMN."
f9e5bd96c71c (Buffer-menu-sort, Buffer-menu-make-sort-button): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
605 (interactive "P")
f9e5bd96c71c (Buffer-menu-sort, Buffer-menu-make-sort-button): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
606 (when column
f9e5bd96c71c (Buffer-menu-sort, Buffer-menu-make-sort-button): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
607 (setq column (prefix-numeric-value column))
f9e5bd96c71c (Buffer-menu-sort, Buffer-menu-make-sort-button): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
608 (if (< column 2) (setq column 2))
f9e5bd96c71c (Buffer-menu-sort, Buffer-menu-make-sort-button): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
609 (if (> column 5) (setq column 5)))
f9e5bd96c71c (Buffer-menu-sort, Buffer-menu-make-sort-button): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
610 (setq Buffer-menu-sort-column column)
96276
5f58c2a66de7 * buff-menu.el: Use with-current-buffer and inhibit-read-only.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
611 (let ((inhibit-read-only t) l buf m1 m2)
57555
716fe8f547c3 (Buffer-menu-revert-function): Emulate save-excursion.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57030
diff changeset
612 (save-excursion
716fe8f547c3 (Buffer-menu-revert-function): Emulate save-excursion.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57030
diff changeset
613 (Buffer-menu-beginning)
716fe8f547c3 (Buffer-menu-revert-function): Emulate save-excursion.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57030
diff changeset
614 (while (not (eobp))
716fe8f547c3 (Buffer-menu-revert-function): Emulate save-excursion.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57030
diff changeset
615 (when (buffer-live-p (setq buf (get-text-property (+ (point) 4) 'buffer)))
716fe8f547c3 (Buffer-menu-revert-function): Emulate save-excursion.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57030
diff changeset
616 (setq m1 (char-after)
716fe8f547c3 (Buffer-menu-revert-function): Emulate save-excursion.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57030
diff changeset
617 m1 (if (memq m1 '(?> ?D)) m1)
716fe8f547c3 (Buffer-menu-revert-function): Emulate save-excursion.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57030
diff changeset
618 m2 (char-after (+ (point) 2))
716fe8f547c3 (Buffer-menu-revert-function): Emulate save-excursion.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57030
diff changeset
619 m2 (if (eq m2 ?S) m2))
716fe8f547c3 (Buffer-menu-revert-function): Emulate save-excursion.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57030
diff changeset
620 (if (or m1 m2)
716fe8f547c3 (Buffer-menu-revert-function): Emulate save-excursion.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57030
diff changeset
621 (push (list buf m1 m2) l)))
716fe8f547c3 (Buffer-menu-revert-function): Emulate save-excursion.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57030
diff changeset
622 (forward-line)))
716fe8f547c3 (Buffer-menu-revert-function): Emulate save-excursion.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57030
diff changeset
623 (Buffer-menu-revert)
716fe8f547c3 (Buffer-menu-revert-function): Emulate save-excursion.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57030
diff changeset
624 (save-excursion
716fe8f547c3 (Buffer-menu-revert-function): Emulate save-excursion.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57030
diff changeset
625 (Buffer-menu-beginning)
716fe8f547c3 (Buffer-menu-revert-function): Emulate save-excursion.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57030
diff changeset
626 (while (not (eobp))
716fe8f547c3 (Buffer-menu-revert-function): Emulate save-excursion.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57030
diff changeset
627 (when (setq buf (assq (get-text-property (+ (point) 4) 'buffer) l))
716fe8f547c3 (Buffer-menu-revert-function): Emulate save-excursion.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57030
diff changeset
628 (setq m1 (cadr buf)
716fe8f547c3 (Buffer-menu-revert-function): Emulate save-excursion.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57030
diff changeset
629 m2 (cadr (cdr buf)))
716fe8f547c3 (Buffer-menu-revert-function): Emulate save-excursion.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57030
diff changeset
630 (when m1
716fe8f547c3 (Buffer-menu-revert-function): Emulate save-excursion.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57030
diff changeset
631 (delete-char 1)
716fe8f547c3 (Buffer-menu-revert-function): Emulate save-excursion.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57030
diff changeset
632 (insert m1)
716fe8f547c3 (Buffer-menu-revert-function): Emulate save-excursion.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57030
diff changeset
633 (backward-char 1))
716fe8f547c3 (Buffer-menu-revert-function): Emulate save-excursion.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57030
diff changeset
634 (when m2
716fe8f547c3 (Buffer-menu-revert-function): Emulate save-excursion.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57030
diff changeset
635 (forward-char 2)
716fe8f547c3 (Buffer-menu-revert-function): Emulate save-excursion.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57030
diff changeset
636 (delete-char 1)
716fe8f547c3 (Buffer-menu-revert-function): Emulate save-excursion.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57030
diff changeset
637 (insert m2)))
716fe8f547c3 (Buffer-menu-revert-function): Emulate save-excursion.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57030
diff changeset
638 (forward-line)))))
54580
f9e5bd96c71c (Buffer-menu-sort, Buffer-menu-make-sort-button): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
639
65355
d96b22b8de33 *** empty log message ***
Chong Yidong <cyd@stupidchicken.com>
parents: 65352
diff changeset
640 (defun Buffer-menu-sort-by-column (&optional e)
d96b22b8de33 *** empty log message ***
Chong Yidong <cyd@stupidchicken.com>
parents: 65352
diff changeset
641 "Sort the buffer menu by the column clicked on."
d96b22b8de33 *** empty log message ***
Chong Yidong <cyd@stupidchicken.com>
parents: 65352
diff changeset
642 (interactive (list last-input-event))
d96b22b8de33 *** empty log message ***
Chong Yidong <cyd@stupidchicken.com>
parents: 65352
diff changeset
643 (if e (mouse-select-window e))
d96b22b8de33 *** empty log message ***
Chong Yidong <cyd@stupidchicken.com>
parents: 65352
diff changeset
644 (let* ((pos (event-start e))
d96b22b8de33 *** empty log message ***
Chong Yidong <cyd@stupidchicken.com>
parents: 65352
diff changeset
645 (obj (posn-object pos))
d96b22b8de33 *** empty log message ***
Chong Yidong <cyd@stupidchicken.com>
parents: 65352
diff changeset
646 (col (if obj
d96b22b8de33 *** empty log message ***
Chong Yidong <cyd@stupidchicken.com>
parents: 65352
diff changeset
647 (get-text-property (cdr obj) 'column (car obj))
d96b22b8de33 *** empty log message ***
Chong Yidong <cyd@stupidchicken.com>
parents: 65352
diff changeset
648 (get-text-property (posn-point pos) 'column))))
d96b22b8de33 *** empty log message ***
Chong Yidong <cyd@stupidchicken.com>
parents: 65352
diff changeset
649 (Buffer-menu-sort col)))
d96b22b8de33 *** empty log message ***
Chong Yidong <cyd@stupidchicken.com>
parents: 65352
diff changeset
650
d96b22b8de33 *** empty log message ***
Chong Yidong <cyd@stupidchicken.com>
parents: 65352
diff changeset
651 (defvar Buffer-menu-sort-button-map
d96b22b8de33 *** empty log message ***
Chong Yidong <cyd@stupidchicken.com>
parents: 65352
diff changeset
652 (let ((map (make-sparse-keymap)))
d96b22b8de33 *** empty log message ***
Chong Yidong <cyd@stupidchicken.com>
parents: 65352
diff changeset
653 ;; This keymap handles both nil and non-nil values for
d96b22b8de33 *** empty log message ***
Chong Yidong <cyd@stupidchicken.com>
parents: 65352
diff changeset
654 ;; Buffer-menu-use-header-line.
d96b22b8de33 *** empty log message ***
Chong Yidong <cyd@stupidchicken.com>
parents: 65352
diff changeset
655 (define-key map [header-line mouse-1] 'Buffer-menu-sort-by-column)
d96b22b8de33 *** empty log message ***
Chong Yidong <cyd@stupidchicken.com>
parents: 65352
diff changeset
656 (define-key map [header-line mouse-2] 'Buffer-menu-sort-by-column)
d96b22b8de33 *** empty log message ***
Chong Yidong <cyd@stupidchicken.com>
parents: 65352
diff changeset
657 (define-key map [mouse-2] 'Buffer-menu-sort-by-column)
d96b22b8de33 *** empty log message ***
Chong Yidong <cyd@stupidchicken.com>
parents: 65352
diff changeset
658 (define-key map [follow-link] 'mouse-face)
d96b22b8de33 *** empty log message ***
Chong Yidong <cyd@stupidchicken.com>
parents: 65352
diff changeset
659 (define-key map "\C-m" 'Buffer-menu-sort-by-column)
d96b22b8de33 *** empty log message ***
Chong Yidong <cyd@stupidchicken.com>
parents: 65352
diff changeset
660 map)
d96b22b8de33 *** empty log message ***
Chong Yidong <cyd@stupidchicken.com>
parents: 65352
diff changeset
661 "Local keymap for Buffer menu sort buttons.")
d96b22b8de33 *** empty log message ***
Chong Yidong <cyd@stupidchicken.com>
parents: 65352
diff changeset
662
54580
f9e5bd96c71c (Buffer-menu-sort, Buffer-menu-make-sort-button): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
663 (defun Buffer-menu-make-sort-button (name column)
f9e5bd96c71c (Buffer-menu-sort, Buffer-menu-make-sort-button): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
664 (if (equal column Buffer-menu-sort-column) (setq column nil))
65355
d96b22b8de33 *** empty log message ***
Chong Yidong <cyd@stupidchicken.com>
parents: 65352
diff changeset
665 (propertize name
d96b22b8de33 *** empty log message ***
Chong Yidong <cyd@stupidchicken.com>
parents: 65352
diff changeset
666 'column column
d96b22b8de33 *** empty log message ***
Chong Yidong <cyd@stupidchicken.com>
parents: 65352
diff changeset
667 'help-echo (concat
d96b22b8de33 *** empty log message ***
Chong Yidong <cyd@stupidchicken.com>
parents: 65352
diff changeset
668 (if Buffer-menu-use-header-line
d96b22b8de33 *** empty log message ***
Chong Yidong <cyd@stupidchicken.com>
parents: 65352
diff changeset
669 "mouse-1, mouse-2: sort by "
d96b22b8de33 *** empty log message ***
Chong Yidong <cyd@stupidchicken.com>
parents: 65352
diff changeset
670 "mouse-2, RET: sort by ")
d96b22b8de33 *** empty log message ***
Chong Yidong <cyd@stupidchicken.com>
parents: 65352
diff changeset
671 (if column (downcase name) "visited order"))
d96b22b8de33 *** empty log message ***
Chong Yidong <cyd@stupidchicken.com>
parents: 65352
diff changeset
672 'mouse-face 'highlight
d96b22b8de33 *** empty log message ***
Chong Yidong <cyd@stupidchicken.com>
parents: 65352
diff changeset
673 'keymap Buffer-menu-sort-button-map))
54580
f9e5bd96c71c (Buffer-menu-sort, Buffer-menu-make-sort-button): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
674
58276
935277968aef (list-buffers-noselect): New arg BUFFER-LIST.
Richard M. Stallman <rms@gnu.org>
parents: 57920
diff changeset
675 (defun list-buffers-noselect (&optional files-only buffer-list)
10592
bbb68f0d31c6 (list-buffers-noselect): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 10421
diff changeset
676 "Create and return a buffer with a list of names of existing buffers.
bbb68f0d31c6 (list-buffers-noselect): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 10421
diff changeset
677 The buffer is named `*Buffer List*'.
bbb68f0d31c6 (list-buffers-noselect): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 10421
diff changeset
678 Note that buffers with names starting with spaces are omitted.
bbb68f0d31c6 (list-buffers-noselect): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 10421
diff changeset
679 Non-null optional arg FILES-ONLY means mention only file buffers.
bbb68f0d31c6 (list-buffers-noselect): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 10421
diff changeset
680
58276
935277968aef (list-buffers-noselect): New arg BUFFER-LIST.
Richard M. Stallman <rms@gnu.org>
parents: 57920
diff changeset
681 If BUFFER-LIST is non-nil, it should be a list of buffers;
935277968aef (list-buffers-noselect): New arg BUFFER-LIST.
Richard M. Stallman <rms@gnu.org>
parents: 57920
diff changeset
682 it means list those buffers and no others.
935277968aef (list-buffers-noselect): New arg BUFFER-LIST.
Richard M. Stallman <rms@gnu.org>
parents: 57920
diff changeset
683
40622
d2bfc00496d7 (buffer-menu): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 40489
diff changeset
684 For more information, see the function `buffer-menu'."
48864
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
685 (let* ((old-buffer (current-buffer))
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
686 (standard-output standard-output)
64529
8b0db2e8ccd3 (Buffer-menu-unmark): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
687 (mode-end (make-string (- Buffer-menu-mode-width 2) ?\s))
58425
f0b9b97606f9 (list-buffers-noselect): Use fixed-pitch only in the header-line.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58352
diff changeset
688 (header (concat "CRM "
54580
f9e5bd96c71c (Buffer-menu-sort, Buffer-menu-make-sort-button): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
689 (Buffer-menu-buffer+size
f9e5bd96c71c (Buffer-menu-sort, Buffer-menu-make-sort-button): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
690 (Buffer-menu-make-sort-button "Buffer" 2)
f9e5bd96c71c (Buffer-menu-sort, Buffer-menu-make-sort-button): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
691 (Buffer-menu-make-sort-button "Size" 3))
f9e5bd96c71c (Buffer-menu-sort, Buffer-menu-make-sort-button): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
692 " "
f9e5bd96c71c (Buffer-menu-sort, Buffer-menu-make-sort-button): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
693 (Buffer-menu-make-sort-button "Mode" 4) mode-end
f9e5bd96c71c (Buffer-menu-sort, Buffer-menu-make-sort-button): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
694 (Buffer-menu-make-sort-button "File" 5) "\n"))
58299
40fc4ca7acc0 (list-buffers-noselect): Massage to fit in 80 columns.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58276
diff changeset
695 list desired-point)
50172
48610ee0507d (list-buffers-noselect): Use the display property
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50033
diff changeset
696 (when Buffer-menu-use-header-line
54580
f9e5bd96c71c (Buffer-menu-sort, Buffer-menu-make-sort-button): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
697 (let ((pos 0))
69024
fef6008cad43 (list-buffers-noselect): Turn also "\n" into a strech spec so it doesn't display
Juanma Barranquero <lekktu@gmail.com>
parents: 68651
diff changeset
698 ;; Turn whitespace chars in the header into stretch specs so
fef6008cad43 (list-buffers-noselect): Turn also "\n" into a strech spec so it doesn't display
Juanma Barranquero <lekktu@gmail.com>
parents: 68651
diff changeset
699 ;; they work regardless of the header-line face.
fef6008cad43 (list-buffers-noselect): Turn also "\n" into a strech spec so it doesn't display
Juanma Barranquero <lekktu@gmail.com>
parents: 68651
diff changeset
700 (while (string-match "[ \t\n]+" header pos)
50172
48610ee0507d (list-buffers-noselect): Use the display property
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50033
diff changeset
701 (setq pos (match-end 0))
48610ee0507d (list-buffers-noselect): Use the display property
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50033
diff changeset
702 (put-text-property (match-beginning 0) pos 'display
58425
f0b9b97606f9 (list-buffers-noselect): Use fixed-pitch only in the header-line.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58352
diff changeset
703 ;; Assume fixed-size chars in the buffer.
58352
e14d75675a15 (list-buffers-noselect): Eliminate space at the start of HEADER.
Richard M. Stallman <rms@gnu.org>
parents: 58299
diff changeset
704 (list 'space :align-to pos)
58425
f0b9b97606f9 (list-buffers-noselect): Use fixed-pitch only in the header-line.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58352
diff changeset
705 header)))
f0b9b97606f9 (list-buffers-noselect): Use fixed-pitch only in the header-line.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58352
diff changeset
706 ;; Try to better align the one-char headers.
f0b9b97606f9 (list-buffers-noselect): Use fixed-pitch only in the header-line.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58352
diff changeset
707 (put-text-property 0 3 'face 'fixed-pitch header)
f0b9b97606f9 (list-buffers-noselect): Use fixed-pitch only in the header-line.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58352
diff changeset
708 ;; Add a "dummy" leading space to align the beginning of the header
f0b9b97606f9 (list-buffers-noselect): Use fixed-pitch only in the header-line.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58352
diff changeset
709 ;; line with the beginning of the text (rather than with the left
76023
70e00d4c1216 (list-buffers-noselect): Use explicit unicode code rather than the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 75347
diff changeset
710 ;; scrollbar or the left fringe). --Stef
58425
f0b9b97606f9 (list-buffers-noselect): Use fixed-pitch only in the header-line.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58352
diff changeset
711 (setq header (concat (propertize " " 'display '(space :align-to 0))
58954
bb8424d9ff97 (list-buffers-noselect): Collect internal info
Juri Linkov <juri@jurta.org>
parents: 58461
diff changeset
712 header)))
54580
f9e5bd96c71c (Buffer-menu-sort, Buffer-menu-make-sort-button): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
713 (with-current-buffer (get-buffer-create "*Buffer List*")
10592
bbb68f0d31c6 (list-buffers-noselect): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 10421
diff changeset
714 (setq buffer-read-only nil)
bbb68f0d31c6 (list-buffers-noselect): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 10421
diff changeset
715 (erase-buffer)
bbb68f0d31c6 (list-buffers-noselect): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 10421
diff changeset
716 (setq standard-output (current-buffer))
48864
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
717 (unless Buffer-menu-use-header-line
76023
70e00d4c1216 (list-buffers-noselect): Use explicit unicode code rather than the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 75347
diff changeset
718 ;; Use U+2014 (EM DASH) to underline if possible, else use ASCII
70e00d4c1216 (list-buffers-noselect): Use explicit unicode code rather than the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 75347
diff changeset
719 ;; (i.e. U+002D, HYPHEN-MINUS).
70e00d4c1216 (list-buffers-noselect): Use explicit unicode code rather than the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 75347
diff changeset
720 (let ((underline (if (char-displayable-p ?\u2014) ?\u2014 ?-)))
58425
f0b9b97606f9 (list-buffers-noselect): Use fixed-pitch only in the header-line.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58352
diff changeset
721 (insert header
f0b9b97606f9 (list-buffers-noselect): Use fixed-pitch only in the header-line.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58352
diff changeset
722 (apply 'string
f0b9b97606f9 (list-buffers-noselect): Use fixed-pitch only in the header-line.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58352
diff changeset
723 (mapcar (lambda (c)
64529
8b0db2e8ccd3 (Buffer-menu-unmark): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
724 (if (memq c '(?\n ?\s)) c underline))
58425
f0b9b97606f9 (list-buffers-noselect): Use fixed-pitch only in the header-line.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58352
diff changeset
725 header)))))
58954
bb8424d9ff97 (list-buffers-noselect): Collect internal info
Juri Linkov <juri@jurta.org>
parents: 58461
diff changeset
726 ;; Collect info for every buffer we're interested in.
67327
8e9343dc7c39 (Buffer-menu-use-frame-buffer-list): New user option.
Luc Teirlinck <teirllm@auburn.edu>
parents: 67177
diff changeset
727 (dolist (buffer (or buffer-list
8e9343dc7c39 (Buffer-menu-use-frame-buffer-list): New user option.
Luc Teirlinck <teirllm@auburn.edu>
parents: 67177
diff changeset
728 (buffer-list
8e9343dc7c39 (Buffer-menu-use-frame-buffer-list): New user option.
Luc Teirlinck <teirllm@auburn.edu>
parents: 67177
diff changeset
729 (when Buffer-menu-use-frame-buffer-list
8e9343dc7c39 (Buffer-menu-use-frame-buffer-list): New user option.
Luc Teirlinck <teirllm@auburn.edu>
parents: 67177
diff changeset
730 (selected-frame)))))
58954
bb8424d9ff97 (list-buffers-noselect): Collect internal info
Juri Linkov <juri@jurta.org>
parents: 58461
diff changeset
731 (with-current-buffer buffer
bb8424d9ff97 (list-buffers-noselect): Collect internal info
Juri Linkov <juri@jurta.org>
parents: 58461
diff changeset
732 (let ((name (buffer-name))
bb8424d9ff97 (list-buffers-noselect): Collect internal info
Juri Linkov <juri@jurta.org>
parents: 58461
diff changeset
733 (file buffer-file-name))
bb8424d9ff97 (list-buffers-noselect): Collect internal info
Juri Linkov <juri@jurta.org>
parents: 58461
diff changeset
734 (unless (and (not buffer-list)
bb8424d9ff97 (list-buffers-noselect): Collect internal info
Juri Linkov <juri@jurta.org>
parents: 58461
diff changeset
735 (or
bb8424d9ff97 (list-buffers-noselect): Collect internal info
Juri Linkov <juri@jurta.org>
parents: 58461
diff changeset
736 ;; Don't mention internal buffers.
bb8424d9ff97 (list-buffers-noselect): Collect internal info
Juri Linkov <juri@jurta.org>
parents: 58461
diff changeset
737 (and (string= (substring name 0 1) " ") (null file))
bb8424d9ff97 (list-buffers-noselect): Collect internal info
Juri Linkov <juri@jurta.org>
parents: 58461
diff changeset
738 ;; Maybe don't mention buffers without files.
bb8424d9ff97 (list-buffers-noselect): Collect internal info
Juri Linkov <juri@jurta.org>
parents: 58461
diff changeset
739 (and files-only (not file))
bb8424d9ff97 (list-buffers-noselect): Collect internal info
Juri Linkov <juri@jurta.org>
parents: 58461
diff changeset
740 (string= name "*Buffer List*")))
bb8424d9ff97 (list-buffers-noselect): Collect internal info
Juri Linkov <juri@jurta.org>
parents: 58461
diff changeset
741 ;; Otherwise output info.
bb8424d9ff97 (list-buffers-noselect): Collect internal info
Juri Linkov <juri@jurta.org>
parents: 58461
diff changeset
742 (let ((mode (concat (format-mode-line mode-name nil nil buffer)
bb8424d9ff97 (list-buffers-noselect): Collect internal info
Juri Linkov <juri@jurta.org>
parents: 58461
diff changeset
743 (if mode-line-process
bb8424d9ff97 (list-buffers-noselect): Collect internal info
Juri Linkov <juri@jurta.org>
parents: 58461
diff changeset
744 (format-mode-line mode-line-process
bb8424d9ff97 (list-buffers-noselect): Collect internal info
Juri Linkov <juri@jurta.org>
parents: 58461
diff changeset
745 nil nil buffer))))
bb8424d9ff97 (list-buffers-noselect): Collect internal info
Juri Linkov <juri@jurta.org>
parents: 58461
diff changeset
746 (bits (string
64529
8b0db2e8ccd3 (Buffer-menu-unmark): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
747 (if (eq buffer old-buffer) ?. ?\s)
58954
bb8424d9ff97 (list-buffers-noselect): Collect internal info
Juri Linkov <juri@jurta.org>
parents: 58461
diff changeset
748 ;; Handle readonly status. The output buffer
bb8424d9ff97 (list-buffers-noselect): Collect internal info
Juri Linkov <juri@jurta.org>
parents: 58461
diff changeset
749 ;; is special cased to appear readonly; it is
bb8424d9ff97 (list-buffers-noselect): Collect internal info
Juri Linkov <juri@jurta.org>
parents: 58461
diff changeset
750 ;; actually made so at a later date.
bb8424d9ff97 (list-buffers-noselect): Collect internal info
Juri Linkov <juri@jurta.org>
parents: 58461
diff changeset
751 (if (or (eq buffer standard-output)
bb8424d9ff97 (list-buffers-noselect): Collect internal info
Juri Linkov <juri@jurta.org>
parents: 58461
diff changeset
752 buffer-read-only)
64529
8b0db2e8ccd3 (Buffer-menu-unmark): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
753 ?% ?\s)
58954
bb8424d9ff97 (list-buffers-noselect): Collect internal info
Juri Linkov <juri@jurta.org>
parents: 58461
diff changeset
754 ;; Identify modified buffers.
64529
8b0db2e8ccd3 (Buffer-menu-unmark): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
755 (if (buffer-modified-p) ?* ?\s)
58954
bb8424d9ff97 (list-buffers-noselect): Collect internal info
Juri Linkov <juri@jurta.org>
parents: 58461
diff changeset
756 ;; Space separator.
64529
8b0db2e8ccd3 (Buffer-menu-unmark): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
757 ?\s)))
58954
bb8424d9ff97 (list-buffers-noselect): Collect internal info
Juri Linkov <juri@jurta.org>
parents: 58461
diff changeset
758 (unless file
bb8424d9ff97 (list-buffers-noselect): Collect internal info
Juri Linkov <juri@jurta.org>
parents: 58461
diff changeset
759 ;; No visited file. Check local value of
70967
b4e6091c2346 (list-buffers-noselect): For Info buffers, use Info-current-file as the
Eli Zaretskii <eliz@gnu.org>
parents: 69024
diff changeset
760 ;; list-buffers-directory and, for Info buffers,
b4e6091c2346 (list-buffers-noselect): For Info buffers, use Info-current-file as the
Eli Zaretskii <eliz@gnu.org>
parents: 69024
diff changeset
761 ;; Info-current-file.
b4e6091c2346 (list-buffers-noselect): For Info buffers, use Info-current-file as the
Eli Zaretskii <eliz@gnu.org>
parents: 69024
diff changeset
762 (cond ((and (boundp 'list-buffers-directory)
b4e6091c2346 (list-buffers-noselect): For Info buffers, use Info-current-file as the
Eli Zaretskii <eliz@gnu.org>
parents: 69024
diff changeset
763 list-buffers-directory)
b4e6091c2346 (list-buffers-noselect): For Info buffers, use Info-current-file as the
Eli Zaretskii <eliz@gnu.org>
parents: 69024
diff changeset
764 (setq file list-buffers-directory))
b4e6091c2346 (list-buffers-noselect): For Info buffers, use Info-current-file as the
Eli Zaretskii <eliz@gnu.org>
parents: 69024
diff changeset
765 ((eq major-mode 'Info-mode)
b4e6091c2346 (list-buffers-noselect): For Info buffers, use Info-current-file as the
Eli Zaretskii <eliz@gnu.org>
parents: 69024
diff changeset
766 (setq file Info-current-file)
b4e6091c2346 (list-buffers-noselect): For Info buffers, use Info-current-file as the
Eli Zaretskii <eliz@gnu.org>
parents: 69024
diff changeset
767 (cond
71516
a04fe4434fba (list-buffers-noselect): Compare Info file
Juri Linkov <juri@jurta.org>
parents: 70967
diff changeset
768 ((equal file "dir")
70967
b4e6091c2346 (list-buffers-noselect): For Info buffers, use Info-current-file as the
Eli Zaretskii <eliz@gnu.org>
parents: 69024
diff changeset
769 (setq file "*Info Directory*"))
b4e6091c2346 (list-buffers-noselect): For Info buffers, use Info-current-file as the
Eli Zaretskii <eliz@gnu.org>
parents: 69024
diff changeset
770 ((eq file 'apropos)
b4e6091c2346 (list-buffers-noselect): For Info buffers, use Info-current-file as the
Eli Zaretskii <eliz@gnu.org>
parents: 69024
diff changeset
771 (setq file "*Info Apropos*"))
b4e6091c2346 (list-buffers-noselect): For Info buffers, use Info-current-file as the
Eli Zaretskii <eliz@gnu.org>
parents: 69024
diff changeset
772 ((eq file 'history)
b4e6091c2346 (list-buffers-noselect): For Info buffers, use Info-current-file as the
Eli Zaretskii <eliz@gnu.org>
parents: 69024
diff changeset
773 (setq file "*Info History*"))
b4e6091c2346 (list-buffers-noselect): For Info buffers, use Info-current-file as the
Eli Zaretskii <eliz@gnu.org>
parents: 69024
diff changeset
774 ((eq file 'toc)
b4e6091c2346 (list-buffers-noselect): For Info buffers, use Info-current-file as the
Eli Zaretskii <eliz@gnu.org>
parents: 69024
diff changeset
775 (setq file "*Info TOC*"))
b4e6091c2346 (list-buffers-noselect): For Info buffers, use Info-current-file as the
Eli Zaretskii <eliz@gnu.org>
parents: 69024
diff changeset
776 ((not (stringp file)) ;; avoid errors
72289
40a24db2adc4 (list-buffers-noselect): For Info buffers, use "(file)node" instead of the
Eli Zaretskii <eliz@gnu.org>
parents: 71516
diff changeset
777 (setq file nil))
40a24db2adc4 (list-buffers-noselect): For Info buffers, use "(file)node" instead of the
Eli Zaretskii <eliz@gnu.org>
parents: 71516
diff changeset
778 (t
40a24db2adc4 (list-buffers-noselect): For Info buffers, use "(file)node" instead of the
Eli Zaretskii <eliz@gnu.org>
parents: 71516
diff changeset
779 (setq file (concat "("
40a24db2adc4 (list-buffers-noselect): For Info buffers, use "(file)node" instead of the
Eli Zaretskii <eliz@gnu.org>
parents: 71516
diff changeset
780 (file-name-nondirectory file)
40a24db2adc4 (list-buffers-noselect): For Info buffers, use "(file)node" instead of the
Eli Zaretskii <eliz@gnu.org>
parents: 71516
diff changeset
781 ")"
40a24db2adc4 (list-buffers-noselect): For Info buffers, use "(file)node" instead of the
Eli Zaretskii <eliz@gnu.org>
parents: 71516
diff changeset
782 Info-current-node)))))))
58954
bb8424d9ff97 (list-buffers-noselect): Collect internal info
Juri Linkov <juri@jurta.org>
parents: 58461
diff changeset
783 (push (list buffer bits name (buffer-size) mode file)
bb8424d9ff97 (list-buffers-noselect): Collect internal info
Juri Linkov <juri@jurta.org>
parents: 58461
diff changeset
784 list))))))
bb8424d9ff97 (list-buffers-noselect): Collect internal info
Juri Linkov <juri@jurta.org>
parents: 58461
diff changeset
785 ;; Preserve the original buffer-list ordering, just in case.
bb8424d9ff97 (list-buffers-noselect): Collect internal info
Juri Linkov <juri@jurta.org>
parents: 58461
diff changeset
786 (setq list (nreverse list))
58299
40fc4ca7acc0 (list-buffers-noselect): Massage to fit in 80 columns.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58276
diff changeset
787 ;; Place the buffers's info in the output buffer, sorted if necessary.
48864
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
788 (dolist (buffer
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
789 (if Buffer-menu-sort-column
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
790 (sort list
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
791 (if (eq Buffer-menu-sort-column 3)
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
792 (lambda (a b)
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
793 (< (nth Buffer-menu-sort-column a)
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
794 (nth Buffer-menu-sort-column b)))
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
795 (lambda (a b)
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
796 (string< (nth Buffer-menu-sort-column a)
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
797 (nth Buffer-menu-sort-column b)))))
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
798 list))
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
799 (if (eq (car buffer) old-buffer)
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
800 (setq desired-point (point)))
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
801 (insert (cadr buffer)
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
802 ;; Put the buffer name into a text property
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
803 ;; so we don't have to extract it from the text.
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
804 ;; This way we avoid problems with unusual buffer names.
92953
21d63c870839 (list-buffers-noselect): Display buffer name in
Nick Roberts <nickrob@snap.net.nz>
parents: 87649
diff changeset
805 (let ((name (nth 2 buffer))
21d63c870839 (list-buffers-noselect): Display buffer name in
Nick Roberts <nickrob@snap.net.nz>
parents: 87649
diff changeset
806 (size (int-to-string (nth 3 buffer))))
21d63c870839 (list-buffers-noselect): Display buffer name in
Nick Roberts <nickrob@snap.net.nz>
parents: 87649
diff changeset
807 (Buffer-menu-buffer+size name size
21d63c870839 (list-buffers-noselect): Display buffer name in
Nick Roberts <nickrob@snap.net.nz>
parents: 87649
diff changeset
808 `(buffer-name ,name
21d63c870839 (list-buffers-noselect): Display buffer name in
Nick Roberts <nickrob@snap.net.nz>
parents: 87649
diff changeset
809 buffer ,(car buffer)
21d63c870839 (list-buffers-noselect): Display buffer name in
Nick Roberts <nickrob@snap.net.nz>
parents: 87649
diff changeset
810 font-lock-face buffer-menu-buffer
21d63c870839 (list-buffers-noselect): Display buffer name in
Nick Roberts <nickrob@snap.net.nz>
parents: 87649
diff changeset
811 mouse-face highlight
21d63c870839 (list-buffers-noselect): Display buffer name in
Nick Roberts <nickrob@snap.net.nz>
parents: 87649
diff changeset
812 help-echo
21d63c870839 (list-buffers-noselect): Display buffer name in
Nick Roberts <nickrob@snap.net.nz>
parents: 87649
diff changeset
813 ,(if (>= (length name)
21d63c870839 (list-buffers-noselect): Display buffer name in
Nick Roberts <nickrob@snap.net.nz>
parents: 87649
diff changeset
814 (- Buffer-menu-buffer+size-width
21d63c870839 (list-buffers-noselect): Display buffer name in
Nick Roberts <nickrob@snap.net.nz>
parents: 87649
diff changeset
815 (max (length size) 3)
21d63c870839 (list-buffers-noselect): Display buffer name in
Nick Roberts <nickrob@snap.net.nz>
parents: 87649
diff changeset
816 2))
21d63c870839 (list-buffers-noselect): Display buffer name in
Nick Roberts <nickrob@snap.net.nz>
parents: 87649
diff changeset
817 name
21d63c870839 (list-buffers-noselect): Display buffer name in
Nick Roberts <nickrob@snap.net.nz>
parents: 87649
diff changeset
818 "mouse-2: select this buffer"))))
21d63c870839 (list-buffers-noselect): Display buffer name in
Nick Roberts <nickrob@snap.net.nz>
parents: 87649
diff changeset
819 " "
48864
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
820 (if (> (length (nth 4 buffer)) Buffer-menu-mode-width)
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
821 (substring (nth 4 buffer) 0 Buffer-menu-mode-width)
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
822 (nth 4 buffer)))
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
823 (when (nth 5 buffer)
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
824 (indent-to (+ Buffer-menu-buffer-column Buffer-menu-buffer+size-width
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
825 Buffer-menu-mode-width 4) 1)
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
826 (princ (abbreviate-file-name (nth 5 buffer))))
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
827 (princ "\n"))
10419
cb6f68d16210 (list-buffers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10269
diff changeset
828 (Buffer-menu-mode)
48864
02944b0aaecd (Buffer-menu, Buffer-menu-use-header-line, Buffer-menu-buffer-face,
Juanma Barranquero <lekktu@gmail.com>
parents: 40622
diff changeset
829 (when Buffer-menu-use-header-line
50172
48610ee0507d (list-buffers-noselect): Use the display property
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50033
diff changeset
830 (setq header-line-format header))
10592
bbb68f0d31c6 (list-buffers-noselect): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 10421
diff changeset
831 ;; DESIRED-POINT doesn't have to be set; it is not when the
bbb68f0d31c6 (list-buffers-noselect): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 10421
diff changeset
832 ;; current buffer is not displayed for some reason.
10419
cb6f68d16210 (list-buffers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10269
diff changeset
833 (and desired-point
10592
bbb68f0d31c6 (list-buffers-noselect): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 10421
diff changeset
834 (goto-char desired-point))
54594
c07fb48cb0e2 (Buffer-menu-revert-function): Make it suitable for
Luc Teirlinck <teirllm@auburn.edu>
parents: 54580
diff changeset
835 (setq Buffer-menu-files-only files-only)
c07fb48cb0e2 (Buffer-menu-revert-function): Make it suitable for
Luc Teirlinck <teirllm@auburn.edu>
parents: 54580
diff changeset
836 (set-buffer-modified-p nil)
10592
bbb68f0d31c6 (list-buffers-noselect): New subroutine.
Richard M. Stallman <rms@gnu.org>
parents: 10421
diff changeset
837 (current-buffer))))
10419
cb6f68d16210 (list-buffers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10269
diff changeset
838
58299
40fc4ca7acc0 (list-buffers-noselect): Massage to fit in 80 columns.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58276
diff changeset
839 ;; arch-tag: e7dfcfc9-6cb2-46e4-bf55-8ef1936d83c6
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 194
diff changeset
840 ;;; buff-menu.el ends here