X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/52b410c60aebeb769ec9580af25ca50df2a44751..656caef3505e11b073d59b9c18d3fd21e199d77c:/lisp/mouse.el diff --git a/lisp/mouse.el b/lisp/mouse.el index 4f7a804b38..e78eca40bc 100644 --- a/lisp/mouse.el +++ b/lisp/mouse.el @@ -1,6 +1,6 @@ ;;; mouse.el --- window system-independent mouse support -*- lexical-binding: t -*- -;; Copyright (C) 1993-1995, 1999-2014 Free Software Foundation, Inc. +;; Copyright (C) 1993-1995, 1999-2015 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: hardware, mouse @@ -450,7 +450,7 @@ must be one of the symbols `header', `mode', or `vertical'." (setq position (+ (window-pixel-top posn-window) position)) ;; If necessary, add height of header line to `position' (when (memq (posn-area start) - '(nil left-fringe right-frings left-margin right-margin)) + '(nil left-fringe right-fringe left-margin right-margin)) (setq position (+ (window-header-line-height posn-window) position)))) ;; When the cursor overshoots after shrinking a window to its ;; minimum size and the dragging direction changes, have the @@ -1516,8 +1516,17 @@ This switches buffers in the window that you clicked on, and selects that window." (interactive "e") (mouse-minibuffer-check event) - (let ((buffers (buffer-list)) alist menu split-by-major-mode sum-of-squares) - ;; Make an alist of elements that look like (MENU-ITEM . BUFFER). + (let ((buf (x-popup-menu event (mouse-buffer-menu-map))) + (window (posn-window (event-start event)))) + (when buf + (select-window + (if (framep window) (frame-selected-window window) + window)) + (switch-to-buffer buf)))) + +(defun mouse-buffer-menu-map () + ;; Make an alist of elements that look like (MENU-ITEM . BUFFER). + (let ((buffers (buffer-list)) split-by-major-mode sum-of-squares) (dolist (buf buffers) ;; Divide all buffers into buckets for various major modes. ;; Each bucket looks like (MODE NAMESTRING BUFFERS...). @@ -1581,18 +1590,10 @@ and selects that window." (setq subdivided-menus (cons (cons "Others" others-list) subdivided-menus))))) - (setq menu (cons "Buffer Menu" (nreverse subdivided-menus)))) - (progn - (setq alist (mouse-buffer-menu-alist buffers)) - (setq menu (cons "Buffer Menu" - (mouse-buffer-menu-split "Select Buffer" alist))))) - (let ((buf (x-popup-menu event menu)) - (window (posn-window (event-start event)))) - (when buf - (select-window - (if (framep window) (frame-selected-window window) - window)) - (switch-to-buffer buf))))) + (cons "Buffer Menu" (nreverse subdivided-menus))) + (cons "Buffer Menu" + (mouse-buffer-menu-split "Select Buffer" + (mouse-buffer-menu-alist buffers)))))) (defun mouse-buffer-menu-alist (buffers) (let (tail