emacs-devel
[Top][All Lists]
Advanced

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

Re: dired "dwim" mode seems to fail now


From: Tim Cross
Subject: Re: dired "dwim" mode seems to fail now
Date: Mon, 20 Jun 2011 11:19:16 +1000



On Mon, Jun 20, 2011 at 9:58 AM, <address@hidden> wrote:
> Some time in the past few weeks, dired-dwim-target mode seems to have
> forgotten how to work (it's not offering the directory of the other
> buffer in the same window as a prefix).  I haven't had a chance to
> narrow the commit down, but if that rings a bell for anyone, consider
> this a nudge.

I didn't look at commits, but it seems `dired-dwim-target-directory'
calls `get-window-with-predicate' in such a way that the first window
returned is possibly the current window itself. It seems the
(unspecified?) order in which `get-window-with-predicate' tests windows
may have changed. I think the solution is to exclude from consideration
dired buffers that have the same current directory as the current
window. This seems most consistent with the current (23.2) stable emacs.

The real problem might be with window.el though. dired-aux.el hasn't
changed recently.

Patch:

=== modified file 'lisp/dired-aux.el'
*** lisp/dired-aux.el   2011-05-21 02:07:25 +0000
--- lisp/dired-aux.el   2011-06-19 23:33:36 +0000
*************** Optional arg HOW-TO determiness how to t
*** 1583,1589 ****
       (let* ((other-win (get-window-with-predicate
                          (lambda (window)
                            (with-current-buffer (window-buffer window)
!                              (eq major-mode 'dired-mode)))))
              (other-dir (and other-win
                              (with-current-buffer (window-buffer other-win)
                                (and (eq major-mode 'dired-mode)
--- 1583,1591 ----
       (let* ((other-win (get-window-with-predicate
                          (lambda (window)
                            (with-current-buffer (window-buffer window)
!                              (and (eq major-mode 'dired-mode)
!                                   (not (eq (dired-current-directory)
!                                            this-dir)))))))
              (other-dir (and other-win
                              (with-current-buffer (window-buffer other-win)
                                (and (eq major-mode 'dired-mode)



There has been a few changes in window.el recently which may explain the change in behaviour. I had lots of problems with VM with builds from last week (frames popping up unexpectedly, switching to the worng windows, new frames being used when previously existing frames were used etc. 

This all seems to have settled down with a fresh build from bzr sources this morning. My suggestion would be to update to latest version and if the problem persists, maybe report a bug. Much of the window/frame/buffer stuff seems pretty complex and I suspect that even the best effort to not change functionality while attempting to improve/clean-up/re-factor code will sometimes come undone! A bug report is probably the best way to alert those working on this area of the code that something they have done may have had an unintentional side effect.

Tim


reply via email to

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