summaryrefslogtreecommitdiff
path: root/lisp/mh-e.elc
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/mh-e.elc')
-rw-r--r--lisp/mh-e.elc1128
1 files changed, 1128 insertions, 0 deletions
diff --git a/lisp/mh-e.elc b/lisp/mh-e.elc
new file mode 100644
index 00000000000..bc1a244d6ed
--- /dev/null
+++ b/lisp/mh-e.elc
@@ -0,0 +1,1128 @@
+
+(defvar mh-e-RCS-id)
+
+(setq mh-e-RCS-id "$Header: mh-e.el,v 3.5 92/01/21 11:21:59 gildea Exp $")
+
+(setq mh-e-time-stamp "92/01/21 10:59:18 gildea")
+
+(provide (quote mh-e))
+
+(defvar mh-redist-full-contents nil "\
+Non-nil if the `dist' command needs whole letter for redistribution.
+This is the case when `send' is compiled with the BERK option.")
+
+(defvar mh-folder-mode-hook nil "\
+Invoked in `mh-folder mode' on a new folder.")
+
+(defvar mh-letter-mode-hook nil "\
+Invoked in `mh-letter-mode' on a new letter.")
+
+(defvar mh-compose-letter-function nil "\
+Invoked in `mh-compose-and-send-mail' on a draft letter.
+It is passed three arguments: TO recipients, SUBJECT, and CC recipients.")
+
+(defvar mh-before-send-letter-hook nil "\
+Invoked at the beginning of the \\[mh-send-letter] command.")
+
+(defvar mh-inc-folder-hook nil "\
+Invoked after incorporating mail into a folder with \\[mh-inc-folder].")
+
+(defvar mh-before-quit-hook nil "\
+Invoked by \\[mh-quit] before quitting mh-e. See also mh-quit-hook")
+
+(defvar mh-quit-hook nil "\
+Invoked after quitting mh-e by \\[mh-quit]. See also mh-before-quit-hook")
+
+(defvar mh-ins-string nil "\
+Temporarily set by `mh-insert-prefix' prior to running `mh-yank-hooks'.")
+
+(defvar mh-yank-hooks (quote (lambda nil (save-excursion (goto-char (point)) (or (bolp) (forward-line 1)) (while (< (point) (mark)) (insert mh-ins-string) (forward-line 1))))) "\
+Hook to run citation function.
+Expects POINT and MARK to be set to the region to cite.")
+
+(defvar mh-clean-message-header nil "\
+*Non-nil means clean headers of messages that are displayed or inserted.
+The variables `mh-visible-headers' and `mh-invisible-headers' control what
+is removed.")
+
+(defvar mh-visible-headers nil "\
+*If non-nil, contains a regexp specifying the headers to keep when cleaning.
+Only used if `mh-clean-message-header' is non-nil. Setting this variable
+overrides `mh-invisible-headers'.")
+
+(defvar mhl-formfile nil "\
+*Name of format file to be used by mhl to show messages.
+A value of T means use the default format file.
+Nil means don't use mhl to format messages.")
+
+(defvar mh-lpr-command-format "lpr -p -J '%s'" "\
+*Format for Unix command that prints a message.
+The string should be a Unix command line, with the string '%s' where
+the job's name (folder and message number) should appear. The message text
+is piped to this command.")
+
+(defvar mh-print-background nil "\
+*Print messages in the background if non-nil.
+WARNING: do not delete the messages until printing is finished;
+otherwise, your output may be truncated.")
+
+(defvar mh-summary-height 4 "\
+*Number of lines in summary window (including the mode line).")
+
+(defvar mh-recenter-summary-p nil "\
+*Recenter summary window when the show window is toggled off if non-nil.")
+
+(defvar mh-ins-buf-prefix "> " "\
+*String to put before each non-blank line of a yanked or inserted message.
+Used when the message is inserted in an outgoing letter.")
+
+(defvar mh-do-not-confirm nil "\
+*Non-nil means do not prompt for confirmation before some commands.
+Only affects certain innocuous commands.")
+
+(defvar mh-bury-show-buffer t "\
+*Non-nil means that the displayed show buffer for a folder is buried.")
+
+(defvar mh-delete-yanked-msg-window nil "\
+*Controls window display when a message is yanked by \\[mh-yank-cur-msg].
+If non-nil, yanking the current message into a draft letter deletes any
+windows displaying the message.")
+
+(defvar mh-yank-from-start-of-msg t "\
+*Controls which part of a message is yanked by \\[mh-yank-cur-msg].
+If non-nil, include the entire message. If the symbol `body', then yank the
+message minus the header. If nil, yank only the portion of the message
+following the point. If the show buffer has a region, this variable is
+ignored.")
+
+(defvar mh-reply-default-reply-to nil "\
+*Sets the person or persons to whom a reply will be sent.
+If nil, prompt for recipient. If non-nil, then \\[mh-reply] will use this
+value and it should be one of \"from\", \"to\", or \"cc\".")
+
+(defvar mh-recursive-folders nil "\
+*If non-nil, then commands which operate on folders do so recursively.")
+
+(defvar mh-unshar-default-directory "" "\
+*Default for directory name prompted for by mh-unshar-msg.")
+
+(defvar mh-cmd-note 4 "\
+Offset to insert notation.")
+
+(defvar mh-note-repl "-" "\
+String whose first character is used to notate replied to messages.")
+
+(defvar mh-note-forw "F" "\
+String whose first character is used to notate forwarded messages.")
+
+(defvar mh-note-dist "R" "\
+String whose first character is used to notate redistributed messages.")
+
+(defvar mh-good-msg-regexp "^....[^D^]" "\
+Regexp specifiying the scan lines that are 'good' messages.")
+
+(defvar mh-deleted-msg-regexp "^....D" "\
+Regexp matching scan lines of deleted messages.")
+
+(defvar mh-refiled-msg-regexp "^....\\^" "\
+Regexp matching scan lines of refiled messages.")
+
+(defvar mh-valid-scan-line "^ *[0-9]" "\
+Regexp matching scan lines for messages (not error messages).")
+
+(defvar mh-msg-number-regexp "^ *\\([0-9]+\\)" "\
+Regexp to find the number of a message in a scan line.
+The message's number must be surrounded with \\( \\)")
+
+(defvar mh-msg-search-regexp "^[^0-9]*%d[^0-9]" "\
+Format string containing a regexp matching the scan listing for a message.
+The desired message's number will be an argument to format.")
+
+(defvar mh-flagged-scan-msg-regexp "^....\\D\\|^....\\^\\|^....\\+\\|^.....%" "\
+Regexp matching flagged scan lines.
+Matches lines marked as deleted, refiled, in a sequence, or the cur message.")
+
+(defvar mh-cur-scan-msg-regexp "^....\\+" "\
+Regexp matching scan line for the cur message.")
+
+(defvar mh-show-buffer-mode-line-buffer-id "{%%b} %s/%d" "\
+Format string to produce `mode-line-buffer-id' for show buffers.
+First argument is folder name. Second is message number.")
+
+(defvar mh-partial-folder-mode-line-annotation "select" "\
+Annotation when displaying part of a folder.
+The string is displayed after the folder's name. NIL for no annotation.")
+
+(defvar mh-invisible-headers "^Received: \\|^Message-Id: \\|^Remailed-\\|^Via: \\|^Mail-from: \\|^Return-Path: \\|^In-Reply-To: \\|^Resent-" "\
+Regexp matching lines in a message header that are not to be shown.
+If `mh-visible-headers' is non-nil, it is used instead to specify what
+to keep.")
+
+(defvar mh-rejected-letter-start (concat "^ ----- Unsent message follows -----$" "\\|^------- Unsent Draft$" "\\|^ --- The unsent message follows ---$") "\
+Regexp specifying the beginning of the wrapper around a returned letter.
+This wrapper is generated by the mail system when rejecting a letter.")
+
+(defvar mh-to-field-choices (quote ((116 . "To:") (115 . "Subject:") (99 . "Cc:") (98 . "Bcc:") (102 . "Fcc:"))) "\
+A-list of (character . field name) strings for mh-to-field.")
+
+(defvar mh-user-path "" "\
+User's mail folder.")
+
+(defvar mh-last-destination nil "\
+Destination of last refile or write command.")
+
+(defvar mh-folder-mode-map (make-keymap) "\
+Keymap for MH folders.")
+
+(defvar mh-letter-mode-map (copy-keymap text-mode-map) "\
+Keymap for composing mail.")
+
+(defvar mh-pick-mode-map (make-sparse-keymap) "\
+Keymap for searching folder.")
+
+(defvar mh-letter-mode-syntax-table nil "\
+Syntax table used while in mh-e letter mode.")
+
+(if mh-letter-mode-syntax-table nil (setq mh-letter-mode-syntax-table (make-syntax-table text-mode-syntax-table)) (set-syntax-table mh-letter-mode-syntax-table) (modify-syntax-entry 37 "." mh-letter-mode-syntax-table))
+
+(defvar mh-folder-list nil "\
+List of folder names for completion.")
+
+(defvar mh-draft-folder nil "\
+Name of folder containing draft messages.
+NIL means do not use draft folder.")
+
+(defvar mh-unseen-seq nil "\
+Name of the unseen sequence.")
+
+(defvar mh-previous-window-config nil "\
+Window configuration before mh-e command.")
+
+(defvar mh-previous-seq nil "\
+Name of the sequence to which a message was last added.")
+
+(defmacro mh-push (v l) (byte-code " EE" [l v setq cons] 5))
+
+(defmacro mh-when (pred &rest body) (byte-code " BD" [pred body cond] 3))
+
+(defmacro with-mh-folder-updating (save-modification-flag-p &rest body) (byte-code "@ \"
+
+(defun mh-mapc (func list) (byte-code "
+
+(defun mh-rmail (&optional arg) "\
+Inc(orporate) new mail (no arg) or scan a MH mail box (arg given).
+This front end uses the MH mail system, which uses different conventions
+from the usual mail system." (interactive "P") (byte-code " 
+
+(defun mh-smail nil "\
+Compose and send mail with the MH mail system." (interactive) (byte-code " !" [nil mh-find-path call-interactively mh-send] 3))
+
+(defun mh-smail-other-window nil "\
+Compose and send mail in other window with the MH mail system." (interactive) (byte-code " !" [nil mh-find-path call-interactively mh-send-other-window] 3))
+
+(defun mh-burst-digest nil "\
+Burst apart the current message, which should be a digest.
+The message is replaced by its table of contents and the letters from the
+digest are inserted into the folder after that message." (interactive) (byte-code "Ĉ!
+!!!
+$
+ \"\"!)" [digest t mh-current-folder mh-first-msg-num nil mh-get-msg-num mh-process-or-undo-commands mh-set-folder-modified-p message "Bursting digest..." mh-exec-cmd "burst" "-inplace" mh-scan-folder format "%d-last" "Bursting digest...done"] 10))
+
+(defun mh-copy-msg (prefix-provided msg-or-seq dest) "\
+Copy specified MESSAGE(s) to another FOLDER without deleting them.
+Default is the displayed message. If optional prefix argument is
+provided, then prompt for the message sequence." (interactive (byte-code "
+ & 
+#
+#" [current-prefix-arg t msg-or-seq mh-current-folder dest prefix-provided mh-cmd-note nil mh-exec-cmd "refile" "-link" "-src" mh-notate-seq 67 mh-notate] 7))
+
+(defun mh-delete-msg (msg-or-seq) "\
+Mark the specified MESSAGE(s) for subsequent deletion and move to the next.
+Default is the displayed message. If optional prefix argument is
+given then prompt for the message sequence." (interactive (byte-code "
+!
+!
+\" " [current-prefix-arg t msg-or-seq nil numberp mh-delete-a-msg mh-map-to-seq-msgs mh-next-msg] 5))
+
+(defun mh-delete-msg-no-motion (msg-or-seq) "\
+Mark the specified MESSAGE(s) for subsequent deletion.
+Default is the displayed message. If optional prefix argument is
+provided, then prompt for the message sequence." (interactive (byte-code "
+!
+!
+\"" [current-prefix-arg t msg-or-seq nil numberp mh-delete-a-msg mh-map-to-seq-msgs] 5))
+
+(defun mh-delete-msg-from-seq (prefix-provided msg-or-seq &optional from-seq) "\
+Delete MESSAGE (default: displayed message) from SEQUENCE.
+If optional prefix argument provided, then delete all messages
+from a sequence." (interactive (byte-code " 
+
+(defun mh-edit-again (msg) "\
+Clean-up a draft or a message previously sent and make it resendable." (interactive (byte-code "!C" [t mh-get-msg-num] 2)) (byte-code "Lj
+  
++" [t from-folder mh-current-folder config draft mh-draft-folder msg nil current-window-configuration equal pop-to-buffer find-file-noselect mh-msg-filename rename-buffer format "draft-%d" buffer-name mh-read-draft "clean-up" mh-clean-msg-header "^Date:\\|^Received:\\|^Message-Id:\\|^From:\\|^Delivery-Date:" set-buffer-modified-p mh-compose-and-send-mail ""] 23))
+
+(defun mh-execute-commands nil "\
+Process outstanding delete and refile requests." (interactive) (byte-code "È
+
+(defun mh-extract-rejected-mail (msg) "\
+Extract a letter returned by the mail system and make it resendable.
+Default is the displayed message." (interactive (byte-code "!C" [t mh-get-msg-num] 2)) (byte-code "ƈ
+ !#eb#,
++" [t from-folder mh-current-folder config draft msg nil mh-rejected-letter-start current-window-configuration mh-read-draft "extraction" mh-msg-filename re-search-forward forward-char 1 delete-region mh-clean-msg-header "^Date:\\|^Received:\\|^Message-Id:\\|^From:\\|^Sender:\\|^Return-Path:" message "Does not appear to be a rejected letter." set-buffer-modified-p mh-compose-and-send-mail "" mh-get-field "To" "From" "cc"] 23))
+
+(defun mh-first-msg nil "\
+Move to the first message." (interactive) (byte-code "eb" [nil] 1))
+
+(defun mh-forward (prefix-provided msg-or-seq to cc) "\
+Forward MESSAGE(s) (default: displayed message).
+If optional prefix argument provided, then prompt for the message sequence." (interactive (byte-code "
+$!<
+  
+ &
++," [current-prefix-arg t folder mh-current-folder config draft-name mh-user-path draft msg-or-seq to cc nil subject trim forw-subject prefix-provided mh-note-forw current-window-configuration expand-file-name "draft" file-exists-p y-or-n-p "The file 'draft' exists. Discard it? " mh-exec-cmd "forw" "-build" mh-read-draft "" mh-insert-fields "To:" "Cc:" set-buffer-modified-p re-search-forward "^------- Forwarded Message" forward-line -1 narrow-to-region mh-get-field "From:" string-match "<" "Subject:" 0 widen format "[%s: %s]" delete-other-windows mh-add-msgs-to-seq mh-seq-to-msgs forwarded mh-compose-and-send-mail "Forwarded:"] 33))
+
+(defun mh-goto-msg (number &optional no-error-if-no-message dont-show) "\
+Position the cursor at message NUMBER.
+Non-nil second argument means do not signal an error if message does not exist.
+Non-nil third argument means not to show the message.
+Return non-nil if cursor is at message." (interactive "NGoto message: ") (byte-code "!` !
+b?o
+
+(defun mh-inc-folder (&optional maildrop-name) "\
+Inc(orporate) new mail into +inbox.
+Optional prefix argument specifies an alternate maildrop from the default.
+If this is given, incorporate mail into the current folder, rather
+than +inbox. Run `mh-inc-folder-hook' after incorporating new mail." (interactive (byte-code "
+
++
+) !!" [current-prefix-arg mh-user-path config maildrop-name mh-previous-window-config nil current-window-configuration get-buffer "+inbox" mh-make-folder switch-to-buffer mh-get-new-mail run-hooks mh-inc-folder-hook] 8))
+
+(defun mh-kill-folder nil "\
+Remove the current folder." (interactive) (byte-code "Ĉ
+\"
+!
+\"! !0
+!);
+
+(defun mh-last-msg nil "\
+Move to the last message." (interactive) (byte-code "dbo?
+
+(defun mh-list-folders nil "\
+List mail folders." (interactive) (byte-code "ˆÐ! ! 
+
+(defun mh-msg-is-in-seq (msg) "\
+Display the sequences that contain MESSAGE (default: displayed message)." (interactive (byte-code "!C" [t mh-get-msg-num] 2)) (byte-code "ˆ !!##" [t msg nil message "Message %d is in sequences: %s" mapconcat concat mh-list-to-string mh-seq-containing-msg " "] 9))
+
+(defun mh-narrow-to-seq (seq) "\
+Restrict display of this folder to just messages in a sequence.
+Reads which sequence. Use \\[mh-widen] to undo this command." (interactive (byte-code "\"C" [t mh-read-seq "Narrow to"] 3)) (byte-code "Ĉd !0
+!))" [t eob folder-updating-mod-flag buffer-read-only nil buffer-file-name seq mh-narrowed-to-seq buffer-modified-p mh-seq-to-msgs mh-copy-seq-to-point narrow-to-region mh-make-folder-mode-line symbol-name mh-recenter error "No messages in sequence `%s'" mh-set-folder-modified-p] 12))
+
+(defun mh-next-undeleted-msg (&optional arg) "\
+Move to next undeleted message in window." (interactive "P") (byte-code "È!!ȉ
+$
+
+(defun mh-pack-folder (range) "\
+Renumber the messages of a folder to be 1..n.
+First, offer to execute any outstanding commands for the current folder.
+If optional prefix argument provided, prompt for the range of messages
+to display after packing. Otherwise, show the entire folder." (interactive (byte-code "
+
+
+(defun mh-pipe-msg (prefix-provided command) "\
+Pipe the current message through the given shell COMMAND.
+If optional prefix argument is provided, send the entire message.
+Otherwise just send the message's body." (interactive (byte-code "!D" [current-prefix-arg read-string "Shell command on message: "] 3)) (byte-code "ň!
+\"eb ?
+
+" shell-command-on-region] 8))
+
+(defun mh-refile-msg (prefix-provided msg-or-seq dest) "\
+Refile MESSAGE(s) (default: displayed message) in FOLDER.
+If optional prefix argument provided, then prompt for message sequence." (interactive (byte-code "
+@=
+A!!
+
+(defun mh-refile-or-write-again (msg) "\
+Re-execute the last refile or write command on the given MESSAGE.
+Default is the displayed message. Use the same folder or file as the
+previous refile or write command." (interactive (byte-code "!C" [t mh-get-msg-num] 2)) (byte-code "È ?
+
+ A\" A\"+
+ A\" A\" " [t mh-last-destination msg nil error "No previous refile or write" refile mh-refile-a-msg message "Destination folder: %s" mh-write-msg-to-file "Destination: %s" mh-next-msg] 7))
+
+(defun mh-reply (prefix-provided msg) "\
+Reply to a MESSAGE (default: displayed message).
+If optional prefix argument provided, then include the message in the reply
+using filter mhl.reply in your MH directory." (interactive (byte-code "!D" [current-prefix-arg t mh-get-msg-num] 3)) (byte-code "ň 
+! \"*
+
+
+&
++),)" [current-prefix-arg t minibuffer-help-form reply-to mh-reply-default-reply-to nil folder mh-current-folder show-buffer mh-show-buffer config msg prefix-provided draft mh-user-path to subject cc mh-note-repl "from => Sender only
+to => Sender and primary recipients
+cc or all => Sender and all recipients" completing-read "Reply to whom: " (("from") ("to") ("cc") ("all")) current-window-configuration message "Composing a reply..." equal "from" "" apply mh-exec-cmd "repl" "-build" "-noquery" "-nodraftfolder" "-nocc" "all" "-filter" "mhl.reply" "to" "-cc" "cc" "me" mh-read-draft "reply" expand-file-name delete-other-windows set-buffer-modified-p mh-get-field "To:" "Subject:" "Cc:" mh-goto-header-end 1 mh-display-msg mh-add-msgs-to-seq answered "Composing a reply...done" mh-compose-and-send-mail "Replied:"] 33))
+
+(defun mh-quit nil "\
+Quit mh-e.
+Start by running mh-before-quit-hook. Restore the previous window
+configuration, if one exists. Finish by running mh-quit-hook." (interactive) (byte-code "!
+
+(defun mh-page-digest nil "\
+Advance displayed message to next digested message." (interactive) (byte-code " !#
+
+" "From:" other-window -1 error "No more messages" search-backward forward-line 2 mh-recenter] 11))
+
+(defun mh-page-digest-backwards nil "\
+Back up displayed message to previous digested message." (interactive) (byte-code " ! #
+
+" "From:" other-window -1 error "No more messages" forward-line 2 mh-recenter] 12))
+
+(defun mh-page-msg (&optional arg) "\
+Page the displayed message forwards.
+Scrolls ARG lines or a full screen if no argument is supplied." (interactive "P") (byte-code "!" [arg nil scroll-other-window] 2))
+
+(defun mh-previous-page (&optional arg) "\
+Page the displayed message backwards.
+Scrolls ARG lines or a full screen if no argument is supplied." (interactive "P") (byte-code " Î!))" [arg nil mh-show-message-in-other-window ((byte-code "!" [other-window -1] 2)) scroll-down] 3))
+
+(defun mh-previous-undeleted-msg (&optional arg) "\
+Move to previous undeleted message in window." (interactive "p") (byte-code "ˆƉ $
+
+(defun mh-print-msg (prefix-provided msg-or-seq) "\
+Print MESSAGE(s) (default: displayed message) on a line printer.
+If optional prefix argument provided, then prompt for the message sequence." (interactive (byte-code "
+
+L
+@
+s
+ #
+ &
+
+
+
+(defun mh-put-msg-in-seq (prefix-provided from to) "\
+Add MESSAGE(s) (default: displayed message) to SEQUENCE.
+If optional prefix argument provided, then prompt for the message sequence." (interactive (byte-code "
+
+(defun mh-rescan-folder (&optional range) "\
+Rescan a folder after optionally processing the outstanding commands.
+If optional prefix argument is provided, prompt for the range of
+messages to display. Otherwise show the entire folder." (interactive (byte-code "
+
+
+(defun mh-redistribute (to cc msg) "\
+Redistribute a letter.
+Depending on how your copy of MH was compiled, you may need to change the
+setting of the variable mh-redist-full-contents. See its documentation." (interactive (byte-code "!!!E" [t read-string "Redist-To: " "Redist-Cc: " mh-get-msg-num] 6)) (byte-code "ƈˋ" [t folder mh-current-folder draft mh-redist-full-contents msg nil to cc mh-progs mh-note-dist ((byte-code "
+!!*" [folder mh-current-folder draft mh-redist-full-contents msg nil to cc mh-progs mh-note-dist mh-read-draft "redistribution" mh-msg-filename mh-goto-header-end 0 insert "Resent-To: " "
+" equal "" "Resent-cc: " mh-clean-msg-header "^Message-Id:\\|^Received:\\|^Return-Path:\\|^Sender:\\|^Date:\\|^From:" save-buffer message "Redistributing..." call-process "/bin/sh" "-c" format "mhdist=1 mhaltmsg=%s %s -push %s" buffer-file-name expand-file-name "send" "mhdist=1 mhaltmsg=%s mhannotate=1 %s -push %s" mh-annotate-msg "-component" "Resent:" "-text" "\"%s %s\"" kill-buffer "Redistributing...done"] 30))] 1))
+
+(defun mh-write-msg-to-file (msg file) "\
+Append MESSAGE to the end of a FILE." (interactive (byte-code "!
+@=
+A!
+
+(defun mh-search-folder (folder) "\
+Search FOLDER for messages matching a pattern." (interactive (byte-code "#C" [mh-current-folder t mh-prompt-for-folder "Search"] 4)) (byte-code "Ĉ! !
+
+(defun mh-send (to cc subject) "\
+Compose and send a letter.
+The letter is composed in mh-letter-mode; see its documentation for more
+details. If `mh-compose-letter-function' is defined, it is called on the
+draft and passed three arguments: to, subject, and cc." (interactive "sTo:
+sCc:
+sSubject: ") (byte-code "Ĉ 
+ $)" [config to cc subject nil current-window-configuration delete-other-windows mh-send-sub] 7))
+
+(defun mh-send-other-window (to cc subject) "\
+Compose and send a letter in another window.." (interactive "sTo:
+sCc:
+sSubject: ") (byte-code "ň
+ $)" [pop-up-windows t to cc subject nil mh-send-sub current-window-configuration] 6))
+
+(defun mh-send-sub (to cc subject config) "\
+Do the real work of composing and sending a letter.
+Expects the TO, CC, and SUBJECT fields as arguments.
+CONFIG is the window configuration before sending mail." (byte-code " !! \"!
+ 
+&
+)*" [folder mh-current-folder msg-num nil draft mh-user-path mh-lib to subject cc config mh-get-msg-num message "Composing a message..." mh-read-draft "message" file-exists-p expand-file-name "components" error "Can't find components file" mh-insert-fields "To:" "Subject:" "Cc:" set-buffer-modified-p "Composing a message...done" mh-compose-and-send-mail ""] 24))
+
+(defun mh-show (&optional msg) "\
+Show MESSAGE (default: displayed message).
+Forces a two-window display with the folder window on top (size
+mh-summary-height) and the show buffer below it." (interactive) (byte-code "ƈ?
+
+(defun mh-sort-folder nil "\
+Sort the messages in the current folder by date." (interactive) (byte-code "È!ʼn!!\"!\"" [mh-current-folder mh-next-direction t nil mh-process-or-undo-commands forward mh-set-folder-modified-p message "Sorting folder..." mh-exec-cmd "sortm" "Sorting folder...done" mh-scan-folder "all"] 8))
+
+(defun mh-toggle-showing nil "\
+Toggle the scanning mode/showing mode of displaying messages." (interactive) (byte-code "
+
+(defun mh-undo (prefix-provided msg-or-seq) "\
+Undo the deletion or refile of the specified MESSAGE(s).
+Default is the displayed message. If optional prefix argument is
+provided, then prompt for the message sequence." (interactive (byte-code "
+
+
+(defun mh-undo-msg (msg) (byte-code " >
+
+(defun mh-undo-folder (&rest ignore) "\
+Undo all commands in current folder." (interactive) (byte-code "ˆ
+
+(defun mh-unshar-msg (dir) "\
+Unpack the shar file contained in the current message into directory DIR." (interactive (byte-code "$C" [mh-unshar-default-directory nil read-file-name "Unshar message in directory: "] 5)) (byte-code "! \" !" [mh-unshar-default-directory nil t mh-current-folder dir mh-display-msg mh-get-msg-num mh-unshar-buffer] 4))
+
+(defun mh-unshar-buffer (dir) (byte-code "eb#&
+!Q
+%) !\" d &+w
+" "mkdir " call-process "mkdir" set-window-start display-buffer 0 call-process-region "sh" error "Cannot find start of shar."] 23))
+
+(defun mh-visit-folder (folder &optional range) "\
+Visit FOLDER and display RANGE of messages.
+Assumes mh-e has already been initialized." (interactive (byte-code "#!D" [t mh-prompt-for-folder "Visit" "+inbox" mh-read-msg-range "Range [all]? "] 4)) (byte-code "ň 
+
+
+(defun mh-widen nil "\
+Remove restrictions from the current folder, thereby showing all messages." (interactive) (byte-code "È
+
+(defun mh-delete-a-msg (msg) (byte-code "# !
+
+(defun mh-refile-a-msg (msg destination) (byte-code "# !
+
+(defun mh-display-msg (msg-num folder) (byte-code "q
+ 
+!     !?(
+\" !6
+#C." [folder formfile mhl-formfile clean-message-header mh-clean-message-header invisible-headers mh-invisible-headers visible-headers mh-visible-headers msg-filename msg-num show-buffer mh-show-buffer mh-current-folder mh-bury-show-buffer buffer-file-name nil t case-fold-search mode-line-buffer-identification mh-show-buffer-mode-line-buffer-id mh-msg-filename file-exists-p error "Message %d does not exist" switch-to-buffer bury-buffer equal clear-visited-file-modtime unlock-buffer erase-buffer mh-exec-lib-cmd-output "mhl" "-nobell" "-noclear" "-form" insert-file-contents mh-clean-msg-header re-search-forward "^To:\\|^From:\\|^Subject:\\|^Date:" beginning-of-line mh-recenter 0 set-buffer-modified-p set-mark format] 22))
+
+(defun mh-invalidate-show-buffer nil (byte-code "!
+
+(defun mh-show-message-in-other-window nil (byte-code "!
+
+(defun mh-clean-msg-header (start invisible-headers visible-headers) (byte-code "
+b#
+`\"eb \\
+
+" backward-char 1 narrow-to-region beginning-of-line looking-at forward-line "^[ ]+" mh-delete-line re-search-forward unlock-buffer] 21))
+
+(defun mh-delete-line (lines) (byte-code "`!`)\"" [lines delete-region forward-line] 4))
+
+(defun mh-read-draft (use initial-contents delete-contents-file) (byte-code "
+ !\" \"! )]
+
+
+(defun mh-new-draft-name nil (byte-code "!q $` S\")" [nil mh-draft-folder get-buffer-create " *mh-temp*" erase-buffer mh-exec-cmd-output "mhpath" "new" buffer-substring mark] 7))
+
+(defun mh-next-msg nil (byte-code "=
+
+(defun mh-set-scan-mode nil (byte-code "!
+
+(defun mh-maybe-show (&optional msg) (byte-code "
+
+(defun mh-set-mode-name (mode-name-string) (byte-code "  q) !" [mode-name mode-name-string other-buffer set-buffer-modified-p buffer-modified-p] 4))
+
+(defvar mh-current-folder nil "\
+Name of current folder, a string.")
+
+(defvar mh-show-buffer nil "\
+Buffer that displays mesage for this folder.")
+
+(defvar mh-folder-filename nil "\
+Full path of directory for this folder.")
+
+(defvar mh-showing nil "\
+If non-nil, show the message in a separate window.")
+
+(defvar mh-next-seq-num nil "\
+Index of free sequence id.")
+
+(defvar mh-delete-list nil "\
+List of msg numbers to delete.")
+
+(defvar mh-refile-list nil "\
+List of folder names in mh-seq-list.")
+
+(defvar mh-seq-list nil "\
+Alist of (seq . msgs) numbers.")
+
+(defvar mh-seen-list nil "\
+List of displayed messages.")
+
+(defvar mh-next-direction (quote forward) "\
+Direction to move to next message.")
+
+(defvar mh-narrowed-to-seq nil "\
+Sequence display is narrowed to.")
+
+(defvar mh-first-msg-num nil "\
+Number of first msg in buffer.")
+
+(defvar mh-last-msg-num nil "\
+Number of last msg in buffer.")
+
+(defun mh-make-folder (name) (byte-code "!‰ É ! !" [name buffer-read-only nil t buffer-file-name mh-folder-filename switch-to-buffer erase-buffer mh-folder-mode mh-set-folder-modified-p mh-set-mode-name "mh-e scan"] 6))
+
+(put (quote mh-folder-mode) (quote mode-class) (quote special))
+
+(defun mh-folder-mode nil "\
+Major mode for \"editing\" an MH folder scan listing.
+Messages can be marked for refiling and deletion. However, both actions
+are deferred until you request execution with \\[mh-execute-commands].
+\\{mh-folder-mode-map}
+ A prefix argument (\\[universal-argument]) to delete, refile, list, or undo
+applies the action to a message sequence.
+
+Variables controlling mh-e operation are (defaults in parentheses):
+
+ mh-bury-show-buffer (t)
+ Non-nil means that the buffer used to display message is buried.
+ It will never be offered as the default other buffer.
+
+ mh-clean-message-header (nil)
+ Non-nil means remove header lines matching the regular expression
+ specified in mh-invisible-headers from messages.
+
+ mh-visible-headers (nil)
+ If non-nil, it contains a regexp specifying the headers that are shown in
+ a message if mh-clean-message-header is non-nil. Setting this variable
+ overrides mh-invisible-headers.
+
+ mh-do-not-confirm (nil)
+ Non-nil means do not prompt for confirmation before executing some
+ non-recoverable commands such as mh-kill-folder and mh-undo-folder.
+
+ mhl-formfile (nil)
+ Name of format file to be used by mhl to show messages.
+ A value of T means use the default format file.
+ Nil means don't use mhl to format messages.
+
+ mh-lpr-command-format (\"lpr -p -J '%s'\")
+ Format for command used to print a message on a system printer.
+
+ mh-recenter-summary-p (nil)
+ If non-nil, then the scan listing is recentered when the window displaying
+ a messages is toggled off.
+
+ mh-summary-height (4)
+ Number of lines in the summary window including the mode line.
+
+ mh-ins-buf-prefix (\"> \")
+ String to insert before each non-blank line of a message as it is
+ inserted in a draft letter.
+
+The value of mh-folder-mode-hook is called when a new folder is set up." (byte-code " !ʉ! \" !!&ĉ!ĉ!!!" [mh-folder-mode-map major-mode nil truncate-lines t buffer-offer-save write-file-hooks revert-buffer-function kill-all-local-variables use-local-map mh-folder-mode mh-set-mode-name "mh-e folder" make-local-vars mh-current-folder buffer-name mh-show-buffer format "show-%s" mh-folder-filename file-name-as-directory mh-expand-file-name mh-showing mh-next-seq-num 0 mh-delete-list mh-refile-list mh-seq-list mh-seen-list mh-next-direction forward mh-narrowed-to-seq mh-first-msg-num mh-last-msg-num mh-previous-window-config auto-save-mode -1 make-local-variable (mh-execute-commands) mh-undo-folder run-hooks mh-folder-mode-hook] 38))
+
+(defun make-local-vars (&rest pairs) (byte-code "
+
+(defun mh-scan-folder (folder range) (byte-code "!?
+! !7
+\".
+#! " [folder t range get-buffer mh-make-folder mh-process-or-undo-commands switch-to-buffer mh-regenerate-headers zerop buffer-size equal "all" message "Folder %s is empty" "No messages in %s, range %s" sit-for 5 mh-goto-cur-msg] 13))
+
+(defun mh-regenerate-headers (range) (byte-code " \"  &eb!/
+!*!)\")" [folder mh-current-folder folder-updating-mod-flag buffer-read-only nil buffer-file-name range mh-valid-scan-line t mh-seq-list mh-partial-folder-mode-line-annotation message "Scanning %s..." buffer-modified-p erase-buffer mh-exec-cmd-output "scan" "-noclear" "-noheader" "-width" window-width looking-at "scan: no messages in" keep-lines "scan: " mh-delete-seq-locally cur mh-read-folder-sequences mh-notate-user-sequences mh-make-folder-mode-line equal "all" mh-set-folder-modified-p "Scanning %s...done"] 18))
+
+(defun mh-get-new-mail (maildrop-name) (byte-code "`
+  
+db`  J
+
+(defun mh-make-folder-mode-line (&optional annotation) (byte-code " ! !ed\" %
+#C
+
+(defun mh-unmark-all-headers (remove-all-flags) (byte-code "d Z `
+XC
+
+(defun mh-goto-cur-msg nil (byte-code "!@
+
+(defun mh-pack-folder-1 (range) (byte-code "!!!$)
+!" [mh-current-folder t range mh-process-or-undo-commands message "Packing folder..." mh-set-folder-modified-p mh-exec-cmd-quiet " *mh-temp*" "folder" "-pack" mh-regenerate-headers] 8))
+
+(defun mh-process-or-undo-commands (folder) (byte-code "q 
+
+(defun mh-process-commands (folder) (byte-code "\"q  
+\" É! \"*!)" [folder folder-updating-mod-flag buffer-read-only nil buffer-file-name mh-seen-list mh-unseen-seq mh-refile-list mh-delete-list mh-seq-list mh-current-folder t message "Processing deletes and refiles for %s..." buffer-modified-p mh-seq-to-msgs mh-undefine-sequence mh-mapc (lambda (dest) (byte-code " !
+ !&!)" [msgs dest folder mh-seq-to-msgs apply mh-exec-cmd "refile" "-src" symbol-name mh-delete-scan-msgs] 9)) apply mh-exec-cmd "rmm" mh-delete-scan-msgs buffer-size 0 mh-define-sequence cur mh-get-msg-num "last" mh-invalidate-show-buffer mh-read-folder-sequences mh-unmark-all-headers mh-notate-user-sequences "Processing deletes and refiles for %s...done" mh-set-folder-modified-p] 18))
+
+(defun mh-delete-scan-msgs (msgs) (byte-code "K\" 
+
+(defun mh-set-folder-modified-p (flag) "\
+Mark current folder as modified or unmodified according to FLAG." (byte-code "!" [flag set-buffer-modified-p] 2))
+
+(defun mh-outstanding-commands-p nil (byte-code "
+
+(defvar mh-sent-from-folder nil "\
+Folder of msg associated with this letter.")
+
+(defvar mh-sent-from-msg nil "\
+Number of msg associated with this letter.")
+
+(defvar mh-send-args nil "\
+Extra arguments to pass to \"send\" command.")
+
+(defvar mh-annotate-char nil "\
+Character to use to annotate mh-sent-from-msg.")
+
+(defvar mh-annotate-field nil "\
+Field name for message annotation.")
+
+(defun mh-letter-mode nil "\
+Mode for composing letters in mh-e.
+When you have finished composing, type \\[mh-send-letter] to send the letter.
+
+Variables controlling this mode (defaults in parentheses):
+
+ mh-delete-yanked-msg-window (nil)
+ If non-nil, \\[mh-yank-cur-msg] will delete any windows displaying
+ the yanked message.
+
+ mh-yank-from-start-of-msg (t)
+ If non-nil, \\[mh-yank-cur-msg] will include the entire message.
+ If `body', just yank the body (no header).
+ If nil, only the portion of the message following the point will be yanked.
+ If there is a region, this variable is ignored.
+
+Upon invoking mh-letter-mode, text-mode-hook and mh-letter-mode-hook are
+invoked with no args, if those values are non-nil.
+
+\\{mh-letter-mode-map}" (interactive) (byte-code "ƈ !P! P!!!!!!
+!щ! !\" Q
+
+(defun mh-auto-fill-for-letter nil (byte-code " 
+
+(defun mh-in-header-p nil (byte-code "`eb#`W))" [cur-point nil t re-search-forward "^--------"] 4))
+
+(defun mh-to-field nil "\
+Move point to the end of a specified header field.
+The field is indicated by the previous keystroke. Create the field if
+it does not exist. Set the mark to point before moving." (interactive) (byte-code "ƈ \"
+\"A\"D
+"] 16))
+
+(defun mh-to-fcc nil "\
+Insert an Fcc: field in the current message.
+Prompt for the field name with a completion list of the current folders." (interactive) (byte-code "È# Oc)*" [last-input-char folder t nil 6 mh-prompt-for-folder "Fcc" "" expand-abbrev mh-to-field 1] 6))
+
+(defun mh-insert-signature nil "\
+Insert the file ~/.signature at the current point." (interactive) (byte-code "! !" [nil insert-file-contents "~/.signature" set-buffer-modified-p buffer-modified-p] 4))
+
+(defun mh-check-whom nil "\
+Verify recipients of the current letter." (interactive) (byte-code "ˆ ! !!p! #!!)" [file-name t nil buffer-file-name set-buffer-modified-p save-buffer message "Checking recipients..." switch-to-buffer-other-window "*Mail Recipients*" bury-buffer erase-buffer mh-exec-cmd-output "whom" other-window -1 "Checking recipients...done"] 11))
+
+(defvar mh-searching-folder nil "\
+Folder this pick is searching.")
+
+(defun mh-make-pick-template nil (byte-code " !& !eb " [mh-pick-mode-map erase-buffer kill-all-local-variables make-local-variable mh-searching-folder insert "From:
+" "To:
+" "Cc:
+" "Date:
+" "Subject:
+" "---------
+" mh-letter-mode use-local-map end-of-line] 10))
+
+(defun mh-do-pick-search nil "\
+Find messages that match the qualifications in the current pattern buffer.
+Messages are searched for in the folder named in mh-searching-folder.
+Put messages found in a sequence named `search'." (interactive) (byte-code "Ĉ
+ !$
+ۉ9
+\"q
+
+(defun mh-next-pick-field (buffer) (byte-code "qm
+" "-search"] 16))
+
+(defun mh-compose-and-send-mail (draft send-args sent-from-folder sent-from-msg to subject cc annotate-char annotate-field config) (byte-code "!
+ 
+   C !4
+
+(defun mh-send-letter (&optional arg) "\
+Send the draft letter in the current buffer.
+If optional prefix argument is provided, monitor delivery.
+Run mh-before-send-letter-hook before doing anything." (interactive "P") (byte-code "ˈ!! !p  L
+&?
+&db! qb
+%b
+$~
+!!#& ?
+
+(defun mh-insert-letter (prefix-provided folder msg) "\
+Insert a message from any folder into the current letter.
+Removes the message's headers using mh-invisible-headers.
+Prefixes each non-blank line with mh-ins-buf-prefix (default \">> \").
+If optional prefix argument provided, do not indent and do not delete
+headers. Leaves the mark before the letter and point after it." (interactive (byte-code " # 
+!))" [current-prefix-arg mh-sent-from-folder nil mh-sent-from-msg start msg folder prefix-provided mh-invisible-headers mh-visible-headers mh-ins-buf-prefix narrow-to-region equal "" int-to-string mh-exec-lib-cmd-output "mhl" "-nobell" "-noclear" expand-file-name mh-expand-file-name mh-clean-msg-header set-mark mh-insert-prefix-string] 11))
+
+(defun mh-yank-cur-msg nil "\
+Insert the current message into the draft buffer.
+Prefix each non-blank line in the message with the string in
+`mh-ins-buf-prefix'. If a region is set in the message's buffer, then
+only the region will be inserted. Otherwise, the entire message will
+be inserted if `mh-yank-from-start-of-msg' is non-nil. If this variable
+is nil, the portion of the message following the point will be yanked.
+If `mh-delete-yanked-msg-window' is non-nil, any window displaying the
+yanked message will be deleted." (interactive) (byte-code "ʈ
+
+\" c !c )*t
+" widen error "There is no current message"] 15))
+
+(defun mh-insert-prefix-string (mh-ins-string) (byte-code "d!eb!)" [set-mark run-hooks mh-yank-hooks] 3))
+
+(defun mh-fully-kill-draft nil "\
+Kill the draft message file and the draft message buffer.
+Use \\[kill-buffer] if you don't want to delete the draft message file." (interactive) (byte-code "ˆ!.
+
+(defun mh-recenter (arg) (byte-code "p! =
+
+(defun mh-make-seq (name msgs) (byte-code " B" [name msgs] 2))
+
+(defmacro mh-seq-name (pair) (byte-code "D" [pair car] 2))
+
+(defmacro mh-seq-msgs (pair) (byte-code "D" [pair cdr] 2))
+
+(defun mh-find-seq (name) (byte-code " \"" [name mh-seq-list assoc] 3))
+
+(defun mh-seq-to-msgs (seq) "\
+Return a list of the messages in SEQUENCE." (byte-code "!A" [seq mh-find-seq] 2))
+
+(defun mh-seq-containing-msg (msg) (byte-code " 
+BA
+*" [l mh-seq-list seqs nil msg] 3))
+
+(defun mh-msg-to-seq (msg) (byte-code "!@" [msg mh-seq-containing-msg] 2))
+
+(defun mh-read-seq-default (prompt not-empty) (byte-code "
+
+
+(defun mh-read-seq (prompt not-empty &optional default) (byte-code "
+
+\"
+4
+
+(defun mh-read-folder-sequences (folder define-sequences) (byte-code "
+
+
+(defun mh-seq-names (seq-list) (byte-code "\"" [seq-list mapcar (lambda (entry) (byte-code "@!C" [entry symbol-name] 2))] 3))
+
+(defun mh-seq-from-command (folder seq seq-command) (byte-code "ɋq
+!
+\"B
+)+" [msg nil msgs case-fold-search t seq-command folder mh-seq-list seq ((byte-code "#eb @
+B!
+
+(defun mh-read-msg-list nil (byte-code " `)
+#o
+#!!\"! WF
+
+(defun mh-remove-seq (seq) (byte-code " T%C\"!" [seq mh-cmd-note mh-map-to-seq-msgs mh-notate-if-in-one-seq 32 mh-undefine-sequence "all" mh-delete-seq-locally] 6))
+
+(defun mh-delete-seq-locally (seq) (byte-code " !
+\")" [entry seq mh-seq-list mh-find-seq delq] 4))
+
+(defun mh-remove-msg-from-seq (msg seq &optional internal-flag) (byte-code " !$
+ T@$ ?
+C\"
+A\"\")" [entry seq msg mh-cmd-note internal-flag mh-find-seq mh-notate-if-in-one-seq 32 mh-undefine-sequence setcdr delq] 8))
+
+(defun mh-add-msgs-to-seq (msgs seq &optional internal-flag) (byte-code " !
+
+!
+C?#
+\" B/
+/
+A\"\" ?@
+\" T#)" [entry seq msgs mh-seq-list internal-flag mh-cmd-note mh-find-seq atom mh-make-seq setcdr append mh-add-to-sequence mh-notate-seq 37] 10))
+
+(defun mh-rename-seq (seq new-name) "\
+Rename a SEQUENCE to have a new NAME." (interactive "SOld sequence name:
+SNew name: ") (byte-code "È !
+\"
+A\")" [old-seq seq new-name nil mh-find-seq rplaca error "Sequence %s does not exists" mh-undefine-sequence mh-define-sequence] 7))
+
+(defun mh-notate-user-sequences nil (byte-code " $
+!?
+ T#A
+
+(defun mh-internal-seq (name) (byte-code ">
+
+(defun mh-folder-name-p (name) (byte-code "9
+
+(defun mh-notate-seq (seq notation offset) (byte-code "
+$" [seq notation offset mh-map-to-seq-msgs mh-notate] 5))
+
+(defun mh-notate-if-in-one-seq (msg notation offset seq) (byte-code " !
+@=
+
+(defun mh-map-to-seq-msgs (func seq &rest args) (byte-code " !!
+
+(defun mh-map-over-seqs (func seq-list) (byte-code "
+
+(defun mh-define-sequences (seq-list) (byte-code "\"" [seq-list mh-map-over-seqs mh-define-sequence] 3))
+
+(defun mh-add-to-sequence (seq msgs) (byte-code "!?
+! &" [seq msgs mh-current-folder mh-folder-name-p apply mh-exec-cmd "mark" "-sequence" symbol-name "-add"] 10))
+
+(defun mh-define-sequence (seq msgs) (byte-code "
+ !!&)" [msgs seq mh-current-folder mh-folder-name-p apply mh-exec-cmd "mark" "-sequence" symbol-name "-add" "-zero" mh-list-to-string] 12))
+
+(defun mh-undefine-sequence (seq msgs) (byte-code " !
+&" [mh-current-folder seq msgs apply mh-exec-cmd "mark" "-sequence" symbol-name "-delete"] 9))
+
+(defun mh-copy-seq-to-point (seq location) (byte-code " #" [seq location mh-map-to-seq-msgs mh-copy-line-to-point] 4))
+
+(defun mh-copy-line-to-point (msg location) (byte-code " `!`\" b b)" [beginning-of-line location forward-line 1 copy-region-as-kill yank] 5))
+
+(defun mh-exec-cmd (command &rest args) (byte-code "q  \" !& V
+
+(defun mh-exec-cmd-quiet (buffer command &rest args) (byte-code ";
+
+\" &" [buffer command mh-progs nil args erase-buffer apply call-process expand-file-name] 9))
+
+(defun mh-exec-cmd-output (command display &rest args) (byte-code "`\"
+\" !& " [t command mh-progs nil display args push-mark apply call-process expand-file-name mh-list-to-string exchange-point-and-mark] 10))
+
+(defun mh-exec-cmd-daemon (command &rest args) (byte-code "!q ) \" !%
+\"*" [process-connection-type nil process command mh-progs args get-buffer-create " *mh-temp*" erase-buffer apply start-process expand-file-name mh-list-to-string set-process-filter mh-process-daemon] 10))
+
+(defun mh-process-daemon (process output) (byte-code "!q!!" [output get-buffer-create " *mh-temp*" insert-before-markers display-buffer] 4))
+
+(defun mh-exec-lib-cmd-output (command &rest args) (byte-code "`\"
+\" !& " [t command mh-lib nil args push-mark apply call-process expand-file-name mh-list-to-string exchange-point-and-mark] 10))
+
+(defun mh-list-to-string (l) (byte-code "
+h
+@?_
+@9
+@!B_
+@!/
+@!B_
+@\"_
+@;F
+@B_
+@<Z
+@!!\"_
+@\"
+A
+
+(defun mh-annotate-msg (msg buffer note &rest args) (byte-code "
+%!&
+
+(defun mh-notate (msg notation offset) (byte-code "?
+!))" [msg t folder-updating-mod-flag buffer-read-only nil buffer-file-name offset notation mh-goto-msg buffer-modified-p beginning-of-line forward-char delete-char 1 mh-set-folder-modified-p] 8))
+
+(defun mh-prompt-for-folder (prompt default can-create) (byte-code " \"
+\"5
+\"I
+\"R
+!?_
+\"
+!!? q
+\"!
+\"
+!%
+\"
+C B
+\"
+ \"?
+C B)
+*" [prompt default name mh-folder-list nil new-file-p t format "%s folder%s" equal "" "? " " [%s]? " mh-set-folder-list completing-read "+" mh-folder-name-p "+%s" file-exists-p mh-expand-file-name y-or-n-p "Folder %s does not exist. Create it? " message "Creating %s" call-process "mkdir" "Creating %s...done" error "Folder %s is not created" assoc] 23))
+
+(defun mh-set-folder-list nil "\
+Sets mh-folder-list correctly.
+A useful function for the command line or for when you need to sync by hand." (byte-code " " [mh-folder-list mh-make-folder-list] 3))
+
+(defun mh-make-folder-list nil "\
+Return a list of the user's folders.
+Result is in a form suitable for completing read." (interactive) (byte-code "ˆ!Ƌ" [mh-recursive-folders list nil start message "Collecting folder names..." ((byte-code "
+
+(defun mh-remove-folder-from-folder-list (folder) (byte-code " \"\"" [mh-folder-list folder delq assoc] 4))
+
+(defun mh-read-msg-range (prompt) (byte-code " !G
+W*
+#@ BA)
+
+(defun mh-get-msg-num (error-if-no-message) (byte-code " !
+
+(defun mh-msg-search-pat (n) (byte-code " \"" [mh-msg-search-regexp n format] 3))
+
+(defun mh-msg-filename (msg &optional folder) (byte-code "! 
+\"" [msg folder mh-folder-filename expand-file-name int-to-string mh-expand-file-name] 5))
+
+(defun mh-msg-filenames (msgs &optional folder) (byte-code "#" [msgs mapconcat (lambda (msg) (byte-code " \"" [msg folder mh-msg-filename] 3)) " "] 4))
+
+(defun mh-expand-file-name (filename &optional default) "\
+Just like `expand-file-name', but also handles MH folder names.
+Assumes that any filename that starts with '+' is a folder name." (byte-code "!
+\"" [filename mh-user-path default mh-folder-name-p expand-file-name 1 nil] 5))
+
+(defun mh-find-path nil (byte-code "!
+
+(defun mh-get-field (field) (byte-code "eb
+\"#?
+].*\\)$" match-beginning 1 forward-line "[ ]" buffer-substring] 11))
+
+(defun mh-insert-fields (&rest name-values) (byte-code "
+C
+@
+A@ \"?8
+AA*
+" end-of-line] 10))
+
+(defun mh-position-on-field (field set-mark) (byte-code "
+
+
+(defun mh-goto-header-end (arg) (byte-code "#
+
+(suppress-keymap mh-folder-mode-map)
+
+(define-key mh-folder-mode-map "q" (quote mh-quit))
+
+(define-key mh-folder-mode-map "b" (quote mh-quit))
+
+(define-key mh-folder-mode-map "?" (quote mh-msg-is-in-seq))
+
+(define-key mh-folder-mode-map "%" (quote mh-put-msg-in-seq))
+
+(define-key mh-folder-mode-map "|" (quote mh-pipe-msg))
+
+(define-key mh-folder-mode-map "a" (quote mh-edit-again))
+
+(define-key mh-folder-mode-map "%" (quote mh-delete-msg-from-seq))
+
+(define-key mh-folder-mode-map "n" (quote mh-narrow-to-seq))
+
+(define-key mh-folder-mode-map "w" (quote mh-widen))
+
+(define-key mh-folder-mode-map "b" (quote mh-burst-digest))
+
+(define-key mh-folder-mode-map "u" (quote mh-undo-folder))
+
+(define-key mh-folder-mode-map " " (quote mh-page-digest))
+
+(define-key mh-folder-mode-map "" (quote mh-page-digest-backwards))
+
+(define-key mh-folder-mode-map "e" (quote mh-extract-rejected-mail))
+
+(define-key mh-folder-mode-map "f" (quote mh-visit-folder))
+
+(define-key mh-folder-mode-map "k" (quote mh-kill-folder))
+
+(define-key mh-folder-mode-map "l" (quote mh-list-folders))
+
+(define-key mh-folder-mode-map "o" (quote mh-write-msg-to-file))
+
+(define-key mh-folder-mode-map "p" (quote mh-pack-folder))
+
+(define-key mh-folder-mode-map "s" (quote mh-search-folder))
+
+(define-key mh-folder-mode-map "r" (quote mh-rescan-folder))
+
+(define-key mh-folder-mode-map "l" (quote mh-print-msg))
+
+(define-key mh-folder-mode-map "t" (quote mh-toggle-showing))
+
+(define-key mh-folder-mode-map "c" (quote mh-copy-msg))
+
+(define-key mh-folder-mode-map ">" (quote mh-write-msg-to-file))
+
+(define-key mh-folder-mode-map "i" (quote mh-inc-folder))
+
+(define-key mh-folder-mode-map "x" (quote mh-execute-commands))
+
+(define-key mh-folder-mode-map "e" (quote mh-execute-commands))
+
+(define-key mh-folder-mode-map "r" (quote mh-redistribute))
+
+(define-key mh-folder-mode-map "f" (quote mh-forward))
+
+(define-key mh-folder-mode-map "s" (quote mh-send))
+
+(define-key mh-folder-mode-map "m" (quote mh-send))
+
+(define-key mh-folder-mode-map "a" (quote mh-reply))
+
+(define-key mh-folder-mode-map "j" (quote mh-goto-msg))
+
+(define-key mh-folder-mode-map "<" (quote mh-first-msg))
+
+(define-key mh-folder-mode-map "g" (quote mh-goto-msg))
+
+(define-key mh-folder-mode-map "" (quote mh-previous-page))
+
+(define-key mh-folder-mode-map " " (quote mh-page-msg))
+
+(define-key mh-folder-mode-map "." (quote mh-show))
+
+(define-key mh-folder-mode-map "u" (quote mh-undo))
+
+(define-key mh-folder-mode-map "!" (quote mh-refile-or-write-again))
+
+(define-key mh-folder-mode-map "^" (quote mh-refile-msg))
+
+(define-key mh-folder-mode-map "d" (quote mh-delete-msg))
+
+(define-key mh-folder-mode-map "" (quote mh-delete-msg-no-motion))
+
+(define-key mh-folder-mode-map "p" (quote mh-previous-undeleted-msg))
+
+(define-key mh-folder-mode-map "n" (quote mh-next-undeleted-msg))
+
+(define-key mh-folder-mode-map "o" (quote mh-refile-msg))
+
+(define-key mh-letter-mode-map "" (quote mh-to-field))
+
+(define-key mh-letter-mode-map "" (quote mh-to-field))
+
+(define-key mh-letter-mode-map "" (quote mh-to-fcc))
+
+(define-key mh-letter-mode-map "" (quote mh-to-field))
+
+(define-key mh-letter-mode-map "" (quote mh-to-field))
+
+(define-key mh-letter-mode-map "b" (quote mh-to-field))
+
+(define-key mh-letter-mode-map "c" (quote mh-to-field))
+
+(define-key mh-letter-mode-map "f" (quote mh-to-fcc))
+
+(define-key mh-letter-mode-map "s" (quote mh-to-field))
+
+(define-key mh-letter-mode-map "t" (quote mh-to-field))
+
+(define-key mh-letter-mode-map "" (quote mh-fully-kill-draft))
+
+(define-key mh-letter-mode-map "" (quote mh-check-whom))
+
+(define-key mh-letter-mode-map " " (quote mh-insert-letter))
+
+(define-key mh-letter-mode-map "" (quote mh-yank-cur-msg))
+
+(define-key mh-letter-mode-map "" (quote mh-insert-signature))
+
+(define-key mh-letter-mode-map "" (quote mh-send-letter))
+
+(define-key mh-pick-mode-map "" (quote mh-do-pick-search))
+
+(define-key mh-pick-mode-map "" (quote mh-to-field))
+
+(define-key mh-pick-mode-map "" (quote mh-to-field))
+
+(define-key mh-pick-mode-map "" (quote mh-to-field))
+
+(define-key mh-pick-mode-map "" (quote mh-to-field))
+
+(define-key mh-pick-mode-map "" (quote mh-to-field))
+
+(define-key mh-pick-mode-map "b" (quote mh-to-field))
+
+(define-key mh-pick-mode-map "c" (quote mh-to-field))
+
+(define-key mh-pick-mode-map "f" (quote mh-to-field))
+
+(define-key mh-pick-mode-map "s" (quote mh-to-field))
+
+(define-key mh-pick-mode-map "t" (quote mh-to-field))
+
+(define-key mh-pick-mode-map "" (quote mh-check-whom))