GNU bug report logs - #6147
23.2; ido-read-buffer regression

Previous Next

Package: emacs;

Reported by: Kyle Hargraves <pd <at> krh.me>

Date: Sun, 9 May 2010 20:40:03 UTC

Severity: normal

Found in version 23.2

Done: Stefan Monnier <monnier <at> iro.umontreal.ca>

Bug is archived. No further changes may be made.

Full log


Message #8 received at 6147 <at> debbugs.gnu.org (full text, mbox):

From: Juanma Barranquero <lekktu <at> gmail.com>
To: Kyle Hargraves <pd <at> krh.me>
Cc: 6147 <at> debbugs.gnu.org
Subject: Re: bug#6147: 23.2; ido-read-buffer regression
Date: Mon, 10 May 2010 01:02:30 +0200
On Sun, May 9, 2010 at 22:06, Kyle Hargraves <pd <at> krh.me> wrote:

> This can be reproduced by evaluating:
> (ido-read-buffer "Buffer: " "nonexistent-buffer")
> In 23.2, you will see only a list of your current buffers. In 23.1,
> nonexistent-buffer is the default value.

Yes, it has changed.

> I believe the related commit may be:
> http://github.com/emacsmirror/emacs/commit/e2300713fd5a941bfe1dad338b88f4caf77cc945

Why do you believe that? AFAICS, that commit is related to virtual
buffers, and so it's not on Emacs 23.2.

The "culprit" is this change:

  ------------------------------------------------------------
  revno: 99373
  author: Óscar Fuentes <ofv <at> wanadoo.es>
  committer: Juanma Barranquero <lekktu <at> gmail.com>
  branch nick: trunk
  timestamp: Mon 2010-01-18 20:34:55 +0100
  message:
    ido.el: Consider the possibility of buffer names changing after kill-buffer.

which includes this:

        (ido-make-buffer-list): If "default" is a nonexistent
        buffer, ignore it, as per the docstring.


=== modified file 'lisp/ido.el'
--- lisp/ido.el	2010-01-13 08:35:10 +0000
+++ lisp/ido.el	2010-01-18 19:34:55 +0000
@@ -3344,7 +3344,7 @@
     (if ido-temp-list
 	(nconc ido-temp-list ido-current-buffers)
       (setq ido-temp-list ido-current-buffers))
-    (if default
+    (if (and default (buffer-live-p (get-buffer default)))
 	(progn
 	  (setq ido-temp-list
 		(delete default ido-temp-list))


Now, though `ido-make-buffer-list' has not exactly a docstring, but a
comment, it really says:

  ;; [...]  If DEFAULT is non-nil, and corresponds to an existing buffer,
  ;; it is put to the start of the list.

so the use you did of it was relying on undocumented behaviour.

Whether it should work as you prefer or not, I have no comment; but
there has been some recent discussion on emacs-devel about reverting
this patch and replacing it with another fix, by Leo (see thread
titled "PATCH: Fix IDO  interaction with uniquify.el"); so perhaps you
can chime in with your thoughts.

   Juanma




This bug report was last modified 14 years and 274 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.