home *** CD-ROM | disk | FTP | other *** search
/ Education Sampler 1992 [NeXTSTEP] / Education_1992_Sampler.iso / NeXT / GnuSource / emacs-15.0.3 / lisp / mh-e.elc < prev    next >
Text File  |  1990-07-19  |  63KB  |  991 lines

  1.  
  2. (defvar mh-e-RCS-id)
  3.  
  4. (setq mh-e-RCS-id "$Header: mh-e.el,v 2.24 88/08/29 12:07:53 larus Exp $")
  5.  
  6. (provide (quote mh-e))
  7.  
  8. (defvar mh-redist-full-contents t "\
  9. Non-nil if the `dist' command needs whole letter for redistribution (i.e.,
  10. when `send' is compiled with the BERK option).  Nil otherwise.")
  11.  
  12. (defvar mh-folder-mode-hook nil "\
  13. *Invoked in mh-folder-mode on a new folder.")
  14.  
  15. (defvar mh-letter-mode-hook nil "\
  16. *Invoked in mh-letter-mode on a new letter.")
  17.  
  18. (defvar mh-compose-letter-hook nil "\
  19. *Invoked in mh-compose-and-send-mail on an outgoing letter.  It is passed
  20. three arguments: TO recipients, SUBJECT, and CC recipients.")
  21.  
  22. (defvar mh-inc-folder-hook nil "\
  23. *Invoked after incorporating new mail into a folder.")
  24.  
  25. (defvar mh-clean-message-header nil "\
  26. *Non-nil means remove invisible header lines or only show visible header
  27. lines in messages.")
  28.  
  29. (defvar mh-visible-headers nil "\
  30. *If non-nil, it contains a regexp specifying the headers that are shown in
  31. a message if mh-clean-message-header is non-nil.  Setting this variable
  32. overrides mh-invisible-headers.")
  33.  
  34. (defvar mhl-formfile nil "\
  35. *Name of format file to be used by mhl to show messages.
  36. A value of T means use the default format file.
  37. Nil means don't use mhl to format messages.")
  38.  
  39. (defvar mh-lpr-command-format "lpr -p -J '%s'" "\
  40. *Format for Unix command line to print a message. The format should be
  41. a unix command line, with the string \"%s\" where the folder and message
  42. number should appear.")
  43.  
  44. (defvar mh-print-background nil "\
  45. *Print messages in the background if non-nil.  WARNING: do not delete
  46. the messages until printing is finished; otherwise, your output may be
  47. truncated.")
  48.  
  49. (defvar mh-summary-height 4 "\
  50. *Number of lines in summary window.")
  51.  
  52. (defvar mh-recenter-summary-p nil "\
  53. *Recenter summary window when the show window is toggled off if
  54. this is non-nil.")
  55.  
  56. (defvar mh-ins-buf-prefix ">> " "\
  57. *String to put before each non-blank line of the the current message
  58. as it is inserted in an outgoing letter.")
  59.  
  60. (defvar mh-do-not-confirm nil "\
  61. *Non-nil means do not prompt for confirmation before executing some
  62. innocuous commands.")
  63.  
  64. (defvar mh-bury-show-buffer t "\
  65. *Non-nil means that the displayed show buffer for a folder is buried.")
  66.  
  67. (defvar mh-delete-yanked-msg-window nil "\
  68. *If non-nil, yanking the current message into a letter being composed,
  69. with \\[mh-yank-cur-msg], deletes any windows displaying the message.")
  70.  
  71. (defvar mh-yank-from-start-of-msg t "\
  72. *If non-nil, \\[mh-yank-cur-msg] will include the entire message.  If
  73. `body' then the message minus the header will be yanked.  If nil, only the
  74. portion of the message following the point will be yanked.  If there is a
  75. region in the show buffer, this variable is ignored.")
  76.  
  77. (defvar mh-reply-default-reply-to nil "\
  78. *If non-nil, then \\[mh-reply] will use this as the person or persons to
  79. which the reply will be sent.  The value should be one of \"from\", \"to\", or
  80. \"cc\".")
  81.  
  82. (defvar mh-recursive-folders nil "\
  83. *If non-nil, then commands which operate on folders do so recursively.")
  84.  
  85. (defvar mh-cmd-note 4 "\
  86. Offset to insert notation")
  87.  
  88. (defvar mh-good-msg-regexp "^....[^D^]" "\
  89. Regexp specifiying the scan lines that are 'good' messages.")
  90.  
  91. (defvar mh-deleted-msg-regexp "^....D" "\
  92. Regexp matching scan lines of deleted messages.")
  93.  
  94. (defvar mh-refiled-msg-regexp "^....\\^" "\
  95. Regexp matching scan lines of refiled messages.")
  96.  
  97. (defvar mh-valid-scan-line "^[ ]*[0-9]" "\
  98. Regexp matching scan lines for messages (not error messages).")
  99.  
  100. (defvar mh-msg-number-regexp "^[ ]*\\([0-9]+\\)" "\
  101. Regexp matching the number of a message in a scan line.  It must surround
  102. the number with \\( \\)")
  103.  
  104. (defvar mh-msg-search-regexp "^[^0-9]*%d[^0-9]" "\
  105. String for format that will return a regexp matching the scan listing for
  106. a given message number.")
  107.  
  108. (defvar mh-flagged-scan-msg-regexp "^....\\D\\|^....\\^\\|^....\\+\\|^.....%" "\
  109. Regexp matching scan lines marked as deleted, refiled, in a sequence, or
  110. the cur message.")
  111.  
  112. (defvar mh-cur-scan-msg-regexp "^....\\+" "\
  113. regexp matching scan line for the cur message.")
  114.  
  115. (defvar mh-invisible-headers "^Received: \\|^Message-Id: \\|^Remailed-\\|^Via: \\|^Mail-from: \\|^Return-Path: \\|^In-Reply-To: \\|^Resent-" "\
  116. Regexp specifying headers that are not to be shown.")
  117.  
  118. (defvar mh-rejected-letter-start "^   ----- Unsent message follows -----$" "\
  119. Regexp specifying the beginning of the wrapper around a letter returned
  120. by the mail system.")
  121.  
  122. (defvar mh-to-field-choices (quote ((116 . "To:") (115 . "Subject:") (99 . "Cc:") (98 . "Bcc:") (102 . "Fcc:"))) "\
  123. A-list of (character . field name) strings for mh-to-field.")
  124.  
  125. (defvar mh-user-path "" "\
  126. User's mail folder.")
  127.  
  128. (defvar mh-last-destination nil "\
  129. Destination of last `refile' command.")
  130.  
  131. (defvar mh-folder-mode-map (make-keymap) "\
  132. Keymap for MH folders.")
  133.  
  134. (defvar mh-letter-mode-map (make-sparse-keymap) "\
  135. Keymap for composing mail.")
  136.  
  137. (defvar mh-pick-mode-map (make-sparse-keymap) "\
  138. Keymap for searching folder.")
  139.  
  140. (defvar mh-letter-mode-syntax-table nil "\
  141. Syntax table used while in mh-e letter mode.")
  142.  
  143. (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))
  144.  
  145. (defvar mh-folder-list nil "\
  146. List of folder names for completion.")
  147.  
  148. (defvar mh-draft-folder nil "\
  149. Name of folder containing draft messages.
  150. NIL means do not use draft folder.")
  151.  
  152. (defvar mh-unseen-seq nil "\
  153. Name of the unseen sequence.")
  154.  
  155. (defmacro mh-push (v l) (byte-code "´ˆ    EEÇ" [l v setq cons] 5))
  156.  
  157. (defmacro when (pred &rest body) (byte-code "´    BDÇ" [pred body cond] 3))
  158.  
  159. (defun mapc (func list) (byte-code "Ä´    @\"ÈAÉÈÁÇ" [list func funcall] 4))
  160.  
  161. (defun mh-list* (&rest args) (byte-code "ˋ!Ç" [args mh-make-list*] 2))
  162.  
  163. (defun mh-make-list* (arglist) (byte-code "?    ˋÁA?Â@Á@ˆA!BÇ" [arglist nil t mh-make-list*] 3))
  164.  
  165. (defun mh-rmail (&optional arg) "\
  166. Inc(orporate) new mail (no arg) or scan a MH mail box (arg given).
  167. This front end uses the MH mail system, which uses different conventions
  168. from the usual mail system." (interactive "P") (byte-code "ˋÈ´ Èˆ˜!Á¯ Ç" [arg nil mh-find-path call-interactively mh-visit-folder mh-inc-folder] 4))
  169.  
  170. (defun mh-smail nil "\
  171. Send mail using the MH mail system." (interactive) (byte-code "¹Èˋ È´ˆ!Ç" [nil mh-find-path call-interactively mh-send] 3))
  172.  
  173. (defun mh-smail-other-window nil "\
  174. Send mail in other window using the MH mail system." (interactive) (byte-code "¹Èˋ È´ˆ!Ç" [nil mh-find-path call-interactively mh-send-other-window] 3))
  175.  
  176. (defun mh-burst-digest nil "\
  177. Burst apart the current message, which should be a digest.  Message is
  178. replaced by its table of contents and the letters from the digest are inserted
  179. into the folder after that message." (interactive) (byte-code "˜È¯ˋ!˘
  180. !È˙¨!Ȳ˚
  181. ¸$ȳ
  182. ˝˛ \"\"È˙ˇ!)Ç" [digest t mh-current-folder mh-first-msg-num nil mh-get-msg-num mh-process-or-undo-commands message "Bursting digest..." mh-exec-cmd "burst" "-inplace" mh-scan-folder format "%d-last" "Bursting digest...done"] 9))
  183.  
  184. (defun mh-copy-msg (prefix-provided msg-or-seq dest) "\
  185. Copy specified MESSAGE(s) (default: displayed message) to another
  186. FOLDER without deleting them.
  187. If (optional) prefix argument provided, then prompt for the message sequence." (interactive (byte-code "ˆ˜ˋ
  188. #Á¯ˋ!˘˙¨ˋ#EÇ" [current-prefix-arg t mh-narrowed-to-seq mh-read-seq "Copy" mh-get-msg-num mh-prompt-for-folder "Copy to" ""] 8)) (byte-code "¨È²˚ ¸³ &Ƚ ˛#Á ˇ ˛#Ç" [current-prefix-arg t mh-narrowed-to-seq 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))
  189.  
  190. (defun mh-delete-msg (prefix-provided msg-or-seq) "\
  191. Mark the specified MESSAGE(s) (default: displayed message) for later
  192. deletion.
  193. If (optional) prefix argument provided, then prompt for the message sequence." (interactive (byte-code "ˆ˜ˋ
  194. #Á¯ˋ!DÇ" [current-prefix-arg t mh-narrowed-to-seq mh-read-seq "Delete" mh-get-msg-num] 5)) (byte-code "¯È ¢˙ \"Á˙ !Ȩ Ç" [current-prefix-arg t mh-narrowed-to-seq prefix-provided msg-or-seq nil mh-map-to-seq-msgs mh-delete-a-msg mh-next-msg] 4))
  195.  
  196. (defun mh-delete-msg-from-seq (prefix-provided msg-or-seq &optional from-seq) "\
  197. Delete MESSAGE (default: displayed message) from SEQUENCE.
  198. If (optional) prefix argument provided, then delete all messages from a
  199. sequence." (interactive (byte-code "    Â˜¯´ #Á˘´!?Ę˙´ #E)Ç" [argp current-prefix-arg t mh-narrowed-to-seq mh-read-seq "Delete" mh-get-msg-num "Delete from"] 8)) (byte-code "˙È Â ¨!Á²\"Ç" [argp current-prefix-arg t mh-narrowed-to-seq prefix-provided msg-or-seq from-seq nil mh-remove-seq mh-remove-msg-from-seq] 4))
  200.  
  201. (defun mh-edit-again (msg) "\
  202. 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 "˙È
  203. ¨ Ä²    \"Â&˚¸!!ȳ˝˛\"!Èˇ Á.—±¸!˙#¼e½˙#ÈebȾ˙!Èà á    ˙˙˙˙˙˙ &
  204. +Ç" [t from-folder mh-current-folder config draft mh-draft-folder msg nil current-window-configuration equal find-file mh-msg-filename rename-buffer format "draft-%d" buffer-name mh-read-draft "clean-up" mh-clean-msg-header "^Date:\\|^Received:\\|^Message-Id:\\|^From:" set-buffer-modified-p mh-compose-and-send-mail ""] 22))
  205.  
  206. (defun mh-execute-commands nil "\
  207. Process outstanding delete and refile requests." (interactive) (byte-code "´ÈĈ Èʘ    !)ȯ È˘ È˙ Ç" [mh-narrowed-to-seq mh-current-folder nil mh-widen mh-process-commands mh-goto-cur-msg mh-set-scan-mode mh-make-folder-mode-line] 6))
  208.  
  209. (defun mh-extract-rejected-mail (msg) "\
  210. Extract a letter returned by the mail system (default: displayed message)
  211. and make it resendable." (interactive (byte-code "ˋ¹!CÇ" [t mh-get-msg-num] 2)) (byte-code "˘È
  212. ¨ ²˚¸!˘#ebȳ˘¹#Â,˝˛!Èˇe`\"È—e±˘#Á/¼½!ÈebȾ˘!Èà á    âã!âä!âå!˘˘ &
  213. +Ç" [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:" 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))
  214.  
  215. (defun mh-forward (prefix-provided msg-or-seq to cc) "\
  216. Forward MESSAGE(s) (default: displayed message).
  217. If (optional) prefix argument provided, then prompt for the message sequence." (interactive (byte-code "ˆ˜ˋ
  218. #Á¯ˋ!˘˙!˘¨!FÇ" [current-prefix-arg t mh-narrowed-to-seq mh-read-seq "Forward" mh-get-msg-num read-string "To: " "Cc: "] 8)) (byte-code "³È ± ¼½\"¾!?Åàá!Â:âãä     $Èåçˋ#èé
  219. ê $Èë³!ÈÁ@åç³#ebÈìÆ!Èíª!Èî`d\"ÈÊïð!)ñŁ\"ÊïØ!)ÄwŒªZOÉȺ ÈÊèØòó#\")Èô ÈÂÝõö    !æˋ#Á¡õ    æˋ#Èùç     
  220.  úû&
  221. +,Ç" [current-prefix-arg t mh-narrowed-to-seq folder mh-current-folder config draft-name mh-user-path draft msg-or-seq to cc nil subject trim forw-subject prefix-provided current-window-configuration mh-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" previous-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 "F" "Forwarded:"] 33))
  222.  
  223. (defun mh-goto-msg (number &optional no-error-if-no-message dont-show) "\
  224. Position the cursor at message NUMBER.
  225. Non-nil second argument means do not signal an error if message does not exist.
  226. Non-nil third argument means not to show the message.
  227. Return non-nil if cursor is at message." (interactive "NMessage number? ") (byte-code "ˋȨˋ!`² !Ä U¯ÁNÄ) WÄ)˚ ˋ¯#Â0¯ÁNÄ? VÄ?¸ ˋ¯#ÂF¯ÁNebÈ˚ ˋ¯#Âb³ È?Ä]˝ !ȯÁq
  228. bÈ?Äo˛ˇ \"Èˋ+Ç" [cur-msg nil starting-place msg-pattern number t dont-show no-error-if-no-message mh-get-msg-num mh-msg-search-pat re-search-forward re-search-backward beginning-of-line mh-maybe-show error "No message %d "] 10))
  229.  
  230. (defun mh-inc-folder (&optional maildrop-name) "\
  231. Inc(orporate) new mail into +inbox.
  232. Optional prefix argument specifies an alternate maildrop from the default.
  233. If this is given, mail is incorporated into the current folder, rather
  234. than +inbox." (interactive (byte-code "Ä
  235. ´ˆ˜    \"!CÇ" [current-prefix-arg mh-user-path expand-file-name read-file-name "inc mail from file: "] 4)) (byte-code "¯È˘  ?Ä+˙¨!?²¨!È
  236. ÉÁ+p˙¨!=?Ä+˚¨!È
  237. É)ȸ !ȳ˝!Ç" [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))
  238.  
  239. (defun mh-kill-folder nil "\
  240. Remove the current folder." (interactive) (byte-code "ˆÈÅ ˜¯˘    \"!Â%    ˙¨
  241. \"Ȳ
  242. !È˚¸!ȳ
  243. !)Á(˚˝!Ç" [mh-do-not-confirm mh-current-folder folder nil yes-or-no-p format "Remove folder %s? " mh-exec-cmd-demon "rmf" mh-remove-folder-from-folder-list message "Folder removed" kill-buffer "Folder not removed"] 8))
  244.  
  245. (defun mh-list-folders nil "\
  246. List mail folders." (interactive) (byte-code "ˋÈ´Ðʈ´!Ș È¯˘!È˙¨¹\"Èebȯ²!)ÑÇ" [t nil " *mh-temp*" switch-to-buffer erase-buffer message "listing folders..." mh-exec-cmd-output "folders" "listing folders...done"] 7))
  247.  
  248. (defun mh-msg-is-in-seq (msg) "\
  249. 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))
  250.  
  251. (defun mh-narrow-to-seq (seq) "\
  252. Restrict display of this folder to just messages in a sequence.
  253. Reads which sequence.  Use \\[mh-widen] to undo this command." (interactive (byte-code "ˋ´¹\"CÇ" [t mh-read-seq "Narrow to"] 3)) (byte-code "ˆÈdˆ˘ !Â%˙     \"Ȩ    d\"Ȳ˚ !!ȸ È ÉÁ+³˝˚ !\"*Ç" [t eob buffer-read-only nil seq mh-narrowed-to-seq mh-seq-to-msgs mh-copy-seq-to-point narrow-to-region mh-make-folder-mode-line symbol-name recenter error "No messages in sequence `%s'"] 10))
  254.  
  255. (defun mh-next-undeleted-msg (&optional arg) "\
  256. Move to next undeleted message in window." (interactive "p") (byte-code "ˆÈ˘Â Á ˙!ȨÉȲ
  257. ˆ˚$Â&¸ È³˝˜!!Á3˘˛!Èˇ!Ä3—!Ç" [arg mh-next-direction mh-good-msg-regexp nil t mh-show-buffer forward-line 1 forward re-search-forward 0 beginning-of-line mh-maybe-show mh-get-msg-num -1 get-buffer delete-windows-on] 9))
  258.  
  259. (defun mh-pack-folder nil "\
  260. Execute any outstanding commands for the current folder, then renumber the
  261. remaining messages to be 1..N." (interactive) (byte-code "¹Èˋ´!Ȉ È˜ Èˋ¯!Ç" [nil message "packing buffer..." mh-pack-folder-1 mh-goto-cur-msg "packing buffer...done"] 5))
  262.  
  263. (defun mh-refile-msg (prefix-provided msg-or-seq dest) "\
  264. Refile MESSAGE(s) (default: displayed message) in FOLDER.
  265. If (optional) prefix argument provided, then prompt for message sequence." (interactive (byte-code "˜¯ˋ
  266. #Á˘ˋ!˙¨²˚ @=Â!¸ A!Á\"³ˋ#!EÇ" [current-prefix-arg t mh-narrowed-to-seq mh-last-destination mh-read-seq "Refile" mh-get-msg-num intern mh-prompt-for-folder "Destination" refile symbol-name ""] 10)) (byte-code "˙Ȩ BÉȲ˚ #Á˚ \"ȸ Ç" [current-prefix-arg t mh-narrowed-to-seq mh-last-destination dest prefix-provided msg-or-seq nil refile mh-map-to-seq-msgs mh-refile-a-msg mh-next-msg] 4))
  267.  
  268. (defun mh-refile-or-write-again (msg) "\
  269. Re-execution the last refile or write command on the given MESSAGE (default:
  270. displayed message).
  271. 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 "ˆÈ    ?Ä
  272. ˜¯!È    @˘= ˙
  273.     A\"Ȩ²    A\"Á+˚
  274.     A\"Ȩ¸    A\"ȳ Ç" [t mh-last-destination msg nil error "No previous refile" refile mh-refile-a-msg message "Destination folder: %s" mh-write-msg-to-file "Destination: %s" mh-next-msg] 7))
  275.  
  276. (defun mh-reply (prefix-provided msg) "\
  277. Reply to a MESSAGE (default: displayed message).
  278. If (optional) prefix argument provided, then include the message in the reply." (interactive (byte-code "´ˋ!DÇ" [current-prefix-arg t mh-get-msg-num] 3)) (byte-code "¯È½ žàá¯ˋ$â!     ã  
  279. äå!Èç è\"Å0ç é\"ÂMêëìÆíª    îïÄGðñD&\"ÁÕç Ł\"ÂnêëìÆíª    ØŁÄhðñD&\"ÁÕç Œ\"Åyç ï\"ÄÕêëìÆíª    ØïîºÄÒðñD&
  280. \"Èòóôó\"ˋ#õ Èö¯!Èæù!æú!æû!ebÈıü!È?ijý
  281. #Èłøˋ#Èäœ!Èßéþÿ &
  282. +)-)Ç" [current-prefix-arg t minibuffer-help-form reply-to mh-reply-default-reply-to nil msg-filename msg folder mh-current-folder show-buffer mh-show-buffer config prefix-provided draft mh-user-path to subject cc "from => Sender only
  283. to => Sender and primary recipients
  284. cc or all => Sender and all recipients" completing-read "Reply to whom: " (("from") ("to") ("cc") ("all")) mh-msg-filename current-window-configuration message "Composing a reply..." equal "from" "" apply mh-exec-cmd mh-list* "repl" "-build" "-nodraftfolder" "-nocc" "all" "-filter" "mhl.reply" "to" "-cc" "cc" "me" mh-read-draft "reply" mh-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:"] 37))
  285.  
  286. (defun mh-restore-window-config nil "\
  287. Restore the previous window configuration, if one exists." (interactive) (byte-code "ˋÈÄ    ´!Ç" [mh-previous-window-config nil set-window-configuration] 2))
  288.  
  289. (defun mh-page-digest nil "\
  290. Advance displayed message to next digested message." (interactive) (byte-code "ˋÈʈ È˜¯!Èˋ˘˙ˋ´#Ģ¨ˋ´#?Ä$²˚!ȸ³!)È˝˙ˋ´#È˛ˇ!È—¯!Ȳ˚!)Ç" [case-fold-search nil t mh-show-message-in-other-window move-to-window-line 0 search-forward "
  291.  
  292. " "From:" other-window -1 error "No more messages." search-backward forward-line 2 recenter] 11))
  293.  
  294. (defun mh-page-digest-backwards nil "\
  295. Back up displayed message to previous digested message." (interactive) (byte-code "ˋÈʈ È˜¯!Èˋ˘ È˙¨ˋ´#Ä˙²ˋ´#?Ä'˚¸!ȳ˝!)È˙¨ˋ´#È˛ˇ!È—¯!È˚¸!)Ç" [case-fold-search nil t mh-show-message-in-other-window move-to-window-line 0 beginning-of-line search-backward "
  296.  
  297. " "From:" other-window -1 error "No more messages." forward-line 2 recenter] 12))
  298.  
  299. (defun mh-page-msg (&optional arg) "\
  300. Page the displayed message forwards ARG lines or a full screen if no
  301. argument is supplied." (interactive "P") (byte-code "ˋÈ´!Ç" [arg nil scroll-other-window] 2))
  302.  
  303. (defun mh-previous-page (&optional arg) "\
  304. Page the displayed message backwards ARG lines or a full screen if no
  305. argument is supplied." (interactive "P") (byte-code "ˋÈÊ´ ÈˆÎ˜!))Ç" [arg nil mh-show-message-in-other-window ((byte-code "¹ˋ!Ç" [other-window -1] 2)) scroll-down] 3))
  306.  
  307. (defun mh-previous-undeleted-msg (&optional arg) "\
  308. Move to previous undeleted message in window." (interactive "p") (byte-code "´È˘ÉÈ˙¨!Ȳ    ´˚ $¸³˜!!Á$˝!Ä$˛!Ç" [mh-next-direction mh-good-msg-regexp nil arg t mh-show-buffer backward beginning-of-line 1 re-search-backward 0 mh-maybe-show mh-get-msg-num get-buffer delete-windows-on] 7))
  309.  
  310. (defun mh-print-msg (prefix-provided msg-or-seq) "\
  311. Print MESSAGE(s) (default: displayed message) on a line printer.
  312. If (optional) prefix argument provided, then prompt for the message sequence." (interactive (byte-code "ˆ˜¯˘ˋ
  313. #!!Á˙ˋ!CDÇ" [current-prefix-arg t mh-narrowed-to-seq reverse mh-seq-to-msgs mh-read-seq "Print" mh-get-msg-num] 7)) (byte-code "˝È  ˇ—!Áˇ±!È ÂP¼½¾àá#âã\";Â.¼ä\"Á/åç\"¼     ÂC¼è
  314. \"ÁJ¼é
  315. @#\"&Á¼êâã\"ç\";Âj¼ä\"Ákå¼     Âz¼è
  316. \"ÁÀ¼é
  317. @#\"% ÂÒë ì #ÁÞÆ ˝˝˝ì &È Â“íª#Á–î@ª#Èïðˋ#È Â´ˇñ!Á¯ˇŁ!)Ç" [current-prefix-arg t mh-narrowed-to-seq prefix-provided command msg-or-seq mh-lib mhl-formfile mh-folder-filename mh-lpr-command-format mh-current-folder mh-print-background shell-file-name nil mh-cmd-note message "printing sequence..." "printing message..." format "(scan -clear %s ; %s -nobell -clear %s %s) | %s" mapconcat (lambda (msg) (byte-code "Ç" [msg] 1)) " " mh-expand-file-name "mhl" "-form %s" "" mh-msg-filenames "Sequence from %s" "%s/%d" "%s -nobell -clear %s %s | %s" mh-exec-cmd-demon "-c" call-process mh-notate-seq 80 mh-notate mh-add-msgs-to-seq printed "printing sequence...done" "printing message...done"] 25))
  318.  
  319. (defun mh-put-msg-in-seq (prefix-provided from to) "\
  320. Add MESSAGE(s) (default: displayed message) to SEQUENCE.
  321. If (optional) prefix argument provided, then prompt for the message sequence." (interactive (byte-code "˜¯˘ˋ
  322. #!Á˙ˋ!¯¨ˆ
  323. #EÇ" [current-prefix-arg t mh-narrowed-to-seq nil mh-seq-to-msgs mh-read-seq "Add messages from" mh-get-msg-num "Add to"] 9)) (byte-code "ˆÈ˘ \"Ç" [current-prefix-arg t mh-narrowed-to-seq nil from to mh-add-msgs-to-seq] 3))
  324.  
  325. (defun mh-rescan-folder (range) "\
  326. Rescan a folder after optionally processing the outstanding commands.
  327. If (optional) prefix argument provided, prompt for the range of messages to
  328. display.  Otherwise show the entire folder." (interactive (byte-code "Â
  329. ˋ´!Á ˆCÇ" [current-prefix-arg read-string "Range [all]? " "all"] 2)) (byte-code "˜È¯ÉÈ˘
  330. \"Ç" [current-prefix-arg mh-next-direction mh-current-folder range nil forward mh-scan-folder] 3))
  331.  
  332. (defun mh-redistribute (to cc msg) "\
  333. Redistribute a letter." (interactive (byte-code "ˋ´!ˋˆ!˜¹!EÇ" [t read-string "Redist-To: " "Redist-Cc: " mh-get-msg-num] 6)) (byte-code "˙ȸËÇ" [t msg-filename msg folder mh-current-folder draft mh-redist-full-contents nil to cc mh-progs ((byte-code "˚    ! ¸³Â˚    !Á˘˘#˝˛!Èˇ—±#ȼ½\"?Ä0ˇ¾±#Èàeá˘#Èâ Èãä!ÈÂYå碲˘èéêë ìÆ    \"ë $&Álå碲˘èéíìÆ    \"ë $&Ȫ    
  334. îïðñéŁ#&ÈØ !ÈãŒ!+Ç" [msg-filename msg folder mh-current-folder draft mh-redist-full-contents nil to cc mh-progs mh-msg-filename mh-read-draft "redistribution" mh-goto-header-end 0 insert "Resent-To: " "
  335. " 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 mh-expand-file-name "send" "mhdist=1 mhaltmsg=%s mhannotate=1 %s -push %s" mh-annotate-msg "R" "-component" "Resent:" "-text" "\"%s %s\"" kill-buffer "Redistributing...done"] 30))] 1))
  336.  
  337. (defun mh-write-msg-to-file (msg file) "\
  338. Append MESSAGE to the end of a FILE." (interactive (byte-code "´¹!ˆ˜¯˘    @=    AÁ˙\"!DÇ" [t mh-last-destination mh-get-msg-num expand-file-name read-file-name "Save message in file: " write ""] 7)) (byte-code "¯È˘
  339. BÉÈ˙ !ʨ²!qÈ˚ È¸ !ȳed
  340. #))Ç" [t mh-last-destination file file-name msg nil write mh-msg-filename get-buffer-create " *mh-temp*" erase-buffer insert-file-contents append-to-file] 8))
  341.  
  342. (defun mh-search-folder (folder) "\
  343. Search FOLDER for messages matching a pattern." (interactive (byte-code "´ˆˋ#CÇ" [mh-current-folder t mh-prompt-for-folder "Search"] 4)) (byte-code "˜È¯˘!È˙¨ !Ų˚!?¸ Á³˝!È ÉÇ" [mh-current-folder t mh-searching-folder folder nil switch-to-buffer-other-window "pick-pattern" zerop buffer-size y-or-n-p "Reuse pattern? " mh-make-pick-template message ""] 8))
  344.  
  345. (defun mh-send (to cc subject) "\
  346. Compose and send a letter." (interactive "sTo: 
  347. sCc: 
  348. sSubject: ") (byte-code "˜È¯ ˘ È˙    
  349. $)Ç" [config to cc subject nil current-window-configuration delete-other-windows mh-send-sub] 7))
  350.  
  351. (defun mh-send-other-window (to cc subject) "\
  352. Compose and send a letter in another window.." (interactive "sTo: 
  353. sCc: 
  354. sSubject: ") (byte-code "¯Èˋ˘
  355. ˙ $)Ç" [pop-up-windows t to cc subject nil mh-send-sub current-window-configuration] 6))
  356.  
  357. (defun mh-send-sub (to cc subject config) "\
  358. Do the real work of composing and sending a letter.
  359. Expects the TO, CC, and SUBJECT fields as arguments.
  360. CONFIG is the window configuration before sending mail." (byte-code "¸ˋ!Ä    ³ˆ!˝˛!Èˇ—±¼½\"!Â\"¼½\"Á7±¼½\"!Â4¼½\"Á7¾à!ˆ#áâãä    &Èåˆ!ÈdbÈ˝ç!Èè é
  361.     ˆˆ
  362. &
  363. )*Ç" [folder mh-current-folder msg-num nil draft mh-user-path mh-lib to subject cc config boundp mh-get-msg-num message "Composing a message..." mh-read-draft "message" file-exists-p mh-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 ""] 25))
  364.  
  365. (defun mh-show (msg) "\
  366. Show MESSAGE (default: displayed message)." (interactive (byte-code "ˋ¹!CÇ" [t mh-get-msg-num] 2)) (byte-code "´È´ÉÈ˚¸!È ³˝!#È˛ !Èˇ È— È˛ !ȱ¼ Z!Ƚ¾!ÈÄ8à!È    >?ÄH    BÉ    )Ç" [t mh-summarize nil folder mh-current-folder msg mh-show-buffer mh-summary-height mh-bury-show-buffer mh-seen-list mh-set-mode-name "mh-e show" mh-display-msg mh-msg-filename switch-to-buffer-other-window delete-other-windows mh-show-message-in-other-window shrink-window window-height recenter (4) bury-buffer] 13))
  367.  
  368. (defun mh-sort-folder nil "\
  369. Sort the messages in the current folder by date." (interactive "") (byte-code "´Èˆ!ȘÉȯ˘!È˙¨\"ȯ²!È˚¸\"Ç" [mh-current-folder mh-next-direction nil mh-process-or-undo-commands forward message "sorting folder..." mh-exec-cmd "sortm" "sorting folder...done" mh-scan-folder "all"] 7))
  370.  
  371. (defun mh-toggle-summarize nil "\
  372. Turn the summary mode of displaying messages on or off." (interactive) (byte-code "´Èˆ˜ˋ!!Á¯ Ç" [mh-summarize t nil mh-show mh-get-msg-num mh-set-scan-mode] 4))
  373.  
  374. (defun mh-undo (prefix-provided msg-or-seq) "\
  375. Undo the deletion or refile of the specified MESSAGE(s)
  376. (default: displayed message).
  377. If (optional) prefix argument provided, then prompt for the message sequence." (interactive (byte-code "ˆ˜ˋ
  378. #Á¯ˋ!DÇ" [current-prefix-arg t mh-narrowed-to-seq mh-read-seq "Undo" mh-get-msg-num] 5)) (byte-code "˚ȸ È³ !Â7 ½˛ˇ!\"È—±#Á4¼\"ÉȽ¾ˋ#Èà±#Áb³!Âa ÂR˝áˇ!\"È—±#Á^˝â    \"Èà±#Áb˚Èã Äkä˚!Ç" [current-prefix-arg t mh-narrowed-to-seq mh-deleted-msg-regexp prefix-provided msg-or-seq mh-cmd-note mh-delete-list mh-refiled-msg-regexp mh-refile-list nil beginning-of-line looking-at mapc (lambda (msg) (byte-code "ˆ    \"ÉȘ    ¯´#Ç" [mh-delete-list msg t delq mh-remove-msg-from-seq deleted] 5)) mh-seq-to-msgs mh-notate-seq 32 delq mh-remove-msg-from-seq deleted mh-notate (lambda (msg) (byte-code "ˋ´\"Ç" [mh-refile-list mapc (lambda (dest) (byte-code "ˆ    ´#Ç" [msg dest t mh-remove-msg-from-seq] 4))] 3)) (lambda (dest) (byte-code "ˆ    ´#Ç" [msg-or-seq dest t mh-remove-msg-from-seq] 4)) mh-outstanding-commands-p mh-set-folder-modified-p] 17))
  379.  
  380. (defun mh-undo-folder nil "\
  381. Undo all commands in current folder." (interactive "") (byte-code "´ÈÅ    ˙¨! ´´´²ÉÈ˚˘!ȸ´!Á'³˝!È˛ˇ!Ç" [mh-do-not-confirm mh-delete-list nil mh-refile-list mh-seq-list mh-next-direction t yes-or-no-p "Undo all commands in folder? " forward mh-unmark-all-headers mh-set-folder-modified-p message "Commands not undone." sit-for 2] 6))
  382.  
  383. (defun mh-visit-folder (folder range config) "\
  384. Visit FOLDER and display RANGE of messages." (interactive (byte-code "ˋ´ˆ¹#˜¯!˘ EÇ" [t mh-prompt-for-folder "Visit" "+inbox" read-string "Range [all]? " current-window-configuration] 6)) (byte-code "¯È˘    ˙
  385. ¨\"²Á
  386. \"È ÉÇ" [t folder range mh-previous-window-config config nil mh-scan-folder equal "" "all"] 5))
  387.  
  388. (defun mh-widen nil "\
  389. Remove restrictions from the current folder, thereby showing all messages." (interactive "") (byte-code "ˋÈˋˆed\"Ș È¯ )ÈˋÉÇ" [buffer-read-only nil mh-narrowed-to-seq delete-region widen mh-make-folder-mode-line] 5))
  390.  
  391. (defun mh-delete-a-msg (msg) (byte-code "Ê˘ˋˋ#È˙
  392. !Ĩ²\"È BÉÈ˚¸˜#ȳ˝#È˛˜!)Ç" [msg nil mh-refiled-msg-regexp mh-delete-list t mh-cmd-note mh-goto-msg looking-at error "Message %d is refiled.  Undo refile before deleting." mh-add-msgs-to-seq deleted mh-notate 68 mh-set-folder-modified-p] 8))
  393.  
  394. (defun mh-refile-a-msg (msg destination) (byte-code "Ê˙ˋˋ#Ȩ
  395. !²˚\"Á1 >?Ä  BÉȸ ˆ#ȳ˝#È˛ˆ!)Ç" [msg nil mh-deleted-msg-regexp t destination mh-refile-list mh-cmd-note mh-goto-msg looking-at error "Message %d is deleted.  Undo delete before moving." mh-add-msgs-to-seq mh-notate 94 mh-set-folder-modified-p] 8))
  396.  
  397. (defun mh-display-msg (msg-num msg-filename show-buffer) (byte-code "¼!?Ä ½¾    \"È     à
  398. !È Ä%áp!Èâ \"?ÄÞã Èä Èå È
  399. ÂV
  400. ;ÂMçèéêë
  401. &ÁSçèéê$ÁZì˝\"ÈebÈ ÂoÆe#ÈebÁ˝íªˇ˝#Èî Èïð!)Èñˇ!ÈÉ ÈŁˇ!ÈØŒº\"òŒó    \"FÉ,Ç" [msg-filename msg-num formfile mhl-formfile clean-message-header mh-clean-message-header invisible-headers mh-invisible-headers visible-headers mh-visible-headers show-buffer mh-bury-show-buffer buffer-file-name t case-fold-search nil mode-line-buffer-identification folder 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 recenter 0 set-buffer-modified-p set-mark "{%b}  " format "%s" "/" "%d"] 24))
  402.  
  403. (defun mh-show-message-in-other-window nil (byte-code "    ˆ!È
  404. Ęp!)Ç" [buffer mh-show-buffer mh-bury-show-buffer switch-to-buffer-other-window bury-buffer] 3))
  405.  
  406. (defun mh-clean-msg-header (start invisible-headers visible-headers) (byte-code "ˋÌ
  407. bÈ˘˙ˆˋ#Ĩ²!È˚
  408. `\"ÈebÈ Â\\`dWÄY¸ È³ !ÂA˝˛!ȳˇ!Ä>˝˛!ÈÁ1ÁU—˛!ȳˇ!ÄU¸ È—˛!ÈÁEÈÁÁ±ˆˋ#ĸ È—˛!ȳˇ!Ä{¸ È—˛!ÈÁkÈÁ\\ȼ ))Ç" [case-fold-search t start nil visible-headers invisible-headers search-forward "
  409.  
  410. " backward-char 2 narrow-to-region beginning-of-line looking-at forward-line 1 "^[     ]+" mh-delete-line re-search-forward unlock-buffer] 21))
  411.  
  412. (defun mh-delete-line (lines) (byte-code "ˋ`Ê´!È`)\"Ç" [lines delete-region forward-line] 4))
  413.  
  414. (defun mh-read-draft (use initial-contents delete-contents-file) (byte-code "²˚¸ ˋ\"!ȳ˝˛ˇ \"!ÁU—± \"²±!ȼ Ä3½¾!Â0à˜!Á3áâ!È
  415. ÉÈã Èä Èå
  416. !ÄJç
  417. \"?ÄTè
  418. !Èé
  419. !)ÈÄjêë !Åj½˝ì\"!?Ä~Æ Èè!ÈÄ~é!Èíª!ÈÄÉî Èˇ Ç" [mh-draft-folder t draft-name mh-user-path nil buffer-file-name initial-contents use delete-contents-file pop-to-buffer find-file-noselect mh-new-draft-name rename-buffer format "draft-%s" buffer-name mh-expand-file-name "draft" buffer-modified-p y-or-n-p "Draft has been modified; kill anyway? " set-buffer-modified-p error "Draft preserved." clear-visited-file-modtime unlock-buffer file-exists-p equal insert-file-contents delete-file zerop buffer-size "A draft exists.  Use for %s? " erase-buffer auto-save-mode 1 save-buffer] 29))
  420.  
  421. (defun mh-new-draft-name nil (byte-code "Ê´ˆ!qȘ È¯˘¹    ˙$Ȩ`² ˚Z\")Ç" [nil mh-draft-folder get-buffer-create " *mh-temp*" erase-buffer mh-exec-cmd-output "mhpath" "new" buffer-substring mark 1] 8))
  422.  
  423. (defun mh-next-msg nil (byte-code "ˋ= ´ˆ!Á˜ˆ!Ç" [mh-next-direction forward mh-next-undeleted-msg 1 mh-previous-undeleted-msg] 3))
  424.  
  425. (defun mh-set-scan-mode nil (byte-code "˜!Ä    ¯!È˘˙!È´ÉÈ Ä¨²˚ ¸\"!Ç" [mh-show-buffer mh-summarize t mh-recenter-summary-p get-buffer delete-windows-on mh-set-mode-name "mh-e scan" recenter / window-height 2] 8))
  426.  
  427. (defun mh-maybe-show (msg) (byte-code "?Ä´    !Ç" [mh-summarize msg mh-show] 2))
  428.  
  429. (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))
  430.  
  431. (defvar mh-current-folder nil "\
  432. Name of current folder")
  433.  
  434. (defvar mh-show-buffer nil "\
  435. Buffer that displays mesage for this folder")
  436.  
  437. (defvar mh-folder-filename nil "\
  438. Full path of directory for this folder")
  439.  
  440. (defvar mh-summarize nil "\
  441. If non-nil, show scan list only")
  442.  
  443. (defvar mh-next-seq-num nil "\
  444. Index of free sequence id")
  445.  
  446. (defvar mh-delete-list nil "\
  447. list of msg numbers to delete")
  448.  
  449. (defvar mh-refile-list nil "\
  450. list of folder names in mh-seq-list")
  451.  
  452. (defvar mh-seq-list nil "\
  453. alist of (seq .msgs ) numbers")
  454.  
  455. (defvar mh-seen-list nil "\
  456. list of displayed messages")
  457.  
  458. (defvar mh-next-direction (quote forward) "\
  459. direction to move to next message")
  460.  
  461. (defvar mh-narrowed-to-seq nil "\
  462. sequence display is narrowed to")
  463.  
  464. (defvar mh-first-msg-num nil "\
  465. number of first msg in buffer")
  466.  
  467. (defvar mh-last-msg-num nil "\
  468. number of last msg in buffer")
  469.  
  470. (defun mh-make-folder (name) (byte-code "¯!È˘ È´ÉÈ˙ È¨²˚¸³\"˝˛ˇ!!—ˆ±¼½´¾´à´á´âãä´å´ç´è´&Èé ÈˆÉÈê´!Èëì!ȈÉÈÆí!Ç" [name buffer-read-only nil t buffer-offer-save switch-to-buffer kill-all-local-variables erase-buffer make-local-vars mh-current-folder mh-show-buffer format "show-%s" mh-folder-filename file-name-as-directory mh-expand-file-name mh-summarize 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 mh-folder-mode mh-set-folder-modified-p auto-save-mode -1 mh-set-mode-name "mh-e scan"] 35))
  471.  
  472. (defun make-local-vars (&rest pairs) (byte-code "Äˋ@!È@A@LÈAAÉÈÁÇ" [pairs make-variable-buffer-local] 4))
  473.  
  474. (defun mh-folder-mode nil "\
  475. Major mode for \"editing\" an MH folder scan listing.
  476. Messages can be marked for refiling and deletion.  However, both actions
  477. are deferred until you request execution with \\[mh-execute-commands].
  478. \\{mh-folder-mode-map}
  479.   A prefix argument (\\[universal-argument]) to delete, refile, list, or undo applies the action to a message sequence.
  480.  
  481. Variables controlling mh-e operation are (defaults in parentheses):
  482.  
  483.  mh-bury-show-buffer (t)
  484.     Non-nil means that the buffer used to display message is buried.
  485.     It will never be offered as the default other buffer.
  486.  
  487.  mh-clean-message-header (nil)
  488.     Non-nil means remove header lines matching the regular expression
  489.     specified in mh-invisible-headers from messages.
  490.  
  491.  mh-visible-headers (nil)
  492.     If non-nil, it contains a regexp specifying the headers that are shown in
  493.     a message if mh-clean-message-header is non-nil.  Setting this variable
  494.     overrides mh-invisible-headers.
  495.  
  496.  mh-do-not-confirm (nil)
  497.     Non-nil means do not prompt for confirmation before executing some
  498.     non-recoverable commands such as mh-kill-folder and mh-undo-folder.
  499.  
  500.  mhl-formfile (nil)
  501.     Name of format file to be used by mhl to show messages.
  502.     A value of T means use the default format file.
  503.     Nil means don't use mhl to format messages.
  504.  
  505.  mh-lpr-command-format (\"lpr -p -J '%s'\")
  506.     Format for command used to print a message on a system printer.
  507.  
  508.  mh-recenter-summary-p (nil)
  509.     If non-nil, then the scan listing is recentered when the window displaying
  510.     a messages is toggled off.
  511.  
  512.  mh-summary-height (4)
  513.     Number of lines in the summary window.
  514.  
  515.  mh-ins-buf-prefix (\">> \")
  516.     String to insert before each non-blank line of a message as it is
  517.     inserted in a letter being composed." (byte-code "´!ȈÉȘ¯!È˘˙!Ç" [mh-folder-mode-map major-mode use-local-map mh-folder-mode mh-set-mode-name "mh-e folder" run-hooks mh-folder-mode-hook] 4))
  518.  
  519. (defun mh-scan-folder (folder range) (byte-code "ˆ!?˜!Á¯!È˘!È˙
  520. !Ȩed\"²UÄ9˚
  521. ¸\"Â0³˝\"Á5³˛
  522. #Èˇ—!ȱ Ç" [folder t range get-buffer mh-make-folder mh-process-or-undo-commands switch-to-buffer mh-regenerate-headers count-lines 0 equal "all" message "Folder %s is empty" "No messages in %s, range %s" sit-for 5 mh-goto-cur-msg] 12))
  523.  
  524. (defun mh-regenerate-headers (range) (byte-code "ˋ˙ ¨²˚
  525. \"!ȸ È³˝ˋ˛ˇ—± 
  526. &Èebȼ½!Â+¾ !Á4¼à!Å4¾ !Èáâ!Èã
  527. ¯\"ÉÈä Èå Èçˋ!Ȩ²è
  528. \"!*Ç" [buffer-read-only nil folder range mh-valid-scan-line t mh-seq-list buffer-name message format "scanning %s..." 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 mh-set-folder-modified-p "scanning %s...done"] 19))
  529.  
  530. (defun mh-get-new-mail (maildrop-name) (byte-code "ˋ`¸ ³ ˝Â˛ˇ #Á˛— \"!ȱˋ!ȼÉȽ!ÈdbÈ`ÂF¾àˋ áâ!ãä å&ÁM¾àˋãä $È˝Â[˛ç #Á_˛è \"!Èéê!Èë ˚\"É    Èì ÈbÈÆí!Â÷½!Ȫ È
  531. bÈ˝îÂÏïÁÐðÂÚÁÛð#ÈˋÁ¿Æñ!‡ª È
  532. bÈ˝Ł!ÈˋÁ¿½!Ȫ ÈØ È˚)ÈŒ !,Ç" [buffer-read-only nil point-before-inc folder folder-modified-flag maildrop-name mh-next-direction mh-valid-scan-line start-of-inc mh-seq-list t buffer-name buffer-modified-p message format "inc %s -file %s..." "inc %s..." mh-unmark-all-headers forward keep-lines mh-exec-cmd-output "inc" "-file" expand-file-name "-width" window-width "-truncate" "inc %s -file %s...done" "inc %s...done" mh-delete-seq-locally cur mh-read-folder-sequences mh-notate-user-sequences looking-at "inc: no mail" mh-make-folder-mode-line "No new mail%s%s." " in " "" "inc:" "inc error" mh-goto-cur-msg mh-set-folder-modified-p] 30))
  533.  
  534. (defun mh-make-folder-mode-line (&optional annotation) (byte-code "ÊebÈ˙ˋ!ÉȨed\"ˋdbȲ˚!È˙ˋ!Éȸ³Â-¸˝\"Á.˛
  535.  
  536. ˇUÂ9—ÁK
  537. ˚VÂG¸± #ÁK¸¼\"$CÉ*)Ç" [mh-first-msg-num nil lines case-fold-search mh-last-msg-num mode-line-buffer-identification annotation mh-get-msg-num count-lines previous-line 1 format "{%%b%s}  %d msg%s" "/%s" "" 0 "s" "s (%d-%d)" " (%d)"] 13))
  538.  
  539. (defun mh-unmark-all-headers (remove-all-flags) (byte-code "ÊˋˋebÈ Â˙ ˋ¯#Á˙ˋ¯#Ä*¨²!È˚cȸ ÈÁ*)Ç" [buffer-read-only nil case-fold-search remove-all-flags mh-flagged-scan-msg-regexp t mh-cur-scan-msg-regexp re-search-forward delete-backward-char 1 " " beginning-of-line] 6))
  540.  
  541. (defun mh-goto-cur-msg nil (byte-code "˜¯!@?Å˘ˋ´#? dbÈ˙¨!Ȳ˚!Á-¸³ #È˝˛!Èˇ!)Ç" [cur-msg t nil mh-cmd-note mh-seq-to-msgs cur mh-goto-msg forward-line -1 message "No current message" mh-notate 43 recenter 0 mh-maybe-show] 8))
  542.  
  543. (defun mh-pack-folder-1 nil (byte-code "ˋˆ˜!ȯ
  544. !Ȉ˘!ÈÊ˙¨²
  545. ˚$)ȸ³!Ȉ˝!)Ç" [buffer-read-only nil mh-current-folder message "closing folder..." mh-process-or-undo-commands "packing folder..." mh-exec-cmd-quiet " *mh-temp*" "folder" "-pack" mh-regenerate-headers "all" "packing done"] 8))
  546.  
  547. (defun mh-process-or-undo-commands (folder) (byte-code "qÈ´ Â    Åˆ˜!¯!Á˘ Á˙ Ç" [folder mh-do-not-confirm mh-outstanding-commands-p y-or-n-p "Process outstanding deletes and refiles (or lose them)? " mh-process-commands mh-undo-folder mh-invalidate-show-cache] 6))
  548.  
  549. (defun mh-process-commands (folder) (byte-code "˚¸!ÈqÈ´ ij !Ä˝ \"È˛ˇ\"ÈÄ3—±¼½¾à\"#\"Èá!Èâãä´!Å=åC\"Èç È´´è´\"´ÉÈé²!Èê Èë´!È˚ì!)Ç" [folder buffer-read-only nil mh-seen-list mh-unseen-seq mh-refile-list mh-delete-list mh-seq-list mh-current-folder t message "Processing deletes and refiles..." mh-seq-to-msgs mh-undefine-sequence mapc (lambda (dest) (byte-code "ˆ    !Ę!ȯ˘˙¨B²
  550. ˚    !E\"\")Ç" [msgs dest folder mh-seq-to-msgs mh-delete-scan-msgs apply mh-exec-cmd nconc "refile" "-src" symbol-name] 10)) apply mh-exec-cmd mh-list* "rmm" format "%s" mh-delete-scan-msgs mh-define-sequence cur mh-get-msg-num "last" mh-invalidate-show-cache mh-read-folder-sequences mh-unmark-all-headers mh-notate-user-sequences mh-set-folder-modified-p "Processing deletes and refiles...done"] 17))
  551.  
  552. (defun mh-invalidate-show-cache nil (byte-code "ˆ!ÄÊqÈ´É)Ç" [mh-show-buffer buffer-file-name nil get-buffer] 3))
  553.  
  554. (defun mh-delete-scan-msgs (msgs) (byte-code "ÊebÈˋ´ˆ˜#!)Ç" [msgs flush-lines mapconcat mh-msg-search-pat "\\|"] 5))
  555.  
  556. (defun mh-set-folder-modified-p (flag) "\
  557. Mark current folder as modified or unmodified according to FLAG." (byte-code "ˋ!Ç" [flag set-buffer-modified-p] 2))
  558.  
  559. (defun mh-outstanding-commands-p nil (byte-code "Å    Ç" [mh-delete-list mh-refile-list] 1))
  560.  
  561. (defun mh-letter-mode nil "\
  562. Mode for composing letters in mh-e.
  563. When you have finished composing, type \\[mh-send-letter] to send the letter.
  564.  
  565. Variables controlling this mode (defaults in parentheses):
  566.  
  567.  mh-delete-yanked-msg-window (nil)
  568.     If non-nil, \\[mh-yank-cur-msg] will delete any windows displaying
  569.     the yanked message.
  570.  
  571.  mh-yank-from-start-of-msg (t)
  572.     If non-nil, \\[mh-yank-cur-msg] will include the entire message.
  573.     If `body', just yank the body (no header).
  574.     If nil, only the portion of the message following the point will be yanked.
  575.     If there is a region, this variable is ignored.
  576.  
  577. Upon invoking mh-letter-mode, text-mode-hook and mh-letter-mode-hook are
  578. invoked with no args, if those values are non-nil.
  579.  
  580. \\{mh-letter-mode-map}" (interactive) (byte-code "¯È˘ È˙¹!ȨPÉÈ˙ˋ!Ȩ    PÉÈ˙²!È˙˚!È˙¸!È˙³!È˝
  581. !È˛ÉÈˇ—!ȱ !ȼ½¾\"Ç" [paragraph-start paragraph-separate mh-letter-mode-map major-mode mh-letter-mode-syntax-table nil kill-all-local-variables make-local-variable "^[     ]*[-_][-_][-_]+$\\|" mh-send-args mh-annotate-char mh-sent-from-folder mh-sent-from-msg use-local-map mh-letter-mode mh-set-mode-name "mh-e letter" set-syntax-table run-hooks text-mode-hook mh-letter-mode-hook] 13))
  582.  
  583. (defun mh-to-field nil "\
  584. Move point to the end of the header field indicated by the previous
  585. keystroke.  Create the field if it does not exist.  Set the mark to the
  586. point before moving." (interactive "") (byte-code "¯È˘ È˙¨    ²\"
  587. \"A˜˚˜\"Â#¸³!?Ä ˝cÁEebÈ˛ˇ!È—±!ȸ¼!Ä;—±!ÈÁ.Ƚ¾\"cÈà±!*Ç" [target last-input-char mh-to-field-choices case-fold-search t nil expand-abbrev assoc logior 96 mh-position-on-field looking-at "[     ]" " " re-search-forward "^To:" forward-line 1 "^[     ]" format "%s 
  588. " backward-char] 12))
  589.  
  590. (defun mh-to-fcc nil "\
  591. Insert a Fcc: field in the current message, prompting for the field
  592. name with a completion list of the current folders." (interactive) (byte-code "ˋÈ´ Èʈ˜¯˘˙¹#¨ˋO\")Ç" [t nil expand-abbrev mh-insert-fields "Fcc:" mh-prompt-for-folder "Fcc" "" 1] 7))
  593.  
  594. (defun mh-insert-signature nil "\
  595. Insert the file ~/.signature at the current point." (interactive "") (byte-code "¹Èˋ´!Ç" [nil insert-file-contents "~/.signature"] 2))
  596.  
  597. (defun mh-check-whom nil "\
  598. 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))
  599.  
  600. (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: 
  601. " "To: 
  602. " "Cc: 
  603. " "Date: 
  604. " "Subject: 
  605. " "---------
  606. " mh-letter-mode use-local-map end-of-line] 10))
  607.  
  608. (defun mh-do-pick-search nil "\
  609. Find messages in the folder named in mh-searching-folder that match the
  610. qualifications in current buffer.  Put messages found in a sequence
  611. named `search'." (interactive) (byte-code "˜È³ 
  612. ˜˜˜Ê˝    !Â$    qÈ˛ˇ#ÉÁ0—    !ȱÉȲÉ)ȼ½!ÈebȾ!ÉÄ\\à    áâãBä     åçè%\"#É
  613. ÈçÉÈÁ9ȼé!ÈÂnê    
  614. \"Áqë    !Èì ÈÆáí ª\\#-Ç" [pattern-buffer searching-buffer mh-searching-folder range nil pattern new-buffer mh-first-msg-num mh-last-msg-num t msgs mh-cmd-note buffer-name get-buffer format "%d-%d" mh-make-folder "all" message "Searching..." mh-next-pick-field mh-seq-from-command search nconc "pick" list "-sequence" "search" "-list" "Searching...done" mh-scan-folder switch-to-buffer delete-other-windows mh-notate-seq 37 1] 18))
  615.  
  616. (defun mh-next-pick-field (buffer) (byte-code "qÈ´mˆÁg˙¨ˆ´#Â7²˚¸³˝˛!ˇ˛!\"!\"³˝—!ˇ—!\"±˛!È D*Ág˙¼ˆ´#Âf½˛!ȳ`d\"G¾VÄWàá\"?ÂaâDÁbˆ)Ágˆ)Ç" [buffer case-fold-search t nil component pat body re-search-forward "^\\([a-z].*\\):[     ]*\\([a-z0-9].*\\)$" format "-%s" downcase buffer-substring match-beginning 1 match-end 2 forward-line "^-*$" forward-char 0 equal "
  617. " "-search"] 16))
  618.  
  619. (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 "±!ȼ È½¾    à
  620. $È ÉÈÉÈÉÈ
  621. É    ÈáCÉ Èâ—!Ä1—JÄp—J  <ÄD @ã=?Âe Äbä @$È AÉ ÈÁGÁoä$)Ç" [draft annotate-field config mh-sent-from-folder sent-from-folder mh-sent-from-msg sent-from-msg mh-send-args send-args mh-annotate-char annotate-char mode-line-buffer-identification value to subject cc mh-compose-letter-hook pop-to-buffer mh-letter-mode make-local-vars mh-annotate-field mh-previous-window-config "{%b}" boundp lambda funcall] 10))
  622.  
  623. (defun mh-send-letter (&optional arg) "\
  624. Send the draft letter in the current buffer.
  625. If (optional) prefix argument provided, monitor delivery." (interactive "P") (byte-code "¸È³¹!È˝ È˛ˇ!Èˋ —  Â?±¼!Ƚ ÈÂ3¾à¹áâã
  626. &Á<¾à¹áâã
  627. &ÁUÂOäàãå
  628. %ÁUäàãå
  629. $ÈÄqç    è
  630. éêëìÆ!ìí!#&È?Åzªî!ÄÈï    !È ÄÈð !È˛ñ!+Ç" [t buffer-name file-name config mh-previous-window-config arg mh-send-args mh-annotate-char mh-sent-from-msg mh-sent-from-folder mh-annotate-field nil set-buffer-modified-p save-buffer message "Sending..." buffer-file-name pop-to-buffer "MH mail delivery" erase-buffer mh-exec-cmd-output "send" "-watch" "-nopush" "-nodraftfolder" mh-exec-cmd-demon "-noverbose" mh-annotate-msg "-component" "-text" format "\"%s %s\"" mh-get-field "To:" "Cc:" y-or-n-p "Kill draft buffer? " kill-buffer set-window-configuration "Sending...done"] 24))
  631.  
  632. (defun mh-insert-letter (prefix-provided folder msg) "\
  633. Insert a message from any folder into the current letter.
  634. Removes the message's headers using mh-invisible-headers.
  635. Prefixes each non-blank line with mh-ins-buf-prefix (default \">> \").
  636. If (optional) prefix argument provided, do not indent and do not delete
  637. headers.
  638. Leaves the mark before the letter and point after it." (interactive (byte-code "˜¯    ´#˘˙¨ Â˙² \"Á˚\"!EÇ" [current-prefix-arg mh-sent-from-folder nil mh-sent-from-msg mh-prompt-for-folder "Message from" read-input format "Message number%s: " " [%d]" ""] 9)) (byte-code "´È̸``\"Èe³˝\"IJˇ \"ÉÈ—±¼½¾¾!\"$È?Ä;à     #Èá !Èâ
  639. !))Ç" [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 "" format "%d" mh-exec-lib-cmd-output "mhl" "-nobell" "-noclear" mh-expand-file-name mh-clean-msg-header set-mark mh-insert-prefix-string] 11))
  640.  
  641. (defun mh-yank-cur-msg nil "\
  642. Insert the currently displayed message into the draft buffer.  Prefix each
  643. non-blank line in the message with the string in mh-ins-buf-prefix.  If a
  644. region is set in the message's buffer, then only the region will be inserted.
  645. Otherwise, the entire message will be inserted if mh-yank-from-start-of-msg is
  646. non-nil.   If this variable is nil, the portion of the message following the
  647. point will be yanked.  If mh-delete-yanked-msg-window is non-nil, any window
  648. displaying the yanked message will be deleted." (interactive) (byte-code "˚ȸ¹!ÄÄ    Âp`pqÈ Ä³!ÈqÈ˝ Â/˛`˝ \"ÁSˇ=ÂC˛Ê—±!È`)d\"ÁSÂO˛ed\"ÁS˛`d\" qȼ
  649.  
  650. \"ÈcȽ    !ȾcÈà )*Ásáâ!Ç" [mh-sent-from-folder mh-sent-from-msg to-point to-buffer mh-delete-yanked-msg-window mh-show-buffer mh-ins-str mh-yank-from-start-of-msg t mh-ins-buf-prefix nil boundp delete-windows-on mark buffer-substring body mh-goto-header-end 1 narrow-to-region mh-insert-prefix-string "
  651. " widen error "There is no current message."] 14))
  652.  
  653. (defun mh-insert-prefix-string (ins-string) (byte-code "ebÈm?ÄcÈˋ´!ÈÁÇ" [ins-string forward-line 1] 3))
  654.  
  655. (defun mh-fully-kill-draft nil "\
  656. Kill the draft message file and the draft message buffer.
  657. Use \\[kill-buffer] if you don't want to delete the draft message file." (interactive "") (byte-code "´Èˆ˜!Â*    ¯˘ !Ä˙˘ !Ȩ´!Ȳ˚ !ÈÄ&¸!)Á-³˝!Ç" [config mh-previous-window-config nil y-or-n-p "Kill draft message? " file-exists-p buffer-file-name delete-file set-buffer-modified-p kill-buffer buffer-name set-window-configuration error "Message not killed"] 11))
  658.  
  659. (defun mh-make-seq (name msgs) (byte-code "    BÇ" [name msgs] 2))
  660.  
  661. (defmacro mh-seq-name (pair) (byte-code "ˋDÇ" [pair car] 2))
  662.  
  663. (defmacro mh-seq-msgs (pair) (byte-code "ˋDÇ" [pair cdr] 2))
  664.  
  665. (defun mh-find-seq (name) (byte-code "´    \"Ç" [name mh-seq-list assoc] 3))
  666.  
  667. (defun mh-seq-to-msgs (seq) "\
  668. Return a list of the messages in SEQUENCE." (byte-code "ˋ!AÇ" [seq mh-find-seq] 2))
  669.  
  670. (defun mh-seq-containing-msg (msg) (byte-code "    ˆÄ  @A>Ä@@
  671. BÉÈAÉÈÁÈ
  672. *Ç" [l mh-seq-list seqs nil msg] 3))
  673.  
  674. (defun mh-msg-to-seq (msg) (byte-code "ˋ!@Ç" [msg mh-seq-containing-msg] 2))
  675.  
  676. (defun mh-read-seq (prompt not-empty &optional default) (byte-code "¨²˚    ¸
  677. ²³
  678. \"Á˝$˛ !\"ˇ—\"Â&±¼¯!!Á4ˇ˝\"Â1
  679. Á4½!¾ !?ÄBÄKà²á \"!È +Ç" [input prompt default mh-seq-list seq t msgs not-empty completing-read format "%s %s %s" "sequence:" "[%s] " "" mh-seq-names equal "%" mh-msg-to-seq mh-get-msg-num intern mh-seq-to-msgs error "No messages in sequence `%s'"] 14))
  680.  
  681. (defun mh-read-folder-sequences (folder define-sequences) (byte-code "ˋ
  682. Ģ !È˙¨ \"Èʲ˚¸ ³$ÈebÈ˝˛ˋ¯#Ä8ˇ—±¼½!¾½!\"!à \"BÉÈÁ)È)Ç" [seqs nil define-sequences mh-seq-list folder t mh-define-sequences mapc (lambda (seq) (byte-code "´@!Ä     BÉÇ" [seq seqs mh-folder-name] 3)) mh-exec-cmd-quiet " *mh-temp*" "mark" "-list" re-search-forward "\\(^[a-zA-Z][a-zA-Z]*\\)" mh-make-seq intern buffer-substring match-beginning 1 match-end mh-read-msg-list] 13))
  683.  
  684. (defun mh-seq-names (seq-list) (byte-code "ˋ´\"Ç" [seq-list mapcar (lambda (entry) (byte-code "ˋ@!CÇ" [entry symbol-name] 2))] 3))
  685.  
  686. (defun mh-seq-from-command (folder seq command) (byte-code "ˋˋ˜ʲËÈqÈ˚
  687. !Éȸ
  688. \"BÉÈ
  689. )+Ç" [msg nil msgs case-fold-search t command folder mh-seq-list seq ((byte-code "ˆ˜¯B\"ÈebÈ˘ @ÉÄ    
  690. BÉÈ˙¨!ÈÁ
  691. Ç" [command msg msgs apply mh-exec-cmd-quiet " *mh-temp*" mh-read-msg-list forward-line 1] 5)) nreverse mh-make-seq] 4))
  692.  
  693. (defun mh-read-msg-list nil (byte-code "ˋÊ´ È`)˘˙
  694. ˆ#Äm¨²˚¸!³¸!\"!˝˛!Â\\ˇ¸!È˘˙
  695. ˆ#Ȩ²˚¸!³¸!\"! WÄB—± #È XÄX BÉÈ ¸\\ÉÈÁC)Áh¼ !?Äh BÉ)ÈÁ    È*Ç" [msgs nil end-of-line t num num2 re-search-forward "\\([0-9]+\\)" string-to-int buffer-substring match-beginning 1 match-end looking-at "-" forward-char error "Bad message range: %d-%d" zerop] 18))
  696.  
  697. (defun mh-remove-seq (seq) (byte-code "´ˆ˜    ¯\\%È˘˙C\"Ȩ!Ç" [seq mh-cmd-note mh-map-to-seq-msgs mh-notate-if-in-one-seq 32 1 mh-undefine-sequence "all" mh-delete-seq-locally] 6))
  698.  
  699. (defun mh-delete-seq-locally (seq) (byte-code "ˆ    !˜
  700. \"É)Ç" [entry seq mh-seq-list mh-find-seq delq] 4))
  701.  
  702. (defun mh-remove-msg-from-seq (msg seq &optional internal-flag) (byte-code "¯    !Ä%˘
  703. ˙ ¨\\@$È ?IJ    
  704. C\"È˚¸
  705. A\"\")Ç" [entry seq msg mh-cmd-note internal-flag mh-find-seq mh-notate-if-in-one-seq 32 1 mh-undefine-sequence setcdr delq] 8))
  706.  
  707. (defun mh-add-msgs-to-seq (msgs seq &optional internal-flag) (byte-code "˘    !
  708. Ä ˙
  709. !Ä
  710. CÉÈ?Â#¨    
  711. \" BÉÁ/
  712. Ä/²˚
  713. A\"\"È ?ÄA¸    
  714. \"ȳ    ˝˛\\#)Ç" [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 1] 11))
  715.  
  716. (defun mh-rename-seq (seq new-name) "\
  717. Rename a SEQUENCE to have a new NAME." (interactive "SOld sequence name: 
  718. SNew name: ") (byte-code "ˆÈ˜    !¯
  719. \"Á˘˙    \"Ȩ    A\"Ȳ
  720. A\")Ç" [old-seq seq new-name nil mh-find-seq rplaca error "Sequence %s does not exists" mh-undefine-sequence mh-define-sequence] 7))
  721.  
  722. (defun mh-notate-user-sequences nil (byte-code "    Ä\"@@˜
  723. !?į
  724. ˘ ˙\\#ÈAÉ)ÈÁ)Ç" [seqs mh-seq-list name mh-cmd-note mh-internal-seq mh-notate-seq 37 1] 7))
  725.  
  726. (defun mh-internal-seq (name) (byte-code "´>Å    =ň!Ç" [name mh-unseen-seq (answered cur deleted forwarded printed) mh-folder-name] 2))
  727.  
  728. (defun mh-folder-name (name) (byte-code "9Âˋ´!!Áˆ˜¯O˘\"Ç" [name mh-folder-name symbol-name equal 0 1 "+"] 6))
  729.  
  730. (defun mh-notate-seq (seq notation offset) (byte-code "ˆ˜    
  731. $Ç" [seq notation offset mh-map-to-seq-msgs mh-notate] 5))
  732.  
  733. (defun mh-notate-if-in-one-seq (msg notation offset seq) (byte-code "¯    !
  734. @=ÄA?Ģ     #)Ç" [in-seqs msg seq notation offset mh-seq-containing-msg mh-notate] 5))
  735.  
  736. (defun mh-map-to-seq-msgs (func seq &rest args) (byte-code "ʯ    !Ä\"˘@´´#Ä˙ @ B\"ÈAÉÈÁ))Ç" [msgs seq t func args mh-seq-to-msgs mh-goto-msg apply] 7))
  737.  
  738. (defun mh-map-over-seqs (func seq-list) (byte-code "Ä´    @@@A#ÈAÉÈÁÇ" [seq-list func funcall] 5))
  739.  
  740. (defun mh-define-sequences (seq-list) (byte-code "ˋ´\"Ç" [seq-list mh-map-over-seqs mh-define-sequence] 3))
  741.  
  742. (defun mh-add-to-sequence (seq msgs) (byte-code "ˆ˜!¯˘O˙\"?Ä     Ä ¨²˚¸
  743. ³˝˛\"ˇ    &\"Ç" [seq msgs mh-current-folder equal symbol-name 0 1 "+" apply mh-exec-cmd mh-list* "mark" "-sequence" format "%s" "-add"] 12))
  744.  
  745. (defun mh-define-sequence (seq msgs) (byte-code "Ĉ˜    !¯˘O˙\"?Ä$ʨ²˚¸³
  746. ˝˛ˇ    \"—±&\")Ç" [msgs seq mh-current-folder equal symbol-name 0 1 "+" apply mh-exec-cmd-quiet mh-list* " *mh-temp*" "mark" "-sequence" format "%s" "-add" "-zero"] 14))
  747.  
  748. (defun mh-undefine-sequence (seq msgs) (byte-code "ˆ˜¯˘˙¨²    \"˚
  749. &\"Ç" [mh-current-folder seq msgs apply mh-exec-cmd mh-list* "mark" "-sequence" format "%s" "-delete"] 10))
  750.  
  751. (defun mh-copy-seq-to-point (seq location) (byte-code "´ˆ    #Ç" [seq location mh-map-to-seq-msgs mh-copy-line-to-point] 4))
  752.  
  753. (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))
  754.  
  755. (defun mh-exec-cmd (command &rest args) (byte-code "¯ËÇ" [command mh-progs nil t args ((byte-code "¯˘!È˙ È¨²˚¸    \"´ˆ´³ !%\"È˝ ˛VÄ!ˇ—!Ç" [command mh-progs nil t args switch-to-buffer-other-window " *mh-temp*" erase-buffer apply call-process mh-list* mh-expand-file-name mh-list-to-string buffer-size 0 sit-for 5] 12))] 1))
  756.  
  757. (defun mh-exec-cmd-quiet (buffer command &rest args) (byte-code ";Ä ¯!È˘ È˙¨²˚    
  758. \"ˆˆ¸ !%\"Ç" [buffer command mh-progs nil args switch-to-buffer erase-buffer apply call-process mh-list* mh-expand-file-name mh-list-to-string] 12))
  759.  
  760. (defun mh-exec-cmd-output (command display &rest args) (byte-code "˘`¹\"È˙¨²˚    
  761. \"ˆ¹ ¸!%\"ȳ Ç" [t command mh-progs nil display args push-mark apply call-process mh-list* mh-expand-file-name mh-list-to-string exchange-point-and-mark] 11))
  762.  
  763. (defun mh-exec-cmd-demon (command &rest args) (byte-code "ʯ˘!È˙ )Ȩ²˚¸ˋ³
  764. \"˝ !$\"˛ˇ\")Ç" [process nil command mh-progs args switch-to-buffer " *mh-temp*" erase-buffer apply start-process mh-list* "mh-output" expand-file-name mh-list-to-string set-process-filter mh-process-demon] 11))
  765.  
  766. (defun mh-process-demon (process output) (byte-code "ˋ´!ÈcȈ˜!Ç" [output pop-to-buffer " *mh-temp*" other-window 1] 3))
  767.  
  768. (defun mh-exec-lib-cmd-output (command &rest args) (byte-code "¯`¹\"È˘˙¨²    
  769. \"ˆ¹ˆ˚ !%\"ȸ Ç" [t command mh-lib nil args push-mark apply call-process mh-list* mh-expand-file-name mh-list-to-string exchange-point-and-mark] 11))
  770.  
  771. (defun mh-list-to-string (l) (byte-code "ˋ
  772. Äh
  773. @?Å_
  774. @9˜
  775. @!BÉÁ_¯
  776. @!Â/˘
  777. @!BÉÁ_˙
  778. @¨\"Å_
  779. @;ÂF
  780. @BÉÁ_
  781. @<ÂZ²˚¸
  782. @!!\"ÉÁ_³˝
  783. @\"È
  784. AÉÈÁÈ˚!)Ç" [new-list nil l t symbol-name numberp int-to-string equal "" nconc nreverse mh-list-to-string error "Bad argument %s"] 11))
  785.  
  786. (defun mh-annotate-msg (msg buffer note &rest args) (byte-code "¯˘˙¨    
  787. $\"ÈÊqÈ    9²     ˚\\#Á$¸     ˚\\#)Ç" [buffer msg args note mh-cmd-note apply mh-exec-cmd mh-list* "anno" mh-notate-seq 1 mh-notate] 8))
  788.  
  789. (defun mh-notate (msg notation offset) (byte-code "Ê˙ˋˋ#Ä\"ˆ¨ ² È`\\bÈ˚¸!Ècȳ !*)Ç" [msg t buffer-read-only nil folder-modified-flag offset notation mh-goto-msg buffer-modified-p beginning-of-line delete-char 1 mh-set-folder-modified-p] 6))
  790.  
  791. (defun mh-prompt-for-folder (prompt default can-create) (byte-code "˙¨²˚    \"¸Á˙³    \"#˜ ?Ä˝ ÉÈ˛ ˜˜ˇ%ÉÄ7²
  792. ˚\"Ä7²    ˚\"Ä?˜ÈÁ È²
  793. ˚\"ÅK²
  794. ˇ\"ÂT    ÉÁe²
  795. —±Oˇ\"?Äe˙¼
  796. \"ÉȽ¾
  797. !!?Äwà˙á
  798. \"!¡âã
  799. \"Èä嘘˜¾
  800. !%Èâç
  801. \"È
  802. C BÉÈ
  803. ±˜OC BÉÁˆÂ«è˚!Áˆé
  804. \"?Ĉ
  805. C BÉÈ
  806. ±˜OC BÉ)È
  807. *Ç" [prompt default name mh-folder-list nil new-file-p t format "%s folder%s" equal "" "? " " [%s]? " mh-make-folder-list completing-read "+" 0 1 "+%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 assoc] 24))
  808.  
  809. (defun mh-make-folder-list nil "\
  810. Return a list of the user's folders.
  811. Result is in a form suitable for completing read." (interactive) (byte-code "´È˘˙!ȨËÇ" [mh-recursive-folders list nil start t folder message "Collecting folder names..." ((byte-code "˘˙¨²Â ˚Á¸$ÈebÈ´m?Ä7`³˝´˜#È˛ `ˇZ\"—±\"C    BÉ))ÈÁȼ½!È    )Ç" [mh-recursive-folders list nil start t folder mh-exec-cmd-quiet " *mh-temp*" "folders" "-fast" "-recurse" "-norecurse" search-forward "
  812. " buffer-substring 1 format "+%s" message "Collecting folder names...done"] 7))] 2))
  813.  
  814. (defun mh-remove-folder-from-folder-list (folder) (byte-code "ˆ˜    ¯´O\"\"ÉÇ" [mh-folder-list folder nil delq assoc 1] 5))
  815.  
  816. (defun mh-get-msg-num (error-if-no-message) (byte-code "ʘ È¯!¢˙¨²!˚²!\"!Á\"    Â!¸³!Á\"ˆ)Ç" [mh-msg-number-regexp error-if-no-message t nil beginning-of-line looking-at string-to-int buffer-substring match-beginning 1 match-end error "Cursor not pointing to message"] 8))
  817.  
  818. (defun mh-msg-search-pat (n) (byte-code "´    \"Ç" [mh-msg-search-regexp n format] 3))
  819.  
  820. (defun mh-msg-filename (msg) (byte-code "´ˆ!    \"Ç" [msg mh-folder-filename mh-expand-file-name int-to-string] 4))
  821.  
  822. (defun mh-msg-filenames (msgs folder) (byte-code "    ˆ˜
  823. ¯#)Ç" [mh-folder-filename folder msgs mapconcat (lambda (msg) (byte-code "ˋ!Ç" [msg mh-msg-filename] 2)) " "] 4))
  824.  
  825. (defun mh-find-path nil (byte-code "¯ËÇ" [profile mh-draft-folder nil mh-user-path mh-unseen-seq ((byte-code "¯˘!Å˙¨!?IJ˚!ȸ³!È˝ È˛!Èˇ—!Éȱ    ¼\"Â1´ÉÁB±    ½¾Oà\"?ÄBáâ    \"ÉÈˇã!Éȱ ¼\"ÄSäÉÈåç çè!\"!ÉÈ    Äi¨é    !!?Äo²ê!Èˇë!Éȱ ¼\"ÂÂìÉÁÈÆ !É)Ç" [profile mh-draft-folder nil mh-user-path mh-unseen-seq getenv "MH" "~/.mh_profile" file-exists-p error "Cannot find ~/.mh_profile" switch-to-buffer " *mh-temp*" erase-buffer insert-file-contents mh-get-field "Draft-Folder:" equal "" 0 1 "+" format "+%s" "Path:" "Mail" file-name-as-directory expand-file-name "~" mh-expand-file-name "Draft folder does not exist.  Create it and try again." "Unseen-Sequence:" unseen intern] 23))] 1))
  826.  
  827. (defun mh-expand-file-name (filename &optional default) "\
  828. Just like expand-file-name, but also handles MH folder names.
  829. Assumes that any filename that starts with '+' is a folder name." (byte-code "ˆ˜¯O˘\"Â˙¯¨O    \"Á˙
  830. \"Ç" [filename mh-user-path default string-equal 0 1 "+" expand-file-name nil] 5))
  831.  
  832. (defun mh-get-field (field) (byte-code "ˋebȯ
  833. ˆˋ#?¢ÁU˙¨!¢ÁU²˚ˆˋ#ȸ³˝!˛˝!\"`ˇ È˙—!Ä=ˇ˝!ÈÁ0ȱ˝!È` XÂL
  834. ÁT¼½
  835. ¸ `\"#*)Ç" [case-fold-search t field nil end-of-match search-forward "" looking-at "[     ]*$" re-search-forward "[     ]*\\([^     
  836. ].*\\)$" buffer-substring match-beginning 1 match-end forward-line "[     ]" backward-char format "%s%s"] 16))
  837.  
  838. (defun mh-insert-fields (&rest name-values) (byte-code "ˋ
  839. ÄC
  840. @
  841. A@˘ ˙\"?Ä8ebȨ²˚ \"¯ˋ#?Â1¸³!È˝ ˛ ˇ$Á8— È˝˛ \"È
  842. AAÉ*ÈÁ)Ç" [case-fold-search t name-values field-name value nil equal "" re-search-forward format "^%s" mh-goto-header-end 0 insert " " "
  843. " end-of-line] 10))
  844.  
  845. (defun mh-position-on-field (field set-mark) (byte-code "ˋ
  846. į ÈebÈ˘˙!Ȩ²˚ \"˜ˋ#Â\"¸ ÈˋÁ#˜)Ç" [case-fold-search t set-mark field nil push-mark mh-goto-header-end 0 re-search-backward format "^%s" end-of-line] 7))
  847.  
  848. (defun mh-goto-header-end (arg) (byte-code "´ˆ¹¹#Ä ˜    !Ç" [nil arg re-search-forward "^$\\|^-+$" forward-line] 4))
  849.  
  850. (suppress-keymap mh-folder-mode-map)
  851.  
  852. (define-key mh-folder-mode-map "q" (quote mh-restore-window-config))
  853.  
  854. (define-key mh-folder-mode-map "b" (quote mh-restore-window-config))
  855.  
  856. (define-key mh-folder-mode-map "?" (quote mh-msg-is-in-seq))
  857.  
  858. (define-key mh-folder-mode-map "%" (quote mh-put-msg-in-seq))
  859.  
  860. (define-key mh-folder-mode-map "a" (quote mh-edit-again))
  861.  
  862. (define-key mh-folder-mode-map "%" (quote mh-delete-msg-from-seq))
  863.  
  864. (define-key mh-folder-mode-map "n" (quote mh-narrow-to-seq))
  865.  
  866. (define-key mh-folder-mode-map "w" (quote mh-widen))
  867.  
  868. (define-key mh-folder-mode-map "b" (quote mh-burst-digest))
  869.  
  870. (define-key mh-folder-mode-map "u" (quote mh-undo-folder))
  871.  
  872. (define-key mh-folder-mode-map " " (quote mh-page-digest))
  873.  
  874. (define-key mh-folder-mode-map "" (quote mh-page-digest-backwards))
  875.  
  876. (define-key mh-folder-mode-map "e" (quote mh-extract-rejected-mail))
  877.  
  878. (define-key mh-folder-mode-map "f" (quote mh-visit-folder))
  879.  
  880. (define-key mh-folder-mode-map "k" (quote mh-kill-folder))
  881.  
  882. (define-key mh-folder-mode-map "l" (quote mh-list-folders))
  883.  
  884. (define-key mh-folder-mode-map "p" (quote mh-pack-folder))
  885.  
  886. (define-key mh-folder-mode-map "s" (quote mh-search-folder))
  887.  
  888. (define-key mh-folder-mode-map "r" (quote mh-rescan-folder))
  889.  
  890. (define-key mh-folder-mode-map "l" (quote mh-print-msg))
  891.  
  892. (define-key mh-folder-mode-map "t" (quote mh-toggle-summarize))
  893.  
  894. (define-key mh-folder-mode-map "c" (quote mh-copy-msg))
  895.  
  896. (define-key mh-folder-mode-map ">" (quote mh-write-msg-to-file))
  897.  
  898. (define-key mh-folder-mode-map "i" (quote mh-inc-folder))
  899.  
  900. (define-key mh-folder-mode-map "x" (quote mh-execute-commands))
  901.  
  902. (define-key mh-folder-mode-map "e" (quote mh-execute-commands))
  903.  
  904. (define-key mh-folder-mode-map "r" (quote mh-redistribute))
  905.  
  906. (define-key mh-folder-mode-map "f" (quote mh-forward))
  907.  
  908. (define-key mh-folder-mode-map "s" (quote mh-send))
  909.  
  910. (define-key mh-folder-mode-map "m" (quote mh-send))
  911.  
  912. (define-key mh-folder-mode-map "a" (quote mh-reply))
  913.  
  914. (define-key mh-folder-mode-map "j" (quote mh-goto-msg))
  915.  
  916. (define-key mh-folder-mode-map "g" (quote mh-goto-msg))
  917.  
  918. (define-key mh-folder-mode-map "" (quote mh-previous-page))
  919.  
  920. (define-key mh-folder-mode-map " " (quote mh-page-msg))
  921.  
  922. (define-key mh-folder-mode-map "." (quote mh-show))
  923.  
  924. (define-key mh-folder-mode-map "u" (quote mh-undo))
  925.  
  926. (define-key mh-folder-mode-map "!" (quote mh-refile-or-write-again))
  927.  
  928. (define-key mh-folder-mode-map "^" (quote mh-refile-msg))
  929.  
  930. (define-key mh-folder-mode-map "d" (quote mh-delete-msg))
  931.  
  932. (define-key mh-folder-mode-map "p" (quote mh-previous-undeleted-msg))
  933.  
  934. (define-key mh-folder-mode-map "n" (quote mh-next-undeleted-msg))
  935.  
  936. (define-key mh-letter-mode-map "" (quote mh-to-field))
  937.  
  938. (define-key mh-letter-mode-map "" (quote mh-to-field))
  939.  
  940. (define-key mh-letter-mode-map "" (quote mh-to-field))
  941.  
  942. (define-key mh-letter-mode-map "" (quote mh-to-field))
  943.  
  944. (define-key mh-letter-mode-map "" (quote mh-to-field))
  945.  
  946. (define-key mh-letter-mode-map "b" (quote mh-to-field))
  947.  
  948. (define-key mh-letter-mode-map "c" (quote mh-to-field))
  949.  
  950. (define-key mh-letter-mode-map "f" (quote mh-to-field))
  951.  
  952. (define-key mh-letter-mode-map "s" (quote mh-to-field))
  953.  
  954. (define-key mh-letter-mode-map "t" (quote mh-to-field))
  955.  
  956. (define-key mh-letter-mode-map "" (quote mh-fully-kill-draft))
  957.  
  958. (define-key mh-letter-mode-map "" (quote mh-check-whom))
  959.  
  960. (define-key mh-letter-mode-map "    " (quote mh-insert-letter))
  961.  
  962. (define-key mh-letter-mode-map "" (quote mh-yank-cur-msg))
  963.  
  964. (define-key mh-letter-mode-map "" (quote mh-insert-signature))
  965.  
  966. (define-key mh-letter-mode-map "" (quote mh-send-letter))
  967.  
  968. (define-key mh-pick-mode-map "" (quote mh-do-pick-search))
  969.  
  970. (define-key mh-pick-mode-map "" (quote mh-to-field))
  971.  
  972. (define-key mh-pick-mode-map "" (quote mh-to-field))
  973.  
  974. (define-key mh-pick-mode-map "" (quote mh-to-field))
  975.  
  976. (define-key mh-pick-mode-map "" (quote mh-to-field))
  977.  
  978. (define-key mh-pick-mode-map "" (quote mh-to-field))
  979.  
  980. (define-key mh-pick-mode-map "b" (quote mh-to-field))
  981.  
  982. (define-key mh-pick-mode-map "c" (quote mh-to-field))
  983.  
  984. (define-key mh-pick-mode-map "f" (quote mh-to-field))
  985.  
  986. (define-key mh-pick-mode-map "s" (quote mh-to-field))
  987.  
  988. (define-key mh-pick-mode-map "t" (quote mh-to-field))
  989.  
  990. (define-key mh-pick-mode-map "" (quote mh-check-whom))
  991.