GNU bug report logs -
#1806
dired-pop-to-buffer in wrong place
Previous Next
Reported by: Juri Linkov <juri <at> jurta.org>
Date: Tue, 6 Jan 2009 15:40:04 UTC
Severity: normal
Done: Juri Linkov <juri <at> jurta.org>
Bug is archived. No further changes may be made.
Full log
Message #280 received at 1806 <at> emacsbugs.donarmstrong.com (full text, mbox):
[Message part 1 (text/plain, inline)]
>> Maybe you can come up with some advanced technique to do that but here I
>> would have to define a variable to save the current (user provided)
>> `split-window-preferred-function' and call the function I save there
>> within the body of the function provided by dired.
>
> I'd use something like
>
> (lexical-let ((oldfun split-window-preferred-function))
> (let ((split-window-preferred-function
> (lambda () (with-selected-window TOTO (funcall oldfun)))))
> BLABLA))
We probably need something like in the attached patch but my knowledge
of closures within Elisp is very limited.
> The above coding should be close to "standard practice" for locally
> rebinding a *-function variable. The "extra variable" doesn't matter,
> it's not like we count variables.
>
> Maybe what you're getting at is that we should make a hook to influence
> the window-choice. Maybe so. But it doesn't seem urgent.
I was aiming at an extra variable to work around "advanced techniques"
like closures. `lexical-let' doesn't even indent reasonably :-(
martin
[dired.el.diff (text/plain, inline)]
*** dired.el.~1.422.~ 2009-04-18 08:32:56.546875000 +0200
--- dired.el 2009-05-01 11:47:49.109375000 +0200
***************
*** 2686,2694 ****
(defun dired-pop-to-buffer (buf)
"Pop up buffer BUF in a way suitable for Dired."
! ;; Don't split window horizontally. (Bug#1806)
! (let (split-width-threshold)
! (pop-to-buffer (get-buffer-create buf)))
;; If dired-shrink-to-fit is t, make its window fit its contents.
(when dired-shrink-to-fit
;; Try to not delete window when we want to display less than
--- 2686,2696 ----
(defun dired-pop-to-buffer (buf)
"Pop up buffer BUF in a way suitable for Dired."
! (lexical-let ((old-fun split-window-preferred-function)
! (old-window (selected-window)))
! (let ((split-window-preferred-function
! (lambda () (with-selected-window old-window (funcall old-fun)))))
! (pop-to-buffer (get-buffer-create buf))))
;; If dired-shrink-to-fit is t, make its window fit its contents.
(when dired-shrink-to-fit
;; Try to not delete window when we want to display less than
This bug report was last modified 12 years and 236 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.