diff options
author | Artur Malabarba <bruce.connor.am@gmail.com> | 2015-03-22 19:29:57 +0000 |
---|---|---|
committer | Artur Malabarba <bruce.connor.am@gmail.com> | 2015-03-22 19:29:57 +0000 |
commit | 2a954e8aa6917572cbf9431f7b1a9ae19be18d7c (patch) | |
tree | 94cbaf206f97a92da0aa242843e183b3c8a66779 /lisp/menu-bar.el | |
parent | 32315502e0335f7840cdaa68d3fa3aa385a6943d (diff) | |
download | emacs-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.el | 22 |
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. |