unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#12387: 24.2.50; File column printed by list-buffers is bad if done in dired-mode
@ 2012-09-08 15:50 emacs18
  2012-09-13  7:52 ` Glenn Morris
  0 siblings, 1 reply; 6+ messages in thread
From: emacs18 @ 2012-09-08 15:50 UTC (permalink / raw)
  To: 12387

Start emacs (latest bzr version as of Sep 6, 2012) with -q option.
Type `C-x C-B'.  The content of *Buffer *List should be as expected, e.g.,

    .%  *GNU Emacs*             809 Fundamental      
        *scratch*               191 Lisp Interaction 
      * *Messages*               66 Fundamental      

Now bring up any buffer in dired mode, e.g., C-x C-f followed by "/etc" and
RETURN.  While current buffer is within a dired-mode, hit `C-x C-B' again.  The
last column (the File column) incorrectly shows that the values are all "/etc/":


    .%  etc                   18180 Dired by name    /etc/
     %  *GNU Emacs*             809 Fundamental      /etc/
        *scratch*               191 Lisp Interaction /etc/
      * *Messages*               85 Fundamental      /etc/

Now switch to *Buffer List* buffer, then hit 'g' to refresh the content.
Now it shows

     %  etc                   18180 Dired by name    
     %  *GNU Emacs*             809 Fundamental      
        *scratch*               191 Lisp Interaction 
      * *Messages*               85 Fundamental      

Following is a work-around that I cooked up for my own use till this bug is fixed.
This also should clarify what the problem is.

(defadvice list-buffers 
  (after unset-buffer-file-name-in-dired-mode activate compile)
  "This works around a bug in emacs-trunk introduced around Aug 2012 where
list-buffers shows invalid entries in the File column displayed when the
list-buffers is executed within dired buffer.  The work around is to refresh
the content of the *Buffer List* buffer after making sure that current buffer
is not a buffer in dired-mode."
  (when (eq major-mode 'dired-mode)
    (save-excursion
      (other-window 1)
      (revert-buffer))))


In GNU Emacs 24.2.50.1 (x86_64-unknown-linux-gnu, GTK+ Version 2.24.10)
 of 2012-09-08 on kimr-laptop
Bzr revision: 109937 rudalics@gmx.at-20120908132811-ycvntpb4znz8wyya
Windowing system distributor `The X.Org Foundation', version 11.0.11103000
Configured using:
 `configure '--prefix' '/u/kimr/usr''





^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#12387: 24.2.50; File column printed by list-buffers is bad if done in dired-mode
  2012-09-08 15:50 bug#12387: 24.2.50; File column printed by list-buffers is bad if done in dired-mode emacs18
@ 2012-09-13  7:52 ` Glenn Morris
  2012-09-13  9:37   ` martin rudalics
  0 siblings, 1 reply; 6+ messages in thread
From: Glenn Morris @ 2012-09-13  7:52 UTC (permalink / raw)
  To: emacs18; +Cc: 12387


Seems that format-mode-line (as of ~ 1 month) fails to preserve
current-buffer:

Evalute in *scratch*:

(let ((buffer (get-buffer "*Messages*")))
  (with-current-buffer buffer
    (message "1 %s" (current-buffer))
    (format-mode-line mode-name nil nil buffer)
    (message "2 %s" (current-buffer))))

->
1 *Messages*
2 *scratch*





^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#12387: 24.2.50; File column printed by list-buffers is bad if done in dired-mode
  2012-09-13  7:52 ` Glenn Morris
@ 2012-09-13  9:37   ` martin rudalics
  2012-09-13 17:07     ` Eli Zaretskii
  0 siblings, 1 reply; 6+ messages in thread
From: martin rudalics @ 2012-09-13  9:37 UTC (permalink / raw)
  To: Glenn Morris; +Cc: 12387, emacs18

 > Seems that format-mode-line (as of ~ 1 month) fails to preserve
 > current-buffer:
 >
 > Evalute in *scratch*:
 >
 > (let ((buffer (get-buffer "*Messages*")))
 >   (with-current-buffer buffer
 >     (message "1 %s" (current-buffer))
 >     (format-mode-line mode-name nil nil buffer)
 >     (message "2 %s" (current-buffer))))

Looks like a fallout from my

2012-08-20  Martin Rudalics  <rudalics@gmx.at>

	* window.c (select_window): Always make selected window's buffer
	current.

Does the patch below fix it?

