]> code.delx.au - gnu-emacs/blobdiff - lisp/ebuff-menu.el
(rmail-summary-get-new-mail): Don't call rmail-summary-goto-msg if msg is 0.
[gnu-emacs] / lisp / ebuff-menu.el
index 7e511cc4d5f3ac0ad7d07598ea5e8ae1d4e74f95..b77601215870aca41b8a8933a8ca419c89404177 100644 (file)
@@ -1,6 +1,6 @@
 ;;; ebuff-menu.el --- electric-buffer-list mode
 
-;; Copyright (C) 1985, 1986 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1986, 1994 Free Software Foundation, Inc.
 
 ;; Author: Richard Mlynarik <mly@ai.mit.edu>
 
@@ -63,19 +63,24 @@ Calls value of `electric-buffer-menu-mode-hook' on entry if non-nil.
            (Electric-buffer-menu-mode)
            (setq select
                  (catch 'electric-buffer-menu-select
-                   (message "<<< Press Space to bury the buffer list >>>")
+                   (message "<<< Press Return to bury the buffer list >>>")
                    (if (eq (setq unread-command-events (list (read-event)))
                            ?\ )
                        (progn (setq unread-command-events nil)
                               (throw 'electric-buffer-menu-select nil)))
-                   (let ((first (progn (goto-char (point-min))
+                   (let ((start-point (point))
+                         (first (progn (goto-char (point-min))
                                        (forward-line 2)
                                        (point)))
                          (last (progn (goto-char (point-max))
                                       (forward-line -1)
                                       (point)))
                          (goal-column 0))
-                     (goto-char first)
+                     ;; Use start-point if it is meaningful.
+                     (goto-char (if (or (< start-point first)
+                                        (> start-point last))
+                                    first
+                                  start-point))
                      (Electric-command-loop 'electric-buffer-menu-select
                                             nil
                                             t
@@ -165,6 +170,7 @@ electric-buffer-menu-mode-hook if it is non-nil."
     (define-key map "\C-]" 'Electric-buffer-menu-quit)
     (define-key map "q" 'Electric-buffer-menu-quit)
     (define-key map " " 'Electric-buffer-menu-select)
+    (define-key map "\C-m" 'Electric-buffer-menu-select)
     (define-key map "\C-l" 'recenter)
     (define-key map "s" 'Buffer-menu-save)
     (define-key map "d" 'Buffer-menu-delete)
@@ -194,6 +200,10 @@ electric-buffer-menu-mode-hook if it is non-nil."
     (define-key map "\e\C-v" 'scroll-other-window)
     (define-key map "\e>" 'end-of-buffer)
     (define-key map "\e<" 'beginning-of-buffer)
+    (define-key map "\e\e" nil)
+    (define-key map "\e\e\e" 'Electric-buffer-menu-quit)
+    (define-key map [escape escape escape] 'Electric-buffer-menu-quit)
+    (define-key map [mouse-2] 'Electric-buffer-menu-mouse-select)
     (setq electric-buffer-menu-mode-map map)))
  
 (defun Electric-buffer-menu-exit ()
@@ -212,6 +222,13 @@ Selects buffer at point and displays buffers marked \">\" in other windows."
   (interactive)
   (throw 'electric-buffer-menu-select (point)))
 
+(defun Electric-buffer-menu-mouse-select (event)
+  (interactive "e")
+  (select-window (posn-window (event-end event)))
+  (set-buffer (window-buffer (selected-window)))
+  (goto-char (posn-point (event-end event)))
+  (throw 'electric-buffer-menu-select (point)))
+
 (defun Electric-buffer-menu-quit ()
   "Leave Electric Buffer Menu, restoring previous window configuration.
 Does not execute select, save, or delete commands."