;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\"LJȇ" [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 Al *" [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 "@!At\nA\nA@!\nAp\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) " ! \"! = ! Bi !)" [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 Ai 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`)33! 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!Տ \"! AU\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! EDEE\"֪EEFFEFEEEEFEE)" [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 "$\"=:@ɘljpAhB)$\"=:@ɘljpAhB)\"!#\"! #####!" [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)