;ELC   
;;; compiled by cthomp@willow on Fri Sep  3 14:43:26 1993
;;; from file /export/willow0/era-working/editor/lisp/ilisp/popper.el
;;; emacs version 19.8 (beta12) Lucid.
;;; bytecomp version 2.18; 28-aug-93.
;;; optimization is on.
;;; this file uses opcodes which do not exist in Emacs 18.

(if (and (boundp 'emacs-version)
	 (or (and (boundp 'epoch::version) epoch::version)
	     (string-lessp emacs-version "19")))
    (error "This file was compiled for Emacs 19."))

(defvar popper-load-hook nil "\
List of functions to run when the popper module is loaded.")
(defvar popper-pop-buffers nil "\
*List of buffers to put in the shrink-wrapped pop-up window.  
If it is T, all temporary buffers will be put in the pop-up window.")
(defvar popper-use-message-buffer t "\
*If non-nil makes output to popper-buffers that is one line or less
  go to the minibuffer.")
(defvar popper-no-pop-buffers nil "\
*If popper-pop-buffers is T, these buffers will not be put into the
pop-up window.")
(defvar popper-buffers-to-skip popper-pop-buffers "\
*\\[popper-other-window] will skip over these buffers when they are
used in a temporary window.  If it is T, all popper windows will be
skipped except those in popper-buffers-no-skip.")
(defvar popper-buffers-no-skip nil "\
*\\[popper-other-window] will not skip these buffers when they are
used in a popper window if popper-buffers-to-skip is T.")
(defvar popper-eat-newlines t "\
*Boolean for eating trailing newlines in popper buffers.")
(defvar popper-scroll-buffers t "\
*If set to T or a list of buffer names, cause buffers with
associated processes to scroll automatically.")
(byte-code "ÀÀ‡" [2 window-min-height] 1)
(defvar popper-empty-min '(50) "\
*Minimum number of lines to display for an empty popper buffer.  If
it is a list, it is an integer percentage 0-100 of the available space.")
(defvar popper-min-heights '(("^\\*compilation\\*" 50)) "\
*List of cons where each the car is a regular expression pattern to
match a buffer name and the cdr is the minimum number of lines to
allow when popping buffers that match the regular expression.  If the
number is a list, it is interpreted as the percentage of available
space 0-100 to use for the window.")
(defvar popper-mode-line-text nil "\
*Minor mode text for mode line of popper buffers.  If nil, it will
be set to a short help message on first use of popper.")
(defvar popper-output-buffers nil "\
LIFO list of buffers displayed in the popper window.")
(defvar popper-last-output-window nil "\
The window that last popped up an output window.")
(defvar popper-buffer nil "\
Indicates buffer is a popper for minor-mode-alist.")
(byte-code "ÀÁ!ˆÁ\nž¬„Ã\nBÀ‡" [make-variable-buffer-local popper-buffer minor-mode-alist (popper-buffer popper-mode-line-text)] 2)
(defconst popper-emacs-version-id (byte-code "ÀÁ\n\"«ŠÀÃ\n\"«‚Ä‡Å‡ÀÆ\n\"«‚Ç‡È‡" [string-match "Lucid" emacs-version "^19.[0-7][^0-9]" lucid-19 lucid-19-new "^19" fsf-19 fsf-18] 3) "\
What version of emacs we are running. ")
(fset 'popper-mem #[(item list &optional elt=) "®�ÁÂ«”¬‘@\"«„ªoA‰¬l*‡" [elt= equal nil done list item] 4 "\
Test to see if ITEM is equal to an item in LIST.
Option comparison function ELT= defaults to equal."])
(fset 'popper-select #[(&optional window) "®‚Á Â!ˆÃ!q‡" [window selected-window select-window window-buffer] 2 "\
Select WINDOW and its buffer.  WINDOW defaults to selected-window."])
(fset 'popper-first-buffer #[nil "«ŒÁ@!¬†A‰¬t\nA«•Á\nA@!«†\nA‰ªp\n‰AA¡ˆªg)@‡" [popper-output-buffers buffer-name buffers] 3 "\
Remove killed buffers and return the first buffer on
popper-output-buffers."])
(fset 'popper-output-buffer #[nil "À ˆÁ Â =?­¿Ä«®¬«@È!­„É!‰\n«…ª�Š@qˆÄ)A*ªN«ƒ*‡" [popper-first-buffer selected-window next-window popper-output-buffers nil done buffers buffer buffer-name get-buffer-window window popper-buffer] 3 "\
Return the buffer being displayed in the popper window."])
(fset 'popper-parent #[nil "À ‰­†ÂÃ	!Ä\")‡" [popper-output-buffer output next-window get-buffer-window no] 4 "\
Return the parent of the popper window."])
(fset 'popper-window-heights #[(window) "ÀÂ!ˆÂÄÅ Æ\"!ˆÅ =¬‰ÇÅ !	BªiÈ	!)‡" [nil heights select-window window next-window selected-window no window-height reverse] 4 "\
Return a list of the heights of all of the windows following WINDOW."])
(fset 'popper-min-height #[nil "À 	Â«—Æ@@\"«‰@AÂ‰ªmA‰¬i¬ŒedU«„ª‚:«ŽÉ ÉÊ !\\@_Ë¥ª�+‡" [buffer-name popper-min-heights nil min pat buffer string-match popper-empty-min window-min-height window-height next-window 100] 4 "\
Return the minimum height to use for the buffer in the current
window.  This is either an entry from popper-min-heights,
popper-empty-min if the buffer is empty or window-min-height."])
(defvar popper-original-filter nil "\
Original process filter.")
(make-variable-buffer-local 'popper-original-filter)
(fset 'popper-scroll-filter #[(process output) "À Â!Å!ÇŠqˆ	«‰	\n\"ˆª�Ë!bˆ\ncˆË!`Ç“ˆ)­“Ì!ˆdbˆÍÇ!ˆÌ	!,‡" [selected-window old process-buffer process buffer get-buffer-window window nil *w popper-original-filter output process-mark select-window move-to-window-line] 3 "\
Scroll and keep last point in window."])
(fset 'popper-show-output #[(&optional buffer size) "À Â	!Ä®‡Æ ®ƒÇÈ!!É\nÉ®‚\\ŠqˆÏed\")‰ÑU«‘«�ÓŠqˆed{)!‚(	=«…Õ ‚(	Ö =«–× ØÙ!ˆÚ®‚Û ‰!ˆ)ªŠÜ =¬„ØÙ!ˆÝ	!W«‰ÞÝ	!Z!ˆß	!\nàÉ\"ˆá	\"ˆqˆÙ\"#¬°äåæ'è=«ˆéØÉ‰Ù$ª…éØÉÙ#!æ'è=«ˆéêÉ‰Ù$ª…éêÉÙ#!#C#ë,\"B,¬ƒÕ ˆí	î\"ï!ˆŠð\n\"ˆñÝ	!!ˆð`\"ˆ)Šòyˆ`)3ô3!¬‡ðÀ 3\"ˆ)Ö =«…ÚÖ !ˆq.‡" [selected-window window window-buffer old-buffer get-buffer-create buffer popper-first-buffer error "No popper buffers" nil start parent window-min-height size min-height count-lines text-lines 1 popper-use-message-buffer message popper-last-output-window popper-shrink-window minibuffer-window popper-parent popper-bury-output t select-window previous-window popper-output-buffer window-height enlarge-window window-start split-window set-window-buffer popper-buffer popper-mode-line-text format " %s bury, %s scroll" key-description popper-emacs-version-id fsf-19 where-is-internal popper-scroll-output delq popper-output-buffers next-window no popper-select set-window-start move-to-window-line 0 point pos-visible-in-window-p] 10 "\
Bring the output window up showing optional BUFFER in window of
SIZE.  If SIZE is not specified, then shrink the window.  Finally
select the original window."])
(fset 'popper-shrink-window #[nil "À Â	!SÄ	!qˆÅÆ Š«‘dbˆÉÅxˆ`dW«…`Td|ˆebˆÊË!«„ÌÍ!ˆÎ!ˆ+Ïp!‰«±Ò=¬ˆÓp!>«£ÔÕ!!¬…Ö ˆªsdbˆ×cˆØ`!ˆÙ!ÛÜ\"ˆ)ÝŠebˆÞ!)Tß S]Z!*‡" [selected-window window window-height window-lines window-buffer nil buffer-modified-p buffer-read-only popper-eat-newlines "\n" looking-at "\n+" replace-match "" set-buffer-modified-p get-buffer-process process popper-scroll-buffers t buffer-name marker-position process-mark accept-process-output 32 set-mark process-filter popper-original-filter set-process-filter popper-scroll-filter enlarge-window vertical-motion popper-min-height] 4 "\
Shrink the current window if larger than its buffer unless it has
an entry in popper-min-heights or it is empty in which case
popper-empty-min is used."])
(fset 'popper-show #[(buffer) "À	!«…Â	!ª�	Å=«“Æ\"¬†È	!ˆª–É	!ˆª�Æ\"«†È	!ˆª„É	!ˆ)Ê	!‰‡" [bufferp buffer buffer-name name popper-pop-buffers t popper-mem popper-no-pop-buffers popper-show-output display-buffer get-buffer-window minibuffer-scroll-window] 3 "\
Function to display BUFFER in a popper window if it is in
popper-pop-buffers or popper-pop-buffers is T and it is not in
popper-no-pop-buffers."])
(fset 'popper-bury-output #[(&optional no-error) "À ‰«ñpÃ Å	!Ç!ÉÊ\"Ç!Í!Ï	!ˆÐ!ˆÑ!ˆ««Ò@\\Ç Z!ˆ«…ÓÔÕ�ˆÖÉÃ Ê\"!ˆ×ÓA‰¬U\nqˆ=?­ƒÖ!.ª‡?­‚Ù )‡" [popper-output-buffer buffer old selected-window old-window get-buffer-window output window-height start next-window no parent height popper-window-heights heights bury-buffer delete-window popper-select enlarge-window nil (scroll-down start) ((error)) select-window 0 no-error popper-show-output] 5 "\
Bury the popper output signalling an error if not there unless
optional NO-ERROR is T." nil])
(fset 'popper-scroll-output #[(&optional n) "À ‰«’Â ÄŽÅÆ	!!ˆÇÈÉ�*ª‚Ê )‡" [popper-output-buffer buffer selected-window window ((select-window window)) select-window get-buffer-window nil (scroll-up n) ((error (byte-code "«‰§«‹ÁV«†ÂÃ e\"‡Äd!?­†ÅÆ!ˆªt‡" [n 0 set-window-start selected-window pos-visible-in-window-p scroll-up nil] 3))) popper-show-output] 4 "\
Scroll text of the popper window upward ARG lines ; or near full
screen if no ARG.  When calling from a program, supply a number as
argument or nil.  If the output window is not being displayed, it will
be brought up." "P"])
(fset 'popper-grow-output #[(&optional n) "À ‰«»pÂ ÅÆ	!!ˆÇ!ˆÉÊÂ Ë\"!ˆŠÌW«‡ÍÎÏ�ˆª‹Ð!ˆÑÂ `\"ˆ)Å!ˆq*ª‚Ò )‡" [popper-output-buffer buffer selected-window window old-buffer select-window get-buffer-window enlarge-window n popper-select next-window no 0 nil (scroll-up n) ((error)) move-to-window-line set-window-start popper-show-output] 5 "\
Grow the popper window by ARG (default 1) lines.  If the popper
window is not being shown, it will be brought up." "p"])
(fset 'popper-switch #[(buffer) "­ƒÁ!‡" [buffer popper-show] 2 "\
Switch the popper window to BUFFER." (byte-code "ÀÁÂ «„Aª�@Ä#C‡" [read-buffer "Popper buffer " popper-output-buffer popper-output-buffers t] 4)])
(defvar popper-split-window (symbol-function 'split-window) "\
Original definition of split-window.")
(fset 'split-window #[(&optional window size hor-flag) "À ‰Â =«¨ÃÄÅ !!­…\\È ˆ	\n#ÌÍ\"ˆ*ª‰	\n#)‡" [popper-parent parent selected-window window-height get-buffer-window popper-output-buffer pop-size size popper-bury-output popper-split-window window hor-flag popper-show-output nil] 5 "\
Split WINDOW, putting SIZE lines in the first of the pair.
WINDOW defaults to selected one and SIZE to half its size.
If optional third arg HOR-FLAG is non-nil, split side by side
and put SIZE columns in the first of the pair."])
(defvar popper-pop-to-buffer (symbol-function 'pop-to-buffer) "\
Original pop to buffer function.")
(fset 'pop-to-buffer #[(buffer &optional other-window) "À ‰«£Â!Ä =¬›Å ˆ\"ˆÈ	!ˆÉ ˆÊË!ˆ!ª†\")‡" [popper-parent parent get-buffer buffer popper-output-buffer popper-bury-output popper-pop-to-buffer other-window select-window popper-show-output sit-for 0] 4 "\
Select buffer BUFFER in some window, preferably a different one.
If pop-up-windows is non-nil, windows can be split to do this.
If second arg OTHER-WINDOW is non-nil, insist on finding another
window even if BUFFER is already visible in the selected window."])
(fset 'popper-other-window #[(arg) ":«’Á ‰­ƒÃ\n!‰­ƒÅ!*‡Æ=«ƒÇª„®�ÈÉ!ˆ\nË=«”ÌÍp!\"?­–Á p=­�É!‡ÌÍp!\n\"­ƒÉ!‡" [arg popper-output-buffer buffer get-buffer-window window select-window - -1 1 other-window popper-buffers-to-skip t popper-mem buffer-name popper-buffers-no-skip] 4 "\
Select the arg'th other window.  If arg is a C-u prefix, the popper
window will be selected.  Otherwise, windows that contain buffers in
popper-buffers-to-skip will be skipped or if popper-buffers-to-skip is
T those that are not in popper-buffers-no-skip." "P"])
(byte-code "À	ÂÃ#ˆÄÅ!ˆÆ ˆÇÈM‡" [define-key ctl-x-map "o" popper-other-window require advice ad-start-advice foobar-break #[(shown) "ÀÁ!ˆÂÃ!‡" [message "IN FOOBAR-BREAK" sleep-for 1] 2]] 4)
(fset 'popper-wrap '(macro . #[(function buffer) "ÀÁÂ!P!ÅÆÇÈEÉÊËÌÍÎÏDEEÑÎÒÓÔ\"«ƒÖª�×EEFFÑØÉÙÚÛÑÜÝEÞßFEÑàÍáâáEEEFEE)‡" [intern "popper-wrapper-" symbol-name function name progn defadvice around activate let ((shown nil)) save-window-excursion ad-do-it setq shown get-buffer-window buffer if funcall string-match "^18" emacs-version temp-buffer-show-hook temp-buffer-show-function (not (eq popper-pop-buffers t)) ((elt popper-pop-buffers)) while (consp elt) string= (car elt) (setq elt t) (setq elt (cdr elt)) (not elt) popper-pop-buffers cons] 14 "\
Define a wrapper on FUNCTION so that BUFFER will be a pop up window."]))
(byte-code "ÀÁÂÃÄ$ˆÅÁÄ\"ˆÇ=¬¨‰:«•@É˜«†Ç‰ªpA‰ªh¬†ÉB)ÀÊËÃÄ$ˆÅÊÄ\"ˆÇ=¬¨‰:«•@É˜«†Ç‰ªpA‰ªh¬†ÉB)ÌÍ\"«…ÏªƒÏÒÓ!ˆÔÕÄÇ#¬­Ö×Ù\"!¬ˆÚÙÛ #ˆÚÜÕ#ˆÚÝÞ#ˆÚßà#ˆÚáâ#ˆãä!‡" [ad-add-advice shell-command (popper-wrapper-shell-command nil t (advice lambda nil (let ((shown nil)) (save-window-excursion ad-do-it (setq shown (get-buffer-window "*Shell Command Output*"))) (if shown (funcall temp-buffer-show-function "*Shell Command Output*"))))) around nil ad-activate popper-pop-buffers t elt "*Shell Command Output*" shell-command-on-region (popper-wrapper-shell-command-on-region nil t (advice lambda nil (let ((shown nil)) (save-window-excursion ad-do-it (setq shown (get-buffer-window "*Shell Command Output*"))) (if shown (funcall temp-buffer-show-function "*Shell Command Output*"))))) string-match "^18" emacs-version popper-show temp-buffer-show-hook temp-buffer-show-function run-hooks popper-load-hook where-is-internal popper-bury-output keymapp lookup-key global-map "" define-key make-keymap "1" "v" popper-scroll-output "g" popper-grow-output "b" popper-switch provide popper] 6)
