From 2a954e8aa6917572cbf9431f7b1a9ae19be18d7c Mon Sep 17 00:00:00 2001 From: Artur Malabarba Date: Sun, 22 Mar 2015 19:29:57 +0000 Subject: [PATCH] * menu-bar.el (menu-bar-update-buffers): Properly count buffers. --- lisp/ChangeLog | 5 +++++ lisp/menu-bar.el | 22 +++++++++++++--------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 2f9c430e45d..52c6a726432 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2015-03-22 Artur Malabarba + + * menu-bar.el (menu-bar-update-buffers): Count displayed buffers + for `buffers-menu-max-size', not total buffers. + 2015-03-21 Titus von der Malsburg * window.el (window-font-width, window-font-height) diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el index 5fdb9377a48..2ace3162c90 100644 --- a/lisp/menu-bar.el +++ b/lisp/menu-bar.el @@ -1949,20 +1949,20 @@ It must accept a buffer as its only required argument.") (let ((buffers (buffer-list)) (frames (frame-list)) buffers-menu) - ;; If requested, list only the N most recently selected buffers. - (if (and (integerp buffers-menu-max-size) - (> buffers-menu-max-size 1)) - (if (> (length buffers) buffers-menu-max-size) - (setcdr (nthcdr buffers-menu-max-size buffers) nil))) ;; Make the menu of buffers proper. (setq buffers-menu - (let (alist) + (let ((i 0) + (limit (if (and (integerp buffers-menu-max-size) + (> buffers-menu-max-size 1)) + buffers-menu-max-size most-positive-fixnum)) + alist) ;; Put into each element of buffer-list ;; the name for actual display, ;; perhaps truncated in the middle. - (dolist (buf buffers) - (let ((name (buffer-name buf))) + (while buffers + (let* ((buf (pop buffers)) + (name (buffer-name buf))) (unless (eq ?\s (aref name 0)) (push (menu-bar-update-buffers-1 (cons buf @@ -1976,7 +1976,11 @@ It must accept a buffer as its only required argument.") name (- (/ buffers-menu-buffer-name-length 2)))) name) )) - alist)))) + alist) + ;; If requested, list only the N most recently + ;; selected buffers. + (when (= limit (setq i (1+ i))) + (setq buffers nil))))) (list (menu-bar-buffer-vector alist)))) ;; Make a Frames menu if we have more than one frame. -- 2.39.5