0
|
1 ;;!emacs
|
|
2 ;;
|
|
3 ;; FILE: hmh.el
|
|
4 ;; SUMMARY: Support for Hyperbole buttons in mail reader: Mh.
|
|
5 ;; USAGE: GNU Emacs Lisp Library
|
|
6 ;; KEYWORDS: hypermedia, mail
|
|
7 ;;
|
|
8 ;; AUTHOR: Bob Weiner
|
70
|
9 ;; ORG: Brown U.
|
0
|
10 ;;
|
|
11 ;; ORIG-DATE: 21-May-91 at 17:06:36
|
70
|
12 ;; LAST-MOD: 19-May-95 at 15:09:30 by Bob Weiner
|
0
|
13 ;;
|
|
14 ;; This file is part of Hyperbole.
|
|
15 ;; Available for use and distribution under the same terms as GNU Emacs.
|
|
16 ;;
|
70
|
17 ;; Copyright (C) 1991-1995, Free Software Foundation, Inc.
|
0
|
18 ;; Developed with support from Motorola Inc.
|
|
19 ;;
|
|
20 ;; DESCRIPTION:
|
|
21 ;;
|
|
22 ;; Automatically configured for use in "hsite.el".
|
|
23 ;; If hsite loading fails prior to initializing Hyperbole Mh support,
|
|
24 ;;
|
70
|
25 ;; {M-x Mh-init RTN}
|
0
|
26 ;;
|
|
27 ;; will do it.
|
|
28 ;;
|
|
29 ;;
|
|
30 ;; Have not yet overloaded 'mh-yank-cur-msg' to yank and hide
|
|
31 ;; button data from mail reader buffer.
|
|
32 ;; Have not yet overloaded 'mh-insert-letter' to highlight buttons
|
|
33 ;; and to merge its button data.
|
|
34 ;;
|
|
35 ;; DESCRIP-END.
|
|
36
|
|
37 ;;; ************************************************************************
|
|
38 ;;; Other required Elisp libraries
|
|
39 ;;; ************************************************************************
|
|
40 (require 'hmail)
|
|
41 (load "hsmail")
|
|
42 (require 'mh-e)
|
|
43
|
|
44 ;;; ************************************************************************
|
|
45 ;;; Public variables
|
|
46 ;;; ************************************************************************
|
|
47
|
|
48
|
|
49 ;;; ************************************************************************
|
|
50 ;;; Public functions
|
|
51 ;;; ************************************************************************
|
|
52
|
|
53 (defun Mh-init ()
|
|
54 "Initializes Hyperbole support for Mh mail reading."
|
|
55 (interactive)
|
|
56 (setq hmail:composer 'mh-letter-mode
|
|
57 hmail:lister 'mh-folder-mode
|
|
58 hmail:modifier 'mh-letter-mode
|
|
59 hmail:reader 'mh-show-mode)
|
|
60 (var:append 'mh-show-hook '(hmail:msg-narrow Mh-hbut-highlight))
|
|
61 ;;
|
|
62 ;;
|
|
63 ;; Setup public abstract interface to Hyperbole defined mail
|
|
64 ;; reader-specific functions used in "hmail.el".
|
|
65 ;;
|
|
66 (rmail:init)
|
|
67 ;;
|
|
68 ;; Setup private abstract interface to mail reader-specific functions
|
|
69 ;; used in "hmail.el".
|
|
70 ;;
|
|
71 (fset 'rmail:get-new 'mh-inc-folder)
|
|
72 (fset 'rmail:msg-forward 'mh-redistribute)
|
|
73 (fset 'rmail:summ-msg-to 'mh-goto-msg)
|
|
74 (fset 'rmail:summ-new 'mh-rescan-folder)
|
|
75 (if (interactive-p)
|
|
76 (message "Hyperbole MH mail reader support initialized."))
|
|
77 )
|
|
78
|
|
79 (defun Mh-hbut-highlight ()
|
|
80 "Highlight any Hyperbole buttons in buffer for which display support exists."
|
|
81 (if (fboundp 'hproperty:but-create) (hproperty:but-create)))
|
|
82
|
|
83 (defun Mh-msg-hdrs-full (toggled)
|
|
84 "If TOGGLED is non-nil, toggle full/hidden headers, else show full headers.
|
|
85 For now, a no-op."
|
|
86 )
|
|
87
|
|
88 (defun Mh-msg-narrow ()
|
|
89 "Narrows mail reader buffer to current message.
|
|
90 This includes Hyperbole button data."
|
|
91 (Mh-msg-widen))
|
|
92
|
|
93 (defun Mh-msg-next () (mh-next-undeleted-msg 1))
|
|
94
|
|
95 (defun Mh-msg-num ()
|
|
96 "Returns number of mail message that point is within."
|
|
97 (interactive)
|
|
98 (mh-get-msg-num nil))
|
|
99
|
|
100 (defun Mh-msg-prev () (mh-previous-undeleted-msg 1))
|
|
101
|
|
102 (defun Mh-msg-to-p (mail-msg-id mail-file)
|
|
103 "Sets current buffer to start of msg with MAIL-MSG-ID in MAIL-FILE.
|
|
104 Returns t if successful, else nil."
|
|
105 (if (not (file-readable-p mail-file))
|
|
106 nil
|
|
107 (find-file mail-file)
|
|
108 (hmail:msg-narrow)
|
|
109 (goto-char 1)
|
|
110 t))
|
|
111
|
|
112 (defun Mh-msg-widen ()
|
|
113 "Widens buffer to full current message including Hyperbole button data."
|
|
114 (Mh-to) (widen))
|
|
115
|
|
116 (defun Mh-to ()
|
|
117 "Sets current buffer to a mail reader buffer."
|
|
118 (and (eq major-mode 'Mh-folder-mode)
|
|
119 (set-buffer (Mh-get-buffer Mh-show-buffer))))
|
|
120
|
|
121 (defun Mh-Summ-delete () (mh-delete-msg (mh-get-msg-num t)))
|
|
122
|
|
123 (fset 'Mh-Summ-expunge 'mh-execute-commands)
|
|
124
|
|
125 (defun Mh-Summ-goto ()
|
|
126 (let ((msg-num (mh-get-msg-num nil)))
|
|
127 (mh-goto-msg msg-num nil t)
|
|
128 (mh-show msg-num)))
|
|
129
|
|
130 (defun Mh-Summ-to ()
|
|
131 "Sets current buffer to a mail listing buffer."
|
|
132 (let ((summ-buf))
|
|
133 (save-excursion
|
|
134 (mapcar (function
|
|
135 (lambda (window)
|
|
136 (if summ-buf
|
|
137 nil
|
|
138 (set-buffer (window-buffer window))
|
|
139 (if (eq major-mode 'Mh-folder-mode)
|
|
140 (setq summ-buf (current-buffer))))))
|
|
141 (hypb:window-list 'no-mini)))
|
|
142 (if summ-buf (set-buffer summ-buf))))
|
|
143
|
|
144 (defun Mh-Summ-undelete-all ()
|
|
145 (message
|
|
146 "(Mh-Summ-undelete-all: I don't think mh-e has an undelete operator."))
|
|
147
|
|
148 ;;; ************************************************************************
|
|
149 ;;; Private functions
|
|
150 ;;; ************************************************************************
|
|
151 ;;;
|
|
152 ;;; Overlay version of this function from mh-e.el to run mh-show-hook at end.
|
|
153 ;;; This hook may already be run, depending on the version of mh-e you are
|
|
154 ;;; running, but running it twice shouldn't do any harm. Comment this out if
|
|
155 ;;; you know that your mh-e.el already runs the hook.
|
|
156 (hypb:function-overload 'mh-display-msg nil
|
|
157 '(run-hooks 'mh-show-hook))
|
|
158
|
|
159 ;;;
|
|
160 ;;; Overlay version of 'mh-regenerate-headers' to highlight Hyperbole
|
|
161 ;;; buttons when possible.
|
|
162 ;;;
|
|
163 (hypb:function-overload 'mh-regenerate-headers nil
|
|
164 '(if (fboundp 'hproperty:but-create)
|
|
165 (hproperty:but-create)))
|
|
166
|
|
167 ;;;
|
|
168 ;;; Set 'mh-send-letter' hook to widen to include button data before sending.
|
|
169 ;;;
|
|
170 (var:append 'mh-before-send-letter-hook '(widen))
|
|
171
|
|
172 ;;; ************************************************************************
|
|
173 ;;; Private variables
|
|
174 ;;; ************************************************************************
|
|
175
|
|
176 (provide 'hmh)
|
|
177
|