;ELC   
;;; Compiled
;;; in Emacs version 29.4
;;; with all optimizations.



(require 'cl-lib)#@48 Execute BODY if in GNU Emacs.

(fn &rest BODY)
(defalias 'mh-do-in-gnu-emacs '(macro . #[128 "\300B\207" [progn] 3 (#$ . 101)]))
(byte-code "\300\301\302\303#\210\304\301\305\306#\210\307\301\310\311#\300\207" [make-obsolete mh-do-in-gnu-emacs progn "29.1" put edebug-form-spec t function-put lisp-indent-function defun] 4)#@45 Execute BODY if in XEmacs.

(fn &rest BODY)
(defalias 'mh-do-in-xemacs '(macro . #[128 "\300\207" [nil] 2 (#$ . 431)]))
(byte-code "\300\301\302\303#\210\304\301\305\306#\210\307\301\310\311#\300\207" [make-obsolete mh-do-in-xemacs ignore "29.1" put edebug-form-spec t function-put lisp-indent-function defun] 4)#@79 Call FUNCTION with ARGS as parameters if it exists.

(fn FUNCTION &rest ARGS)
(defalias 'mh-funcall-if-exists '(macro . #[385 "\300!\205 \301\300\302DD\303\302DBBE\207" [fboundp when quote funcall] 7 (#$ . 749)]))
(byte-code "\300\301\302\303#\210\304\301\305\306#\207" [make-obsolete mh-funcall-if-exists "use `(when (fboundp 'foo) (foo))' instead." "29.1" put edebug-form-spec (symbolp body)] 4)#@180 Create function NAME.
If FUNCTION exists, then NAME becomes an alias for FUNCTION.
Otherwise, create function NAME with ARG-LIST and BODY.

(fn NAME FUNCTION ARG-LIST &rest BODY)
(defalias 'defun-mh '(macro . #[899 "\300\301D\302\303\301DD\301D\304BBFE\207" [defalias quote if fboundp lambda] 12 (#$ . 1158)]))
(byte-code "\300\301\302\303#\210\304\301\305\302#\304\301\306\307#\310\301\311\312#\207" [make-obsolete defun-mh defun "29.1" function-put lisp-indent-function doc-string-elt 4 put edebug-form-spec (&define name symbolp sexp def-body)] 6)#@165 Create macro NAME.
If MACRO exists, then NAME becomes an alias for MACRO.
Otherwise, create macro NAME with ARG-LIST and BODY.

(fn NAME MACRO ARG-LIST &rest BODY)
(defalias 'defmacro-mh '(macro . #[899 "\300!\211\203 \301\302D\302DE\207\303BBB\207" [fboundp defalias quote defmacro] 9 (#$ . 1724)]))
(byte-code "\300\301\302\303#\210\304\301\305\306#\304\301\307\310#\311\301\312\313#\207" [make-obsolete defmacro-mh defmacro "29.1" function-put lisp-indent-function defun doc-string-elt 4 put edebug-form-spec (&define name symbolp sexp def-body)] 6)#@124 Make HOOK local if needed.
XEmacs and versions of GNU Emacs before 21.1 require
`make-local-hook' to be called.

(fn HOOK)
(defalias 'mh-make-local-hook '(macro . #[257 "\300\301!\205 \301\302N?\205 \301D\207" [fboundp make-local-hook byte-obsolete-info] 3 (#$ . 2292)]))
(make-obsolete 'mh-make-local-hook nil "29.1")#@139 If CHECK-TRANSIENT-MARK-MODE-FLAG is non-nil then check if
variable `transient-mark-mode' is active.

(fn CHECK-TRANSIENT-MARK-MODE-FLAG)
(defalias 'mh-mark-active-p '(macro . #[257 "\211\204 \300\207\301\207" [mark-active (and transient-mark-mode mark-active)] 2 (#$ . 2620)]))
(make-obsolete 'mh-mark-active-p nil "29.1")#@360 Format is (with-mh-folder-updating (SAVE-MODIFICATION-FLAG) &body BODY).
Execute BODY, which can modify the folder buffer without having to
worry about file locking or the read-only flag, and return its result.
If SAVE-MODIFICATION-FLAG is non-nil, the buffer's modification flag
is unchanged, otherwise it is cleared.

(fn SAVE-MODIFICATION-FLAG &rest BODY)
(defalias 'with-mh-folder-updating '(macro . #[385 "@\262\300\301\302\300\303B\304BBE?\205 \305BB\207" [prog1 let ((mh-folder-updating-mod-flag (buffer-modified-p)) (buffer-read-only nil) (buffer-file-name nil)) progn ((mh-set-folder-modified-p mh-folder-updating-mod-flag)) ((mh-set-folder-modified-p nil))] 8 (#$ . 2951)]))
(byte-code "\300\301\302\303#\210\304\301\305\306#\300\207" [put with-mh-folder-updating edebug-form-spec t function-put lisp-indent-function defun] 4)#@222 Format is (mh-in-show-buffer (SHOW-BUFFER) &body BODY).
Display buffer SHOW-BUFFER in other window and execute BODY in it.
Stronger than `save-excursion', weaker than `save-window-excursion'.

(fn SHOW-BUFFER &rest BODY)
(defalias 'mh-in-show-buffer '(macro . #[385 "@\262\300\301\302D\303\304\305B\306BB\257\207" [let ((mh-in-show-buffer-saved-window (selected-window))) switch-to-buffer-other-window (if mh-bury-show-buffer-flag (bury-buffer (current-buffer))) unwind-protect progn ((select-window mh-in-show-buffer-saved-window))] 9 (#$ . 3799)]))
(byte-code "\300\301\302\303#\210\304\301\305\306#\300\207" [put mh-in-show-buffer edebug-form-spec t function-put lisp-indent-function defun] 4)#@200 Switch to the location of EVENT and execute BODY.
After BODY has been executed return to original window.
The modification flag of the buffer in the event window is
preserved.

(fn EVENT &rest BODY)
(defalias 'mh-do-at-event-location '(macro . #[385 "\300\301!\300\302!\300\303!\300\304!\300\305!\306\307\310\311DDD\312\311\fDDD\313B\314\315\316DD\317BBD\320B\321BBBBB\322\314\323\nD\324\nD\fBBB\325D\324D\326	\327BB\323D\257ED\207" [make-symbol "event-window" "event-position" "original-window" "original-position" "modified-flag" save-excursion let* posn-window event-start posn-point ((selected-window)) progn set-buffer window-buffer ((point-marker)) ((buffer-modified-p)) ((buffer-read-only nil)) unwind-protect select-window goto-char set-buffer-modified-p set-marker (nil)] 17 (#$ . 4508)]))
(byte-code "\300\301\302\303#\210\304\301\305\306#\300\207" [put mh-do-at-event-location edebug-form-spec t function-put lisp-indent-function defun] 4)#@58 Extract messages from the given SEQUENCE.

(fn SEQUENCE)
(defalias 'mh-seq-msgs #[257 "\211A\207" [] 2 (#$ . 5490)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put mh-seq-msgs speed -1 put byte-optimizer byte-compile-inline-expand] 5)#@237 Iterate over region.

VAR is bound to the message on the current line as we loop
starting from BEGIN till END.  In each step BODY is executed.

If VAR is nil then the loop is executed without any binding.

(fn VAR BEGIN END &rest BODY)
(defalias 'mh-iterate-on-messages-in-region '(macro . #[899 "9\204\n \300\301\"\210\302\303D\304\305\306\307\310E\311BB\312\313\314\205& \315BC	BBE\316BBBF\207" [error "Can not bind the non-symbol %s" save-excursion goto-char (beginning-of-line) while and <= (point) ((not (eobp))) when (looking-at mh-scan-valid-regexp) let ((mh-get-msg-num t)) ((forward-line 1))] 14 (#$ . 5750)]))
(byte-code "\300\301\302\303#\210\304\301\305\306#\300\207" [put mh-iterate-on-messages-in-region edebug-form-spec (symbolp body) function-put lisp-indent-function defun] 4)#@448 Iterate an operation over a region or sequence.

VAR is bound to each message in turn in a loop over RANGE, which
can be a message number, a list of message numbers, a sequence, a
region in a cons cell, or a MH range (something like last:20) in
a string.  In each iteration, BODY is executed.

The parameter RANGE is usually created with
`mh-interactive-range' in order to provide a uniform interface to
MH-E functions.

(fn VAR RANGE &rest BODY)
(defalias 'mh-iterate-on-range '(macro . #[642 "9\204\n \300\301\"\210\302\303!\302\304!\305\306D\307\310\311BB\312	\205' 		DCBBED\313\314D\306\315	DD\306\316\nDDF\317\315	D\316\nD	BBBBD\320\312\305\313\321DE\322\fDD\323\fD\324\325ED\320DFD\326BD\327\330	D\331\332\330E\333BBE\317\334\335\336\307\332\334E\312\205\234 \337BCBBE\257FDF\207" [error "Can not bind the non-symbol %s" make-symbol "msgs" "seq-hash-table" cond numberp when mh-goto-msg (t t) let and consp car cdr mh-iterate-on-messages-in-region t symbolp mh-seq-to-msgs stringp mh-translate-range mh-current-folder ((make-hash-table)) dolist msg setf gethash (t) v (point-min) (point-max) (v)] 21 (#$ . 6560)]))
(byte-code "\300\301\302\303#\210\304\301\305\306#\300\207" [put mh-iterate-on-range edebug-form-spec (symbolp body) function-put lisp-indent-function defun] 4)#@69 Like `let*' but always dynamically scoped.

(fn BINDERS &rest BODY)
(defalias 'mh-dlet* '(macro . #[385 "\300\301\302\303\304\"BC\305\303\306\"\307BBC\"BBD\207" [progn with-suppressed-warnings lexical mapcar #[257 "\211:\203 \211@\207\207" [] 2 "\n\n(fn BINDER)"] append #[257 "\300:\203 @\202\f D\207" [defvar] 3 "\n\n(fn BINDER)"] let*] 10 (#$ . 7892)]))
(byte-code "\300\301\302\303#\210\304\301\305\306#\300\207" [put mh-dlet* edebug-form-spec let function-put lisp-indent-function 1] 4)#@266 Make temporary overriding function definitions.
That is, temporarily rebind the functions listed in BINDINGS and then
execute BODY.  BINDINGS is a list containing one or more lists of the
form (FUNCNAME ARGLIST BODY...), similar to defun.

(fn BINDINGS &rest BODY)
(defalias 'mh-flet '(macro . #[385 "\300\301!\203 \301\302\303\"BB\207\304BB\207" [fboundp cl-letf mapcar #[257 "\300\301@DD\302ABD\207" [symbol-function quote lambda] 4 "\n\n(fn BINDING)"] flet] 6 (#$ . 8403)]))
(byte-code "\300\301\302\303#\304\301\305\306#\210\307\310!\207" [function-put mh-flet lisp-indent-function 1 put edebug-form-spec ((&rest (sexp sexp &rest form)) &rest form) provide mh-acros] 5)
