Added all of the MH sources, including RCS files, in
[mmh] / docs / historical / mh-6.8.5 / miscellany / mhe / mh-send.ml
1 ;  This autoloaded file implements the "m" command of mhe. We call "comp" to
2 ;  compose the message into buffer "draft", and then when we are ready to
3 ;  send it we call "send" to do the evil deed.
4 (defun 
5     (&mh-send actn exfl sm
6         (save-window-excursion 
7             (&mh-save-killbuffer)
8             (message "Composing a message...") (sit-for 0)
9             (error-occured 
10                 (unlink-file (concat mh-path "/draft")))
11             (pop-to-buffer (concat "+" mh-folder))
12             (setq sm mode-line-format)
13             (delete-other-windows)
14             (pop-to-buffer "draft") (erase-buffer)
15             (if (file-exists
16                     (concat mh-path "/components"))
17                 (insert-file (concat mh-path "/components"))
18                 (insert-file (concat mh-progs "/components"))
19             )
20             (write-named-file (concat mh-path "/draft"))
21             (local-bind-to-key "exit-emacs" "\\18\\ 3")
22             (mail-mode) (header-line-position)
23             (sit-for 0) (setq exfl 0)
24             (while (= exfl 0)
25                    (error-occured
26                        (save-window-excursion
27                            (pop-to-buffer (concat "+" mh-folder))
28                            (setq mode-line-format
29                                  "{%b}  ^X^C exits to top level  %M")
30                            (pop-to-buffer "draft")
31                            (setq mode-line-format
32                                  (concat "{%b}  %[%p of "
33                                          mh-path "/draft%]      "
34                                          "(^X^C to exit)  %M"))
35                            (&mh-restore-killbuffer)
36                            (recursive-edit)
37                            (&mh-save-killbuffer)
38                            (setq mode-line-format
39                                  (concat "{%b}  %[%p of "
40                                          mh-path "/draft%] %M"))
41                            (pop-to-buffer (concat "+" mh-folder))
42                            (setq mode-line-format " ")
43                        )
44                    )
45                    (setq actn (get-response "Ready to send. Action? (m, q, e, or ?) " "mMqQeE\\ 3
46                                   "m: mail it, q: quit, e: resume editing, ?: this msg."))
47                    (if (= actn 'm')
48                        (progn (message "Sending...") (sit-for 0)
49                               (write-current-file)
50                               (setq buffer-is-modified 0)
51                               (send-to-shell 
52                                   (concat mh-progs "/send -noverbose "
53                                           mh-path "/draft"
54                                   ))
55                               (setq exfl 1)
56                        )
57                        (= actn 'q')
58                        (progn
59                              (&mh-restore-killbuffer)
60                              (pop-to-buffer (concat "+" mh-folder))
61                              (delete-other-windows)
62                              (setq mode-line-format sm)
63                              (error-message "Message not sent; its text remains in buffer 'draft'")
64                        )
65                    )
66             )
67         )
68         (&mh-restore-killbuffer)
69         (pop-to-buffer (concat "+" mh-folder)) (delete-other-windows)
70         (setq mode-line-format sm)
71         (pop-to-buffer "draft") (previous-window)
72     )
73 )