|
|
1.1 ! root 1: ;; "RMAIL" mail reader for Emacs. ! 2: ;; Copyright (C) 1985 Richard M. Stallman. ! 3: ! 4: ;; This file is part of GNU Emacs. ! 5: ! 6: ;; GNU Emacs is distributed in the hope that it will be useful, ! 7: ;; but WITHOUT ANY WARRANTY. No author or distributor ! 8: ;; accepts responsibility to anyone for the consequences of using it ! 9: ;; or for whether it serves any particular purpose or works at all, ! 10: ;; unless he says so in writing. Refer to the GNU Emacs General Public ! 11: ;; License for full details. ! 12: ! 13: ;; Everyone is granted permission to copy, modify and redistribute ! 14: ;; GNU Emacs, but only under the conditions described in the ! 15: ;; GNU Emacs General Public License. A copy of this license is ! 16: ;; supposed to have been given to you along with GNU Emacs so you ! 17: ;; can know your rights and responsibilities. It should be in a ! 18: ;; file named COPYING. Among other things, the copyright notice ! 19: ;; and this notice must be preserved on all copies. ! 20: ! 21: ! 22: (defun undigestify-rmail-message () ! 23: "Break up a digest message into its constituent messages. ! 24: Leaves original message, deleted, before the undigestified messages." ! 25: (interactive) ! 26: (widen) ! 27: (let ((buffer-read-only nil) ! 28: (msg-string (buffer-substring (rmail-msgbeg rmail-current-message) ! 29: (rmail-msgend rmail-current-message)))) ! 30: (goto-char (rmail-msgend rmail-current-message)) ! 31: (narrow-to-region (point) (point)) ! 32: (insert msg-string) ! 33: (narrow-to-region (point-min) (1- (point-max)))) ! 34: (let ((error_ t) ! 35: (buffer-read-only nil)) ! 36: (unwind-protect ! 37: (progn ! 38: (save-restriction ! 39: (goto-char (point-min)) ! 40: (delete-region (point-min) ! 41: (progn (search-forward "\n*** EOOH ***\n") ! 42: (point))) ! 43: (insert "\^_\^L\n0,unseen,,\n*** EOOH ***\n") ! 44: (narrow-to-region (point) ! 45: (point-max)) ! 46: (let* ((fill-prefix "") ! 47: (case-fold-search t) ! 48: (digest-name ! 49: (mail-strip-quoted-names ! 50: (or (save-restriction ! 51: (search-forward "\n\n") ! 52: (narrow-to-region (point-min) (point)) ! 53: (goto-char (point-max)) ! 54: (or (mail-fetch-field "Reply-To") ! 55: (mail-fetch-field "To"))) ! 56: (error "Message is not a digest"))))) ! 57: (save-excursion ! 58: (goto-char (point-max)) ! 59: (skip-chars-backward " \t\n") ! 60: (forward-line -1) ! 61: (if (not (looking-at ! 62: (concat "End of.*Digest.*\n" ! 63: (regexp-quote "*********") "*$"))) ! 64: (error "Message is not a digest"))) ! 65: (re-search-forward (concat "^" (make-string 65 ?-) "-*\n*")) ! 66: (replace-match "\^_\^L\n0,unseen,,\n*** EOOH ***\n") ! 67: (save-restriction ! 68: (narrow-to-region (point) ! 69: (progn (search-forward "\n\n") ! 70: (point))) ! 71: (if (mail-fetch-field "To") nil ! 72: (goto-char (point-min)) ! 73: (insert "To: " digest-name "\n"))) ! 74: (while (re-search-forward ! 75: (concat "\n\n" (make-string 27 ?-) ! 76: "-?-?-?-?-?-?\n*") ! 77: nil t) ! 78: (replace-match "\n\n\^_\^L\n0,unseen,,\n*** EOOH ***\n") ! 79: (save-restriction ! 80: (if (looking-at "End ") ! 81: (insert "To: " digest-name "\n\n") ! 82: (narrow-to-region (point) ! 83: (progn (search-forward "\n\n" ! 84: nil 'move) ! 85: (point)))) ! 86: (if (mail-fetch-field "To") nil ! 87: (goto-char (point-min)) ! 88: (insert "To: " digest-name "\n")))))) ! 89: (setq error_ nil) ! 90: (message "Message successfully undigestified") ! 91: (let ((n rmail-current-message)) ! 92: (rmail-forget-messages) ! 93: (rmail-show-message n) ! 94: (rmail-delete-forward))) ! 95: (cond (error_ ! 96: (delete-region (point-min) (point-max)) ! 97: (rmail-show-message rmail-current-message)))))) ! 98:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.