;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\nAAg)@" [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\\qed\")Uӊqed{)!(	= (	 = ! !) =!	!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 dbx`dW`Td|eb!!!+p!=p!>!! sdbc`!!\")݊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EFE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)
