summaryrefslogtreecommitdiff
path: root/lisp/menu-bar.el
diff options
context:
space:
mode:
authorArtur Malabarba <bruce.connor.am@gmail.com>2015-03-22 19:29:57 +0000
committerArtur Malabarba <bruce.connor.am@gmail.com>2015-03-22 19:29:57 +0000
commit2a954e8aa6917572cbf9431f7b1a9ae19be18d7c (patch)
tree94cbaf206f97a92da0aa242843e183b3c8a66779 /lisp/menu-bar.el
parent32315502e0335f7840cdaa68d3fa3aa385a6943d (diff)
downloademacs-2a954e8aa6917572cbf9431f7b1a9ae19be18d7c.tar.gz
* menu-bar.el (menu-bar-update-buffers): Properly count buffers.
Diffstat (limited to 'lisp/menu-bar.el')
-rw-r--r--lisp/menu-bar.el22
1 files changed, 13 insertions, 9 deletions
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.