[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: mouse-buffer-menu signals wrong-type-argument
From: |
Eli Zaretskii |
Subject: |
Re: mouse-buffer-menu signals wrong-type-argument |
Date: |
Tue, 28 Aug 2001 09:26:42 +0300 (IDT) |
On 10 Aug 2001, Kalle Olavi Niemitalo wrote:
> 6. Start `mouse-buffer-menu'.
> C-down-mouse-1
>
> 7. Emacs gives an error:
> Wrong type argument: consp, nil
>
> I originally got the error with a much larger set of buffers;
> I hope this smaller set is easier for you to reproduce.
Please try the changes below. I'm not sure they solve your original
problem, since the only mode I could reproduce this is the Fundamental
mode, and killing *Messages* sounds a bit extreme, to say the least...
2001-08-27 Eli Zaretskii <eliz@is.elta.co.il>
* mouse.el (mouse-buffer-menu): If the buffer menu is split by
major modes, don't create panes for modes for which
mouse-buffer-menu-alist returns an empty alist.
*** lisp/mouse.e~2 Thu Aug 9 19:04:18 2001
--- lisp/mouse.el Mon Aug 27 00:05:22 2001
***************
*** 1571,1596 ****
(while (and split-by-major-mode
(and (> (length (car split-by-major-mode)) 3)
(> (* buffers-left 10) (length buffers))))
! (setq subdivided-menus
! (cons (cons
! (nth 1 (car split-by-major-mode))
! (mouse-buffer-menu-alist
! (cdr (cdr (car split-by-major-mode)))))
! subdivided-menus))
(setq buffers-left
(- buffers-left (length (cdr (car split-by-major-mode)))))
(setq split-by-major-mode (cdr split-by-major-mode)))
;; If any major modes are left over,
;; make a single submenu for them.
(if split-by-major-mode
! (setq subdivided-menus
! (cons (cons
! "Others"
! (mouse-buffer-menu-alist
! ;; we don't need split-by-major-mode any
! ;; more, so we can ditch it with nconc.
! (apply 'nconc (mapcar 'cddr split-by-major-mode))))
! subdivided-menus)))
(setq menu (cons "Buffer Menu" (nreverse subdivided-menus))))
(progn
(setq alist (mouse-buffer-menu-alist buffers))
--- 1571,1599 ----
(while (and split-by-major-mode
(and (> (length (car split-by-major-mode)) 3)
(> (* buffers-left 10) (length buffers))))
! (let ((this-mode-list (mouse-buffer-menu-alist
! (cdr (cdr (car split-by-major-mode))))))
! (and this-mode-list
! (setq subdivided-menus
! (cons (cons
! (nth 1 (car split-by-major-mode))
! this-mode-list)
! subdivided-menus))))
(setq buffers-left
(- buffers-left (length (cdr (car split-by-major-mode)))))
(setq split-by-major-mode (cdr split-by-major-mode)))
;; If any major modes are left over,
;; make a single submenu for them.
(if split-by-major-mode
! (let ((others-list
! (mouse-buffer-menu-alist
! ;; we don't need split-by-major-mode any more,
! ;; so we can ditch it with nconc.
! (apply 'nconc (mapcar 'cddr split-by-major-mode)))))
! (and others-list
! (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))