X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/f1180544bb5ff44cdb45b8734734294b0a2fa7a4..dc3eeeb48af706de824b7b8bae62dc868d26637e:/lisp/msb.el diff --git a/lisp/msb.el b/lisp/msb.el index 453dcb7199..aa42e18300 100644 --- a/lisp/msb.el +++ b/lisp/msb.el @@ -1,7 +1,7 @@ ;;; msb.el --- customizable buffer-selection with multiple menus -;; Copyright (C) 1993, 94, 95, 97, 98, 99, 2000, 2001, 2003 -;; Free Software Foundation, Inc. +;; Copyright (C) 1993, 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, +;; 2003, 2004, 2005, 2006 Free Software Foundation, Inc. ;; Author: Lars Lindberg ;; Maintainer: FSF @@ -23,8 +23,8 @@ ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. ;;; Commentary: @@ -185,7 +185,7 @@ "Elisp Files (%d)") ((eq major-mode 'latex-mode) 3030 - "LaTex Files (%d)") + "LaTeX Files (%d)") ('no-multi 3099 "Other files (%d)"))) @@ -474,12 +474,20 @@ See the function `mouse-select-buffer' and the variable `msb-menu-cond' for more information about how the menus are split." (interactive "e") (let ((old-window (selected-window)) - (window (posn-window (event-start event)))) + (window (posn-window (event-start event))) + early-release) (unless (framep window) (select-window window)) + ;; This `sit-for' magically makes the menu stay up if the mouse + ;; button is released within 0.1 second. + (setq early-release (not (sit-for 0.1 t))) (let ((buffer (mouse-select-buffer event))) (if buffer (switch-to-buffer buffer) - (select-window old-window)))) + (select-window old-window))) + ;; If the above `sit-for' was interrupted by a mouse-up, avoid + ;; generating a drag event. + (if (and early-release (memq 'down (event-modifiers last-input-event))) + (discard-input))) nil) ;;; @@ -489,7 +497,7 @@ See the function `mouse-select-buffer' and the variable "Return t if optional BUFFER is an \"invisible\" buffer. If the argument is left out or nil, then the current buffer is considered." (and (> (length (buffer-name buffer)) 0) - (eq ?\ (aref (buffer-name buffer) 0)))) + (eq ?\s (aref (buffer-name buffer) 0)))) (defun msb--strip-dir (dir) "Strip one hierarchy level from the end of DIR." @@ -990,9 +998,6 @@ variable `msb-menu-cond'." ;; adjust position (setq posX (- posX (funcall msb-horizontal-shift-function)) position (list (list posX posY) posWind)))) - ;; This `sit-for' magically makes the menu stay up if the mouse - ;; button is released within 0.1 second. - (sit-for 0 100) ;; Popup the menu (setq choice (x-popup-menu position msb--last-buffer-menu)) (cond @@ -1002,7 +1007,7 @@ variable `msb-menu-cond'." (mouse-select-buffer event)) ((and (numberp (car choice)) (null (cdr choice))) - (let ((msb--last-buffer-menu (nthcdr 3 (assq (car choice) + (let ((msb--last-buffer-menu (nthcdr 2 (assq (car choice) msb--last-buffer-menu)))) (mouse-select-buffer event))) ((while (numberp (car choice)) @@ -1141,7 +1146,7 @@ variable `msb-menu-cond'." With arg, turn Msb mode on if and only if arg is positive. This mode overrides the binding(s) of `mouse-buffer-menu' to provide a different buffer menu using the function `msb'." - :global t + :global t :group 'msb (if msb-mode (progn (add-hook 'menu-bar-update-hook 'msb-menu-bar-update-buffers) @@ -1153,8 +1158,10 @@ different buffer menu using the function `msb'." (defun msb-unload-hook () (msb-mode 0)) +(add-hook 'msb-unload-hook 'msb-unload-hook) (provide 'msb) (eval-after-load "msb" '(run-hooks 'msb-after-load-hook 'msb-after-load-hooks)) +;;; arch-tag: 403f9e82-b92e-4e7a-a797-5d6d9b76da36 ;;; msb.el ends here