martin

=== modified file 'src/xdisp.c'
--- src/xdisp.c	2012-09-12 00:14:50 +0000
+++ src/xdisp.c	2012-09-13 09:31:34 +0000
@@ -21039,8 +21039,7 @@
      : EQ (face, Qtool_bar) ? TOOL_BAR_FACE_ID
      : DEFAULT_FACE_ID;

-  if (XBUFFER (buffer) != current_buffer)
-    old_buffer = current_buffer;
+  old_buffer = current_buffer;

    /* Save things including mode_line_proptrans_alist,
       and set that to nil so that we don't alter the outer value.  */
@@ -21051,8 +21050,7 @@
    mode_line_proptrans_alist = Qnil;

    Fselect_window (window, Qt);
-  if (old_buffer)
-    set_buffer_internal_1 (XBUFFER (buffer));
+  set_buffer_internal_1 (XBUFFER (buffer));

    init_iterator (&it, w, -1, -1, NULL, face_id);








^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#12387: 24.2.50; File column printed by list-buffers is bad if done in dired-mode
  2012-09-13  9:37   ` martin rudalics
@ 2012-09-13 17:07     ` Eli Zaretskii
  2012-09-14  9:00       ` martin rudalics
  0 siblings, 1 reply; 6+ messages in thread
From: Eli Zaretskii @ 2012-09-13 17:07 UTC (permalink / raw)
  To: martin rudalics; +Cc: 12387, emacs18

> Date: Thu, 13 Sep 2012 11:37:07 +0200
> From: martin rudalics <rudalics@gmx.at>
> Cc: 12387@debbugs.gnu.org, emacs18@gmail.com
> 
> Does the patch below fix it?
> 
> martin
> 
> === modified file 'src/xdisp.c'
> --- src/xdisp.c	2012-09-12 00:14:50 +0000
> +++ src/xdisp.c	2012-09-13 09:31:34 +0000
> @@ -21039,8 +21039,7 @@
>       : EQ (face, Qtool_bar) ? TOOL_BAR_FACE_ID
>       : DEFAULT_FACE_ID;
> 
> -  if (XBUFFER (buffer) != current_buffer)
> -    old_buffer = current_buffer;
> +  old_buffer = current_buffer;
> 
>     /* Save things including mode_line_proptrans_alist,
>        and set that to nil so that we don't alter the outer value.  */
> @@ -21051,8 +21050,7 @@
>     mode_line_proptrans_alist = Qnil;
> 
>     Fselect_window (window, Qt);
> -  if (old_buffer)
> -    set_buffer_internal_1 (XBUFFER (buffer));
> +  set_buffer_internal_1 (XBUFFER (buffer));
> 
>     init_iterator (&it, w, -1, -1, NULL, face_id);

IMO, that's exactly what needs to be done.  The attempts to avoid
calling set_buffer_internal_1 are a classical case of premature
optimization, since that function already knows how to avoid changing
to the same buffer.





^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#12387: 24.2.50; File column printed by list-buffers is bad if done in dired-mode
  2012-09-13 17:07     ` Eli Zaretskii
@ 2012-09-14  9:00       ` martin rudalics
  2012-09-14 17:08         ` Glenn Morris
  0 siblings, 1 reply; 6+ messages in thread
From: martin rudalics @ 2012-09-14  9:00 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 12387, emacs18

 > IMO, that's exactly what needs to be done.  The attempts to avoid
 > calling set_buffer_internal_1 are a classical case of premature
 > optimization, since that function already knows how to avoid changing
 > to the same buffer.

Installed.

martin





^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#12387: 24.2.50; File column printed by list-buffers is bad if done in dired-mode
  2012-09-14  9:00       ` martin rudalics
@ 2012-09-14 17:08         ` Glenn Morris
  0 siblings, 0 replies; 6+ messages in thread
From: Glenn Morris @ 2012-09-14 17:08 UTC (permalink / raw)
  To: 12387-done

martin rudalics wrote:

> Installed.

Thanks, works for me.





^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2012-09-14 17:08 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-09-08 15:50 bug#12387: 24.2.50; File column printed by list-buffers is bad if done in dired-mode emacs18
2012-09-13  7:52 ` Glenn Morris
2012-09-13  9:37   ` martin rudalics
2012-09-13 17:07     ` Eli Zaretskii
2012-09-14  9:00       ` martin rudalics
2012-09-14 17:08         ` Glenn Morris

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).