X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=lisp%2Fwindow-xemacs.el;h=4af77205d7dc9c4cd1141e725f464786565ef7cf;hb=2df059c60e547b9e6c827eea2682bd1511983dc0;hp=49504278dd92a3038ee25eb3983d78b25217bd01;hpb=dbf2768f7b146e97e37a27316f70bb313f1acf15;p=chise%2Fxemacs-chise.git.1 diff --git a/lisp/window-xemacs.el b/lisp/window-xemacs.el index 4950427..4af7720 100644 --- a/lisp/window-xemacs.el +++ b/lisp/window-xemacs.el @@ -376,6 +376,10 @@ OVERRIDE-FRAME was specified. If `pop-up-frames' is non-nil, make a new frame if no window shows BUFFER. +If the buffer name is a member of the `same-window-buffer-names' list, +or matches one of the `same-window-regexps' expressions, display the +buffer in the currently selected window. + Returns the window displaying BUFFER." (interactive "BDisplay buffer:\nP") @@ -385,7 +389,7 @@ Returns the window displaying BUFFER." ;; and does `returns' all over the place and there's no sense ;; in trying to rewrite it to be more Lispy. (catch 'done - (let (window old-frame target-frame explicit-frame) + (let (window old-frame target-frame explicit-frame shrink-it) (setq old-frame (or (last-nonminibuf-frame) (selected-frame))) (setq buffer (get-buffer buffer)) (check-argument-type 'bufferp buffer) @@ -573,9 +577,7 @@ Returns the window displaying BUFFER." (and (window-leftmost-p window) (window-rightmost-p window)))) (setq window (split-window window)) - (let (upper -;; lower - other) + (let (upper other) (setq window (get-lru-window target-frame)) ;; If the LRU window is selected, and big enough, ;; and can be split, split it. @@ -605,11 +607,9 @@ Returns the window displaying BUFFER." ;; even out their heights. (if (window-previous-child window) (setq other (window-previous-child window) -;; lower window upper other)) (if (window-next-child window) (setq other (window-next-child window) -;; lower other upper window)) ;; Check that OTHER and WINDOW are vertically arrayed. (if (and other @@ -622,8 +622,11 @@ Returns the window displaying BUFFER." 2) (window-height upper)) nil upper)) - (if shrink-to-fit - (shrink-window-if-larger-than-buffer window))))) + ;; Klaus Berndl : Only in + ;; this situation we shrink-to-fit but we can do + ;; this first after we have displayed buffer in + ;; window (s.b. (set-window-buffer window buffer)) + (setq shrink-it shrink-to-fit)))) (setq window (get-lru-window target-frame))) @@ -636,6 +639,12 @@ Returns the window displaying BUFFER." (set-window-buffer window buffer) + ;; Now window's previous buffer has been brought to the top + ;; of the MRU chain and window displays buffer - now we can + ;; shrink-to-fit if necessary + (if shrink-it + (shrink-window-if-larger-than-buffer window)) + (display-buffer-1 window))))) (or (equal wconfig (current-window-configuration)) (push-window-configuration wconfig))