home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / languages / elisp / epoch / avoid-split.el < prev    next >
Encoding:
Text File  |  1991-03-30  |  1.8 KB  |  60 lines

  1. ; From: tmb@AI.MIT.EDU (Thomas M. Breuel)
  2. ; Date: Mon, 30 Jul 90 20:44:56 EDT
  3. ; Subject: integrating epoch functions with standard emacs window functions
  4. ; The following code will override some of the default Emacs code and
  5. ; avoid splitting a window if some other X window (screen) already
  6. ; displays the target buffer.
  7. ;                         Thomas.
  8.  
  9.  
  10. (if (fboundp 'old-switch-to-buffer-other-window)
  11.     (fset 'old-switch-to-buffer-other-window
  12.       (symbol-function 'switch-to-buffer-other-window)))
  13.  
  14. (if (fboundp 'old-get-buffer-window) nil
  15.     (fset 'old-get-buffer-window (symbol-function 'get-buffer-window)))
  16.  
  17. (defun get-buffer-window (buffer)
  18.   (let ((window (epoch::get-buffer-window buffer)))
  19.     (if (null window) nil
  20.     (let* ((screen (epoch::screen-of-window window))
  21.            (info (epoch::screen-information))
  22.            (mapped (nth 5 info)))
  23.       (if mapped window nil)))))
  24.  
  25.  
  26. (if (fboundp 'old-pop-to-buffer) nil
  27.     (fset 'old-pop-to-buffer (symbol-function 'pop-to-buffer)))
  28.  
  29. (defun pop-to-buffer (buffer &optional split)
  30.   (let* ((window (get-buffer-window buffer))
  31.      (screen (and window (epoch::screen-of-window window))))
  32.     (cond
  33.       (window
  34.        (epoch::map-screen screen)
  35.        (epoch::raise-screen screen)
  36.        (epoch::select-screen screen)
  37.        (epoch::warp-pointer 10 10 screen)
  38.        (switch-to-buffer buffer)
  39.        window)
  40.       (t
  41.        (old-pop-to-buffer buffer split)))))
  42.  
  43. (if (fboundp 'old-display-buffer) nil
  44.     (fset 'old-display-buffer (symbol-function 'display-buffer)))
  45.  
  46. (defun display-buffer (buffer &optional split)
  47.   (let* ((window (get-buffer-window buffer))
  48.      (screen (and window (epoch::screen-of-window window))))
  49.     (cond
  50.       (window
  51.        (epoch::map-screen screen)
  52.        (epoch::raise-screen screen)
  53.        window)
  54.       (t
  55.        (old-display-buffer buffer split)))))
  56.  
  57. (setq temp-buffer-show-hook '(lambda (x) (display-buffer x)))
  58.