diff options
author | Miles Bader <miles@gnu.org> | 2007-08-13 13:48:35 +0000 |
---|---|---|
committer | Miles Bader <miles@gnu.org> | 2007-08-13 13:48:35 +0000 |
commit | b2e6b10fe2d40020a75ab0025af98a4abf339cd2 (patch) | |
tree | db265e5ea93cdc13f8e3b54ed5c7ad2869d50ec9 /lisp/mouse.el | |
parent | 905350bef3ebc514a418658dd155c1d062664b56 (diff) | |
parent | 37cc095b6a175fb5a2fb18fa029eaf3aa3b3fa53 (diff) | |
download | emacs-b2e6b10fe2d40020a75ab0025af98a4abf339cd2.tar.gz emacs-b2e6b10fe2d40020a75ab0025af98a4abf339cd2.tar.bz2 emacs-b2e6b10fe2d40020a75ab0025af98a4abf339cd2.zip |
Merge from emacs--devo--0
Patches applied:
* emacs--devo--0 (patch 846-851)
- Update from CVS
- Merge from emacs--rel--22
* emacs--rel--22 (patch 88-92)
- Update from CVS
- Merge from gnus--rel--5.10
* gnus--rel--5.10 (patch 242-244)
- Update from CVS
Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-246
Diffstat (limited to 'lisp/mouse.el')
-rw-r--r-- | lisp/mouse.el | 38 |
1 files changed, 17 insertions, 21 deletions
diff --git a/lisp/mouse.el b/lisp/mouse.el index cbbaf73fcbb..27c5dd901f7 100644 --- a/lisp/mouse.el +++ b/lisp/mouse.el @@ -1814,27 +1814,23 @@ and selects that window." (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 ((tail buffers)) - (while tail - ;; Divide all buffers into buckets for various major modes. - ;; Each bucket looks like (MODE NAMESTRING BUFFERS...). - (with-current-buffer (car tail) - (let* ((adjusted-major-mode major-mode) elt) - (let ((tail mouse-buffer-menu-mode-groups)) - (while tail - (if (string-match (car (car tail)) mode-name) - (setq adjusted-major-mode (cdr (car tail)))) - (setq tail (cdr tail)))) - (setq elt (assoc adjusted-major-mode split-by-major-mode)) - (if (null elt) - (setq elt (list adjusted-major-mode - (if (stringp adjusted-major-mode) - adjusted-major-mode - mode-name)) - split-by-major-mode (cons elt split-by-major-mode))) - (or (memq (car tail) (cdr (cdr elt))) - (setcdr (cdr elt) (cons (car tail) (cdr (cdr elt))))))) - (setq tail (cdr tail)))) + (dolist (buf buffers) + ;; Divide all buffers into buckets for various major modes. + ;; Each bucket looks like (MODE NAMESTRING BUFFERS...). + (with-current-buffer buf + (let* ((adjusted-major-mode major-mode) elt) + (dolist (group mouse-buffer-menu-mode-groups) + (when (string-match (car group) (format-mode-line mode-name)) + (setq adjusted-major-mode (cdr group)))) + (setq elt (assoc adjusted-major-mode split-by-major-mode)) + (unless elt + (setq elt (list adjusted-major-mode + (if (stringp adjusted-major-mode) + adjusted-major-mode + mode-name)) + split-by-major-mode (cons elt split-by-major-mode))) + (or (memq buf (cdr (cdr elt))) + (setcdr (cdr elt) (cons buf (cdr (cdr elt)))))))) ;; Compute the sum of squares of sizes of the major-mode buckets. (let ((tail split-by-major-mode)) (setq sum-of-squares 0) |