GNU bug report logs - #12081
24.1; buffer-predicate often not called

Previous Next

Package: emacs;

Reported by: Dave Abrahams <dave <at> boostpro.com>

Date: Sat, 28 Jul 2012 20:55:01 UTC

Severity: normal

Found in version 24.1

Done: martin rudalics <rudalics <at> gmx.at>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: martin rudalics <rudalics <at> gmx.at>
To: Dave Abrahams <dave <at> boostpro.com>
Cc: 12081 <at> debbugs.gnu.org
Subject: bug#12081: 24.1; buffer-predicate often not called
Date: Sun, 29 Jul 2012 19:08:10 +0200
>>> 1. Evaluate:
>>>
>>> (set-frame-parameter
>>>    (selected-frame)
>>>    'buffer-predicate (lambda (b) (message "buffer predicate: %s" b)))
>>> 2. `C-x C-f /tmp/xx RET'
>>>
>>> 3. `C-x C-f /tmp/yy RET'
>>>
>>> 4. `C-x k RET'
>>>
>>> 5. `M-: (message "======")'
>>>
>>> 6. `C-x b *Messages* RET'
>>>
>>> This shows that the buffer-predicate never called when deciding what
>>> buffer to replace yy with.
>> Not so here: *Messages* contains the three lines fragment below
>>
>> =====
>> "====="
>> buffer predicate: *scratch*
>
> Actually that shows exactly what I claimed.  There's a reason I added
> step 5.  The buffer predicate is not called until we try to switch to
> the *Messages* buffer.  IMO it should be called when yy is killed.

I see.  But `kill-buffer' calls `replace-buffer-in-windows' which
doesn't call `other-buffer'.  Only if the buffer to be killed is still
current after that, `kill-buffer' calls `other-buffer'.  In the scenario
above it is not called.

Why is showing the buffer visiting /tmp/xx bad in your scenario?  Can
you give a scenario where the present behavior really hurts you?  In
that case we can try to ignore such a buffer in `switch-to-prev-buffer'.

martin




This bug report was last modified 12 years and 317 days ago.

Previous Next


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