emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 2a954e8: * menu-bar.el (menu-bar-update-buffers): P


From: Artur Malabarba
Subject: [Emacs-diffs] master 2a954e8: * menu-bar.el (menu-bar-update-buffers): Properly count buffers.
Date: Sun, 22 Mar 2015 19:44:00 +0000

branch: master
commit 2a954e8aa6917572cbf9431f7b1a9ae19be18d7c
Author: Artur Malabarba <address@hidden>
Commit: Artur Malabarba <address@hidden>

    * 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 2f9c430..52c6a72 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,8 @@
+2015-03-22  Artur Malabarba  <address@hidden>
+
+       * 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  <address@hidden>
 
        * window.el (window-font-width, window-font-height)
diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el
index 5fdb937..2ace316 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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]