emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] /srv/bzr/emacs/trunk r104425: * menu-bar.el (kill-this-buf


From: Chong Yidong
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r104425: * menu-bar.el (kill-this-buffer-enabled-p): Avoid looping over entire buffer list (Bug#8184).
Date: Sun, 29 May 2011 15:11:23 -0400
User-agent: Bazaar (2.3.1)

------------------------------------------------------------
revno: 104425
author: Martin Rudalics <address@hidden>
committer: Chong Yidong <address@hidden>
branch nick: trunk
timestamp: Sun 2011-05-29 15:11:23 -0400
message:
  * menu-bar.el (kill-this-buffer-enabled-p): Avoid looping over entire buffer 
list (Bug#8184).
modified:
  lisp/ChangeLog
  lisp/menu-bar.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2011-05-29 18:17:28 +0000
+++ b/lisp/ChangeLog    2011-05-29 19:11:23 +0000
@@ -1,3 +1,8 @@
+2011-05-29  Martin Rudalics  <address@hidden>
+
+       * menu-bar.el (kill-this-buffer-enabled-p): Avoid looping over
+       entire buffer list (Bug#8184).
+
 2011-05-29  Chong Yidong  <address@hidden>
 
        * image.el (imagemagick-types-inhibit)

=== modified file 'lisp/menu-bar.el'
--- a/lisp/menu-bar.el  2011-02-10 16:56:00 +0000
+++ b/lisp/menu-bar.el  2011-05-29 19:11:23 +0000
@@ -1823,14 +1823,17 @@
     (abort-recursive-edit)))
 
 (defun kill-this-buffer-enabled-p ()
-  (let ((count 0)
-       (buffers (buffer-list)))
-    (while buffers
-      (or (string-match "^ " (buffer-name (car buffers)))
-         (setq count (1+ count)))
-      (setq buffers (cdr buffers)))
-    (or (not (menu-bar-non-minibuffer-window-p))
-       (> count 1))))
+  "Return non-nil if the `kill-this-buffer' menu item should be enabled."
+  (or (not (menu-bar-non-minibuffer-window-p))
+      (let (found-1)
+       ;; Instead of looping over entire buffer list, stop once we've
+       ;; found two "killable" buffers (Bug#8184).
+       (catch 'found-2
+         (dolist (buffer (buffer-list))
+           (unless (string-match-p "^ " (buffer-name buffer))
+             (if (not found-1)
+                 (setq found-1 t)
+               (throw 'found-2 t))))))))
 
 (put 'dired 'menu-enable '(menu-bar-non-minibuffer-window-p))
 


reply via email to

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