From 22b50772742c38fe7098101d86ab96907b475f49 Mon Sep 17 00:00:00 2001 From: Gerd Moellmann Date: Wed, 22 Aug 2001 08:54:43 +0000 Subject: [PATCH] (mode-line-unbury-buffer): Add EVENT parameter. Temporarily select EVENT's window for switching buffers. (mode-line-bury-buffer): New function. (mode-line-buffer-identification-keymap): Use it instead of bury-buffer. Bind down-mouse events to prevent global down-mouse events to shine through. --- lisp/bindings.el | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/lisp/bindings.el b/lisp/bindings.el index af5d65dd20b..aff7fcea74d 100644 --- a/lisp/bindings.el +++ b/lisp/bindings.el @@ -241,13 +241,22 @@ Keymap for what is displayed by `mode-line-mode-name'.") (defvar mode-line-mode-menu-keymap nil "\ Keymap for mode operations menu in the mode line.") -(defun mode-line-unbury-buffer () "\ +(defun mode-line-unbury-buffer (event) "\ Switch to the last buffer in the buffer list that is not hidden." - (interactive) - (let ((list (reverse (buffer-list)))) - (while (eq (aref (buffer-name (car list)) 0) ? ) - (setq list (cdr list))) - (switch-to-buffer (car list)))) + (interactive "e") + (save-selected-window + (select-window (posn-window (event-start event))) + (let ((list (reverse (buffer-list)))) + (while (eq (aref (buffer-name (car list)) 0) ? ) + (setq list (cdr list))) + (switch-to-buffer (car list))))) + +(defun mode-line-bury-buffer (event) "\ +Like bury-buffer, but temporarily select EVENT's window." + (interactive "e") + (save-selected-window + (select-window (posn-window (event-start event))) + (bury-buffer))) (defun mode-line-other-buffer () "\ Switch to the most recently selected buffer other than the current one." @@ -334,10 +343,16 @@ Return a string to display in the mode line for the current mode name." ;; of the mode line.or header line. ; (let ((map (make-sparse-keymap))) + ;; Bind down- events so that the global keymap won't ``shine + ;; through''. + (define-key map [mode-line down-mouse-1] 'ignore) (define-key map [mode-line mouse-1] 'mode-line-unbury-buffer) + (define-key map [header-line down-mouse-1] 'ignore) (define-key map [header-line mouse-1] 'mode-line-unbury-buffer) - (define-key map [mode-line mouse-3] 'bury-buffer) - (define-key map [header-line mouse-3] 'bury-buffer) + (define-key map [header-line down-mouse-3] 'ignore) + (define-key map [mode-line mouse-3] 'mode-line-bury-buffer) + (define-key map [header-line down-mouse-3] 'ignore) + (define-key map [header-line mouse-3] 'mode-line-bury-buffer) (setq mode-line-buffer-identification-keymap map)) (defun propertized-buffer-identification (fmt) -- 2.39.5