From: Gerd Moellmann Date: Wed, 22 Aug 2001 08:54:43 +0000 (+0000) Subject: (mode-line-unbury-buffer): Add EVENT parameter. X-Git-Tag: emacs-pretest-21.0.105~120 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=22b50772742c38fe7098101d86ab96907b475f49;p=emacs.git (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. --- 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)