comparison lisp/buff-menu.el @ 90185:5b029ff3b08d

Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-55 Merge from emacs--cvs-trunk--0 Patches applied: * emacs--cvs-trunk--0 (patch 320-323) - Update from CVS
author Miles Bader <miles@gnu.org>
date Thu, 26 May 2005 05:42:19 +0000
parents f042e7c0fe20 23e016b887bb
children a1b34dec1104
comparison
equal deleted inserted replaced
90184:9e5e2f01c7ab 90185:5b029ff3b08d
1 ;;; buff-menu.el --- buffer menu main function and support functions -*- coding:utf-8 -*- 1 ;;; buff-menu.el --- buffer menu main function and support functions -*- coding:utf-8 -*-
2 2
3 ;; Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 2000, 2001, 2002, 2003, 3 ;; Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 2000, 2001, 2002, 2003,
4 ;; 2004 Free Software Foundation, Inc. 4 ;; 2004, 2005 Free Software Foundation, Inc.
5 5
6 ;; Maintainer: FSF 6 ;; Maintainer: FSF
7 ;; Keywords: convenience 7 ;; Keywords: convenience
8 8
9 ;; This file is part of GNU Emacs. 9 ;; This file is part of GNU Emacs.
188 'Buffer-menu-revert-function) 188 'Buffer-menu-revert-function)
189 (set (make-local-variable 'buffer-stale-function) 189 (set (make-local-variable 'buffer-stale-function)
190 #'(lambda (&optional noconfirm) 'fast)) 190 #'(lambda (&optional noconfirm) 'fast))
191 (setq truncate-lines t) 191 (setq truncate-lines t)
192 (setq buffer-read-only t) 192 (setq buffer-read-only t)
193 (run-hooks 'buffer-menu-mode-hook)) 193 (run-mode-hooks 'buffer-menu-mode-hook))
194 194
195 ;; This function exists so we can make the doc string of Buffer-menu-mode 195 ;; This function exists so we can make the doc string of Buffer-menu-mode
196 ;; look nice. 196 ;; look nice.
197 (defun Buffer-menu-revert () 197 (defun Buffer-menu-revert ()
198 "Update the list of buffers." 198 "Update the list of buffers."
201 201
202 (defun Buffer-menu-revert-function (ignore1 ignore2) 202 (defun Buffer-menu-revert-function (ignore1 ignore2)
203 (or (eq buffer-undo-list t) 203 (or (eq buffer-undo-list t)
204 (setq buffer-undo-list nil)) 204 (setq buffer-undo-list nil))
205 ;; We can not use save-excursion here. The buffer gets erased. 205 ;; We can not use save-excursion here. The buffer gets erased.
206 (let ((ocol (current-column)) 206 (let ((opoint (point))
207 (eobp (eobp))
208 (ocol (current-column))
207 (oline (progn (move-to-column 4) 209 (oline (progn (move-to-column 4)
208 (get-text-property (point) 'buffer))) 210 (get-text-property (point) 'buffer)))
209 (prop (point-min)) 211 (prop (point-min))
210 ;; do not make undo records for the reversion. 212 ;; do not make undo records for the reversion.
211 (buffer-undo-list t)) 213 (buffer-undo-list t))
212 (list-buffers-noselect Buffer-menu-files-only) 214 (list-buffers-noselect Buffer-menu-files-only)
213 (while (setq prop (next-single-property-change prop 'buffer)) 215 (if oline
214 (when (eq (get-text-property prop 'buffer) oline) 216 (while (setq prop (next-single-property-change prop 'buffer))
215 (goto-char prop) 217 (when (eq (get-text-property prop 'buffer) oline)
216 (move-to-column ocol))))) 218 (goto-char prop)
219 (move-to-column ocol)))
220 (goto-char (if eobp (point-max) opoint)))))
217 221
218 (defun Buffer-menu-toggle-files-only (arg) 222 (defun Buffer-menu-toggle-files-only (arg)
219 "Toggle whether the current buffer-menu displays only file buffers. 223 "Toggle whether the current buffer-menu displays only file buffers.
220 With a positive ARG display only file buffers. With zero or 224 With a positive ARG display only file buffers. With zero or
221 negative ARG, display other buffers as well." 225 negative ARG, display other buffers as well."
631 635
632 (defun Buffer-menu-make-sort-button (name column) 636 (defun Buffer-menu-make-sort-button (name column)
633 (if (equal column Buffer-menu-sort-column) (setq column nil)) 637 (if (equal column Buffer-menu-sort-column) (setq column nil))
634 (propertize name 638 (propertize name
635 'help-echo (if column 639 'help-echo (if column
636 (concat "mouse-2: sort by " (downcase name)) 640 (if Buffer-menu-use-header-line
637 "mouse-2: sort by visited order") 641 (concat "mouse-2: sort by " (downcase name))
642 (concat "mouse-2, RET: sort by "
643 (downcase name)))
644 (if Buffer-menu-use-header-line
645 "mouse-2: sort by visited order"
646 "mouse-2, RET: sort by visited order"))
638 'mouse-face 'highlight 647 'mouse-face 'highlight
639 'keymap (let ((map (make-sparse-keymap))) 648 'keymap (let ((map (make-sparse-keymap)))
640 (define-key map [header-line mouse-2] 649 (if Buffer-menu-use-header-line
641 `(lambda (e) 650 (define-key map [header-line mouse-2]
642 (interactive "e") 651 `(lambda (e)
643 (save-window-excursion 652 (interactive "e")
653 (save-window-excursion
654 (if e (mouse-select-window e))
655 (Buffer-menu-sort ,column))))
656 (define-key map [mouse-2]
657 `(lambda (e)
658 (interactive "e")
644 (if e (mouse-select-window e)) 659 (if e (mouse-select-window e))
660 (Buffer-menu-sort ,column)))
661 (define-key map "\C-m"
662 `(lambda () (interactive)
645 (Buffer-menu-sort ,column)))) 663 (Buffer-menu-sort ,column))))
646 map))) 664 map)))
647 665
648 (defun list-buffers-noselect (&optional files-only buffer-list) 666 (defun list-buffers-noselect (&optional files-only buffer-list)
649 "Create and return a buffer with a list of names of existing buffers. 667 "Create and return a buffer with a list of names of existing buffers.