;ELC   
;;; Compiled by pot@pot.cnuce.cnr.it on Tue Mar 18 15:41:38 2003
;;; from file /home/pot/gnu/emacs-pretest.new/lisp/foldout.el
;;; in Emacs version 21.3
;;; with bytecomp version 2.85.4.1
;;; with all optimizations.

;;; This file uses dynamic docstrings, first added in Emacs 19.29.
(if (and (boundp 'emacs-version)
	 (< (aref emacs-version (1- (length emacs-version))) ?A)
	 (or (and (boundp 'epoch::version) epoch::version)
	     (string-lessp emacs-version "19.29")))
    (error "`foldout.el' was compiled for Emacs 19.29 or later"))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


(byte-code "\300\301!\210\302\303!\204 \304\305!\210\300\207" [require outline boundp outline-minor-mode error "Can't find outline-minor-mode"] 2)
#@124 List of start and end markers for the folds currently entered.
An end marker of NIL means the fold ends after (point-max).
(defconst foldout-fold-list nil (#$ . 765))
(make-variable-buffer-local 'foldout-fold-list)
#@60 Modeline string announcing that we are in an outline fold.
(defconst foldout-modeline-string nil (#$ . 986))
(byte-code "\306\307!\210\307\236\204\" \310\236>\311\211\204 \312\313!\210\n	\nA\244\241\210*\304B\314\315!\2030 \316\2021 \317\305B\314\315!?\205> \320\306\207" [minor-mode-alist foldout-entry outl-entry current-load-list foldout-hide-flag foldout-show-flag make-variable-buffer-local foldout-modeline-string outline-minor-mode ((foldout-modeline-string foldout-modeline-string)) error "Can't find outline-minor-mode in minor-mode-alist" featurep noutline t 13 10] 4)
#@342 Open the subtree under the current heading and narrow to it.

Normally the body and the immediate subheadings are exposed, but
optional arg EXPOSURE (interactively with prefix arg) changes this:-

	EXPOSURE > 0	exposes n levels of subheadings (c.f. show-children)
	EXPOSURE < 0	exposes only the body
	EXPOSURE = 0	exposes the entire subtree
(defalias 'foldout-zoom-subtree #[(&optional exposure) "\212~\210\306 \210\307!`\310 \311 \210\312\313w\210`m?\205# \314 \fT\313\223\n\f}\210\nb\210\2048 \315 \210\316 \210\202_ 	\317W\203D \315 \210\202_ :\203O \316 \210\202_ 	\317V\203\\ \316	!\210\202_ \320 \210BB\321 .\207" [exposure exposure-value start start-marker end end-marker outline-back-to-heading prefix-numeric-value point-marker outline-end-of-subtree "\n" nil make-marker show-entry show-children 0 show-subtree foldout-update-modeline foldout-fold-list] 3 (#$ . 1584) "P"])
#@183 Return to the ARG'th enclosing fold view.  With ARG = 0 exit all folds.

Normally causes exited folds to be hidden, but with ARG < 0, -ARG folds are
exited and text is left visible.
(defalias 'foldout-exit-fold #[(&optional num-folds) "\306\211\307\204 \310\311!\210\312\f!\203 G\202% \f\313W\203% \306\f[\fG^~\210\312\f!\204\233 @@@AA\fS	\203S 	b\210\314u\210h\315>\204S \316c\210\312\f!\203\212 `	\203n \314u\210h\317>\203j \314u\210`\202o d\203} \320\n#\210	\203\211 \320#\210*\n\306\211\223\210	\203, 	\306\211\223\210\202, \203\266 @@@A\n	\203\263 \321	!S\202\264 d}\210\322 \210\323 +\207" [hide-fold end-marker start-marker foldout-fold-list num-folds end-of-subtree nil t error "Not in a fold!" zerop 0 -1 (10 13) 10 (10 13) outline-flag-region marker-position recenter foldout-update-modeline beginning-of-heading foldout-hide-flag foldout-show-flag] 4 (#$ . 2491) "p"])
#@53 Set the modeline string to indicate our fold depth.
(defalias 'foldout-update-modeline #[nil "G\304	!\203 \305\202& \n\203 \306\307	\"\202& 	\310U\203\" \311\202& \306\312	\"\211)\207" [foldout-fold-list depth outline-minor-mode foldout-modeline-string zerop nil format ":%d" 1 " Inside 1 fold" " Inside %d folds"] 3 (#$ . 3413)])
#@203 Zoom in on the heading clicked on.

How much is exposed by the zoom depends on the number of mouse clicks:-

	1	expose body
	2	expose subheadings
	3	expose body and subheadings
	4	expose entire subtree
(defalias 'foldout-mouse-zoom #[(event) "\302!\303!\210\304\3058\250\203 \3058\202 \306)\211\306U\203% \307\202: 	\305U\203/ \310\202: 	\311U\2039 \312\202: \313)!\207" [event nclicks foldout-mouse-swallow-events foldout-mouse-goto-heading foldout-zoom-subtree 2 1 -1 (1) 3 nil 0] 4 (#$ . 3756) "@e"])
#@204 Show what is hidden under the heading clicked on.

What gets exposed depends on the number of mouse clicks:-

	1	expose body
	2	expose subheadings
	3	expose body and subheadings
	4	expose entire subtree
(defalias 'foldout-mouse-show #[(event) "\302!\303!\210\3048\250\203 \3048\202 \305)\211\305U\203% \306 \202@ 	\304U\2030 \307 \202@ 	\310U\203> \306 \210\307 \202@ \311 )\207" [event nclicks foldout-mouse-swallow-events foldout-mouse-goto-heading 2 1 show-entry show-children 3 show-subtree] 3 (#$ . 4277) "@e"])
#@227 Hide the subtree under the heading clicked on, or exit a fold.

What happens depends on the number of mouse clicks:-

	1	hide subtree
	2	exit fold and hide text
	3	exit fold without hiding text
	4	exit all folds and hide text
(defalias 'foldout-mouse-hide-or-exit #[(event) "\302!\211\3038\250\203 \3038\202 \304)\211\304U\203% \305!\210\306 \202< \307	\303U\2030 \304\202; 	\310U\203: \311\202; \312!)\207" [event nclicks foldout-mouse-swallow-events 2 1 foldout-mouse-goto-heading hide-subtree foldout-exit-fold 3 -1 0] 4 (#$ . 4811) "@e"])
#@145 Swallow intervening mouse events so we only get the final click-count.
Signal an error if the final event isn't the same type as the first one.
(defalias 'foldout-mouse-swallow-events #[(event) "\303!\304\305\n\306#\204 \307 \202 	\303!=\204 \310\311!\210)\207" [event initial-event-type double-click-time event-basic-type sit-for 0 nodisplay read-event error ""] 4 (#$ . 5370)])
#@107 Go to the heading where the mouse event started.  Signal an error
if the event didn't occur on a heading.
(defalias 'foldout-mouse-goto-heading #[(event) "\3028)\302	8:\203 \302	8@\202 \302	8)b\210\303 \206, \212\304 \210o)\206, \305\306!\207" [event position 1 outline-on-heading-p beginning-of-line error "Not a heading line"] 2 (#$ . 5765)])
#@61 Set non-NIL before loading foldout to inhibit key bindings.
(defvar foldout-inhibit-key-bindings nil (#$ . 6122))
#@212 List of modifier keys to apply to foldout's mouse events.

The default (meta control) makes foldout bind its functions to
M-C-down-mouse-{1,2,3}.

Valid modifiers are shift, control, meta, alt, hyper and super.
(defvar foldout-mouse-modifiers '(meta control) (#$ . 6243))
(byte-code "\204\201 \306	\307\310#\210\306	\311\312#\210\313\n\"\211\204\" \314 \306\n\f#\210\306\f\315\310#\210\306\f\316\312#\210)\317\320\321\322\"\"\323\324\325P!!\323\324\326P!!\323\324\327P!! \306	\330#\210\306	\331#\210\306	 \332#\210\306\n\330#\210\306\n\331#\210\306\n \332#\210,\333\334!\207" [foldout-inhibit-key-bindings outline-mode-map outline-minor-mode-map outline-minor-mode-prefix map foldout-mouse-modifiers define-key "" foldout-zoom-subtree "" foldout-exit-fold lookup-key make-sparse-keymap "" "" apply concat mapcar #[(modifier) "\301\302=\203 \303\202A \304=\203 \305\202A \306=\203 \307\202A \310=\203) \311\202A \312=\2033 \313\202A \314=\203= \315\202A \316\317\"\320\"\207" [modifier vector shift 83 control 67 meta 77 alt 65 hyper 72 super 115 error "invalid mouse modifier %s" 45] 4] vector intern "down-mouse-1" "down-mouse-2" "down-mouse-3" foldout-mouse-zoom foldout-mouse-show foldout-mouse-hide-or-exit provide foldout modifiers mouse-1 mouse-2 mouse-3] 6)
