;ELC   
;;; Compiled by jmorzins@kamp-krusty.mit.edu on Mon Oct  3 10:37:34 2005
;;; from file /afs/sipb/contrib/emacs/packages/mh-e-7.82/mh-speed.el
;;; in Emacs version 21.4.1
;;; 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 "`mh-speed.el' was compiled for Emacs 19.29 or later"))

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


(byte-code "\306\307!\210\306\310!\210\306\311!\210\306\312!\210\301B\313\301!\204 \314\302B\313\302!\204( \314\303B\313\303!\2047 \315\316\317\"\304B\313\304!\204F \315\316\317\"\305B\313\305!\204R \314\320B\313\320!\204_ \314\321B\313\321!\204l \322\323\324\325\"A\235\204\214 \326!\324\325\"\323\324\325\"AB\241\210\314\207" [current-load-list mh-speed-refresh-flag mh-speed-last-selected-folder mh-speed-folder-map mh-speed-flists-cache mh-speed-flists-process require cl mh-e speedbar timer boundp nil make-hash-table :test equal mh-speed-flists-timer mh-speed-partial-line "" mh-speed-stealth-update assoc "files" copy-tree speedbar-stealthy-function-list] 5)
#@126 Interface function to create MH-E speedbar buffer.
BUFFER is the MH-E buffer for which the speedbar buffer is to be created.
(defalias 'mh-folder-speedbar-buttons #[(buffer) "\304e\305\"?\205K \306 \210\307!\210\310\311\312\313\314\315\316\314\317\320&	\210\321y\210\322\314\"\206* \323 \324 T\314\223\325\314\n	#\210*\326\324 \324 T\327#\210\330\331!\210\205K \332\314!\207" [mh-speed-folder-map #1=#:--h--3207 #2=#:--store--3209 mh-speed-run-flists-flag get-text-property mh-level erase-buffer clrhash speedbar-make-tag-line bracket 43 mh-speed-toggle nil " " ignore mh-speedbar-folder-face 0 -1 gethash make-marker line-beginning-position cl-puthash add-text-properties (mh-folder nil mh-expanded nil mh-children-p t mh-level 0) mh-speed-stealth-update t mh-speed-flists] 10 (#$ . 1335)])
(byte-code "\300\301\302\"\210\300\303\302\"\207" [defalias mh-show-speedbar-buttons mh-folder-speedbar-buttons mh-letter-speedbar-buttons] 3)
#@47 Specialized speedbar keymap for MH-E buffers.
(defvar mh-folder-speedbar-key-map (speedbar-make-specialized-keymap) (#$ . 2282))
(byte-code "\304\301\305\"\210\302B\306\302!\204 	\303B\306\303!\204 	\304\207" [current-load-list mh-folder-speedbar-key-map mh-show-speedbar-key-map mh-letter-speedbar-key-map gnus-define-keys-1 ("+" mh-speed-expand-folder "-" mh-speed-contract-folder "" mh-speed-view "r" mh-speed-refresh) boundp] 3)
#@32 Extra menu items for speedbar.
(defvar mh-folder-speedbar-menu-items '("--" ["Visit Folder" mh-speed-view (save-excursion (set-buffer speedbar-buffer) (get-text-property (line-beginning-position) 'mh-folder))] ["Expand Nested Folders" mh-speed-expand-folder (and (get-text-property (line-beginning-position) 'mh-children-p) (not (get-text-property (line-beginning-position) 'mh-expanded)))] ["Contract Nested Folders" mh-speed-contract-folder (and (get-text-property (line-beginning-position) 'mh-children-p) (get-text-property (line-beginning-position) 'mh-expanded))] ["Refresh Speedbar" mh-speed-refresh t]) (#$ . 2730))
(byte-code "\302B\304\302!\204\f 	\303B\304\303!\204 	\302\207" [current-load-list mh-folder-speedbar-menu-items mh-show-speedbar-menu-items mh-letter-speedbar-menu-items boundp] 2)
#@70 Compatibility macro to handle speedbar versions 0.11a and 0.14beta4.
(defalias 'mh-speed-select-attached-frame '(macro . #[nil "\300\301!\203 \302\207\303\304!\203 \305\207\306\307!\207" [fboundp dframe-select-attached-frame (dframe-select-attached-frame speedbar-frame) boundp speedbar-attached-frame (select-frame speedbar-attached-frame) error "Installed speedbar version not supported by MH-E"] 2 (#$ . 3549)]))
#@475 Update speedbar highlighting of the current folder.
The function tries to be smart so that work done is minimized. The currently
highlighted folder is cached and no highlighting happens unless it changes.
Also highlighting is suspended while the speedbar frame is selected.
Otherwise you get the disconcerting behavior of folders popping open on their
own when you are trying to navigate around in the speedbar buffer.

The update is always carried out if FORCE is non-nil.
(defalias 'mh-speed-update-current-folder #[(force) "\306 \212\307	!\210\310\311 !\307!\210)p\312\204; \203& =\203; \n;\203m \n\313\314O\315\232\203m \n\232\204m \316\307!\210q\210\317\320\"\210\321\n!\203X \317\n\322\"\210\n\323 \210\324\325!`\"\210q\210\307!\210=\205x \312\211,\207" [lastf speedbar-attached-frame newcf lastb case-fold-search force selected-frame select-frame mh-speed-extract-folder-name buffer-name t 0 1 "+" nil mh-speed-highlight mh-speedbar-folder-face mh-speed-goto-folder mh-speedbar-selected-folder-face speedbar-position-cursor-on-line set-window-point frame-first-window mh-speed-refresh-flag speedbar-frame mh-speed-last-selected-folder speedbar-buffer] 3 (#$ . 3974)])
#@36 Return normal face for given FACE.
(defalias 'mh-speed-normal-face #[(face) "\301=\203 \302\207\303=\203 \304\207\207" [face mh-speedbar-folder-with-unseen-messages-face mh-speedbar-folder-face mh-speedbar-selected-folder-with-unseen-messages-face mh-speedbar-selected-folder-face] 2 (#$ . 5187)])
#@34 Return bold face for given FACE.
(defalias 'mh-speed-bold-face #[(face) "\301=\203 \302\207\303=\203 \304\207\207" [face mh-speedbar-folder-face mh-speedbar-folder-with-unseen-messages-face mh-speedbar-selected-folder-face mh-speedbar-selected-folder-with-unseen-messages-face] 2 (#$ . 5496)])
#@21 Set FOLDER to FACE.
(defalias 'mh-speed-highlight #[(folder face) "\212\304\305	\n`#b\210\306 \210\307\310\311 \304#\203 \312!\202! \313!\306 \210\307\314\311 \304#\2054 \315`\311 \303$*\207" [inhibit-read-only folder mh-speed-folder-map face t gethash beginning-of-line re-search-forward "([1-9][0-9]*/[0-9]+)" line-end-position mh-speed-bold-face mh-speed-normal-face "\\[.\\] " put-text-property] 5 (#$ . 5801)])
#@74 Do stealth update.
With non-nil FORCE, the update is always carried out.
(defalias 'mh-speed-stealth-update #[(&optional force) "\212q\210\302e\303\")\203 \304	!\210\305\207\306\207" [speedbar-buffer force get-text-property mh-level mh-speed-update-current-folder nil t] 3 (#$ . 6230)])
#@104 Move point to line containing FOLDER.
The function will expand out parent folders of FOLDER if needed.
(defalias 'mh-speed-goto-folder #[(folder) "\306\307\310\f\"\204+ 	\203+ \311\312\"\211\250\203 	T\306O\nB\313	O\202 \310\f\"\211\203: b\210\202P eb\210\314 \210\315`\316\"\204J \314 \210\310\f\"b\210)\n\203\200 \315\317 \320\"\232\203l \314 \210\315`\316\"\204l \314 \210\321\322\n\211A@#\310\f`#b\210\202Q \323 \210\315`\320\"\232+\207" [folder last-slash suffix-list prefix mh-speed-folder-map prefix-position nil t gethash mh-search-from-end 47 0 mh-speed-toggle get-text-property mh-expanded line-beginning-position mh-folder format "%s/%s" beginning-of-line] 6 (#$ . 6526)])
#@136 Given an MH-E BUFFER find the folder that should be highlighted.
Do the right thing for the different kinds of buffers that MH-E uses.
(defalias 'mh-speed-extract-folder-name #[(buffer) "\212q\210	\306=\203 \n\202D 	\307=\203 q\210\n\202D 	\310=\205D \311\f\"\205D \312\225\313O\314\315\"\211\205C \316\317\312O\"*)\207" [buffer major-mode mh-current-folder mh-show-folder-buffer mh-user-path buffer-file-name mh-folder-mode mh-show-mode mh-letter-mode string-match 0 nil mh-search-from-end 47 format "+%s" rel-path directory-end] 6 (#$ . 7240)])
#@70 Add speedbar button for FOLDER which is at indented by LEVEL amount.
(defalias 'mh-speed-add-buttons #[(folder level) "\302!\303\304	\")\207" [folder folder-list mh-sub-folders mapc #[(f) "\306\307\206 \310\203 \311\202 \312	@$\313\n\"\314\315\316	A\203& \317\202' \320\321\322\306\323	@\f\203; \306\324\f@\fA#\202< \312#\325\322\f\203N \f@\326V\203N \327\202O \330$&	\210\212\331y\210\n%&'\313\n&\"\206i \332 \333 T\322\223(\334%('#\210+\335\333 \333 T\336\n\337\322\340	A??\341\f\205\225 \342\f@\fABD\343$D\"BBBBBB#,\207" [folder f folder-name mh-speed-flists-cache counts inhibit-read-only format "%s%s%s" "+" "/" "" gethash t speedbar-make-tag-line bracket 43 32 mh-speed-toggle nil "%s%s" " (%s/%s)" mh-speed-view 0 mh-speedbar-folder-with-unseen-messages-face mh-speedbar-folder-face -1 make-marker line-beginning-position cl-puthash add-text-properties mh-folder mh-expanded mh-children-p append mh-count mh-level level #1=#:--x--3210 mh-speed-folder-map #2=#:--h--3211 #3=#:--store--3213] 13]] 3 (#$ . 7809)])
#@109 Toggle the display of child folders.
The otional ARGS are ignored and there for compatibilty with speedbar.
(defalias 'mh-speed-toggle #[(&rest args) "\306 \210\307`\310\"\307`\311\"\307`\312\"\307`\313\"`\314\315\f\204& \314\202\224 \203| \314y\210`\307`\313\"\203f \307`\313\"\nV\203f \307`\310\"\316\"\203_ \316\"\314\211\223\210\317\"\210)\314y\210\202/ `|\210\320y\210\321\322!\210\323\324 \324 T\325#\202\224 \314y\210\326\nT\"\210	b\210\321\327!\210\323\324 \324 T\330#.\207" [start-region point level expanded kids-p parent beginning-of-line get-text-property mh-folder mh-children-p mh-expanded mh-level nil t gethash remhash -1 speedbar-change-expand-button-char 43 add-text-properties line-beginning-position (mh-expanded nil) mh-speed-add-buttons 45 (mh-expanded t) inhibit-read-only folder mh-speed-folder-map] 6 (#$ . 8855) nil])
(byte-code "\300\301\302\"\210\300\303\302\"\207" [defalias mh-speed-expand-folder mh-speed-toggle mh-speed-contract-folder] 3)
#@57 View folder on current line.
Optional ARGS are ignored.
(defalias 'mh-speed-view #[(&rest args) "\306\307 \310\"\211;\205 \311\312\313\314\211	&;\2052 \315 \316\216\317\f!\210\320!\210\321\n\"\210\322 \210\323 **\207" [folder mh-interpret-number-as-range-flag range save-selected-window-window speedbar-update-speed speedbar-attached-frame get-text-property line-beginning-position mh-folder mh-read-range "Scan" t nil selected-window ((byte-code "\301!\203\n \302!\210\301\207" [save-selected-window-window window-live-p select-window] 2)) speedbar-set-timer select-frame mh-visit-folder delete-other-windows speedbar-maybee-jump-to-attached-frame] 8 (#$ . 9860) nil])
(byte-code "\301B\303\301!\204\f \304\302B\303\302!\204 \304\304\207" [current-load-list mh-speed-current-folder mh-speed-flists-folder boundp nil] 2)
#@131 PROCESS can be killed without query on Emacs exit.
Avoid using `process-kill-without-query' if possible since it is now
obsolete.
(defalias 'mh-process-kill-without-query '(macro . #[(process) "\301\302!\203\f \302\303BB\207\304D\207" [process fboundp set-process-query-on-exit-flag (nil) process-kill-without-query] 3 (#$ . 10706)]))
#@196 Execute flists -recurse and update message counts.
If FORCE is non-nil the timer is reset.

Any number of optional FOLDERS can be specified. If specified, flists is run
only for that one folder.
(defalias 'mh-speed-flists #[(force &rest folders) "\203) 	\203 \306	!\210\307\310\n!\203) \311\n!\312=\204) \313\n\314\"\210\315\n!\210\316\307\f	?\205= \317\307\2059 \320#\211\207" [force mh-speed-flists-timer mh-speed-flists-process mh-speed-partial-line folders mh-speed-flists-folder cancel-timer nil processp process-status exit set-process-filter t kill-process "" run-at-time #[nil "\306!\205\f \307!\310=??\205d 	\203 \311	!@\312\313O\202: \314\315\316!!\317\216r\nq\210\320\321\322\"\313\323\313\324%\210edS{+\325P\326\327\330\313\321\331\"	\203M \332\202N \333\334\335!	\206W \336&\313\337!\210\340\341\"\207" [mh-speed-flists-process mh-speed-flists-folder #1=#:temp-buffer mh-progs mh-speed-current-folder mh-unseen-seq processp process-status exit reverse 1 nil get-buffer-create generate-new-buffer-name " *temp*" ((byte-code "\301!\203\n \302!\210\301\207" [#1# buffer-name kill-buffer] 2)) call-process expand-file-name "folder" (t nil) "-fast" "+" apply start-process "*flists*" "flists" "-noall" "-all" "-sequence" symbol-name ("-recurse") process-kill-without-query set-process-filter mh-speed-parse-flists-output] 9] mh-speed-run-flists-flag mh-speed-flists-interval] 4 (#$ . 11050) (list t)])
#@127 Parse the incremental results from flists.
PROCESS is the flists process and OUTPUT is the results that must be handled
next.
(defalias 'mh-speed-parse-flists-output #[(process output) "\306 \307\310\211\211\211\211\"\311\216\312\313##\211\203\314\315$#\fO#\316$\317%\"\211&@&A@\320&8)\n\203	\203\203\321\n'\"\211(@	\232?\206a (A\232?)\203\322\n	B'#\210\212\323\324)!!\203)q\210\325*\326e\327\"\203\f\321\n+\"\310\211,\203,b\210\330 b\210\326`\331\"\204\315 \332 b\210\326`S\333\"\314\334	#c\210\335\336\"\210\330 b\210\337``T\331	BD#\210\202\326`\331\"	B\232\204\332 b\210\326`S\333\"\340\341\330 \325#\210`\332 |\210\314\334	#c\210\335\336\"\210\330 b\210\337``T\331	BD#\210*))\fT\202 )#\310O\211$.\207" [total unseen folder line line-end position match-data 0 nil ((set-match-data prevailing-match-data)) string-match "\n" format "%s%s" "" mh-parse-flist-output-line 2 gethash cl-puthash buffer-live-p get-buffer t get-text-property mh-level line-beginning-position mh-count line-end-position face " (%s/%s)" mh-speed-highlight unknown add-text-properties re-search-backward " " prevailing-match-data output mh-speed-partial-line mh-speed-current-folder #1=#:G3214 mh-speed-flists-cache old-pair speedbar-buffer inhibit-read-only mh-speed-folder-map pos] 8 (#$ . 12493)])
#@49 Remove FOLDER from various optimization caches.
(defalias 'mh-speed-invalidate-map #[(folder) "\212q\210\306\307\310\n\"\211\205 \n\311O\312\f\"\306\203\230 \313\f!\211\2041 \314\202V A\204V \203C \nT\306O\202G \n\315\306O\211@@)\232\203V \316)b\210\317\320 \321\"\f\232\203\230 \317\320 \322\"\203p \323 \210\203\214 \324 \325!\210\326\320 \320 T\327\314\232D#\210)\330!\331\"\210\306!\324\"\n\332\232\205\242 \333#!.\207" [speedbar-buffer speedbar-update-flag folder last-slash parent mh-speed-folder-map nil mh-search-from-end 47 0 gethash mh-sub-folders 43 1 32 get-text-property line-beginning-position mh-folder mh-expanded mh-speed-toggle t mh-speedbar-change-expand-button-char add-text-properties mh-children-p mh-speed-highlight mh-speedbar-folder-face "" clrhash parent-position parent-change parent-kids x inhibit-read-only mh-speed-last-selected-folder mh-speed-refresh-flag mh-sub-folders-cache] 7 (#$ . 13850) (list "")])
#@156 Refresh the speedbar.
Use this function to refresh the speedbar if folders have been added or
deleted or message ranges have been updated outside of MH-E.
(defalias 'mh-speed-refresh #[nil "\300\301!\210\302\303!\207" [mh-speed-flists t mh-speed-invalidate-map ""] 2 (#$ . 14835) nil])
#@101 Add FOLDER since it is being created.
The function invalidates the latest ancestor that is present.
(defalias 'mh-speed-add-folder #[(folder) "\212q\210\306\307\310	\"	\306\311\312\215\210\n\204 \306\n\206\" \313\306\"b\210\314\315\316!\210\317\320 \320 T\321#\210)\322\320 \323\"\203@ \324 \210\314\211-\207" [speedbar-buffer folder ancestor-pos ancestor last-slash speedbar-update-flag nil mh-search-from-end 47 --cl-block-while-loop-- (byte-code "\205! 	\304O\305	\n\"\211\203 \306\307\310\"\210\311\312	\"\211\204 \310\207" [last-slash ancestor mh-speed-folder-map ancestor-pos 0 gethash throw --cl-block-while-loop-- nil mh-search-from-end 47] 4) gethash t mh-speedbar-change-expand-button-char 43 add-text-properties line-beginning-position (mh-children-p t) get-text-property mh-expanded mh-speed-toggle mh-speed-folder-map inhibit-read-only mh-speed-refresh-flag] 4 (#$ . 15128)])
#@69 Change the expansion button character to CHAR for the current line.
(defalias 'mh-speedbar-change-expand-button-char #[(char) "\212\302 \210\303\304\305 \306#\205+ \306\307u\210\310\311!\210\312	\311\306#\210\313``S\314\315$\210\316`\317Z\320\"))\207" [inhibit-read-only char beginning-of-line re-search-forward "\\[.\\]" line-end-position t -2 delete-char 1 insert-char put-text-property invisible nil speedbar-insert-image-button-maybe 2 3] 5 (#$ . 16043)])
(provide 'mh-speed)
