
(defvar hnews:composer nil "\
Major mode for composing USENET news to be sent with Hyperbole buttons.")

(defvar hnews:lister nil "\
Major mode for listing USENET news header summaries with Hyperbole buttons.")

(defvar hnews:reader nil "\
Major mode for reading USENET news with Hyperbole buttons.")

(defvar hmail:composer nil "\
Major mode for composing mail to be sent with Hyperbole buttons.")

(defvar hmail:lister nil "\
Major mode for listing mail header summaries with Hyperbole buttons.")

(defvar hmail:modifier nil "\
Major mode for editing received mail with Hyperbole buttons.")

(defvar hmail:reader nil "\
Major mode for reading mail with Hyperbole buttons.")

(defun hmail:hbdata-start (&optional msg-start msg-end) "\
Returns point immediately before any Hyperbole button data in current msg.
Returns message end point when no button data is found.
Has side-effect of widening buffer. 
Message's displayable part begins at optional MSG-START and ends at or before
MSG-END." (byte-code "Ä ˆ†
 d‰ˆŠbˆÅ	
Ã#ƒ `S‚ )‡" [msg-end hmail:hbdata-sep msg-start t widen search-backward] 5))

(defun hmail:hbdata-to-p nil "\
Moves point to Hyperbole but data start in an e-mail msg.
Returns t if button data is found." (byte-code "	
D>ƒ É ˆÃ‚+ Ê † Ë ƒ Ã‚+ E>…+ Ì ˆÃ…? dbˆÍÈÃ#…? ÎÏ!ˆÃ‡" [major-mode hmail:reader hmail:modifier t hmail:composer hnews:reader hnews:composer hmail:hbdata-sep nil rmail:msg-narrow hmail:lister-p hnews:lister-p widen search-backward forward-line 1] 8))

(defun hmail:browser-p nil "\
Returns t iff current major mode helps browse received e-mail messages." (memq major-mode (list hmail:reader hmail:lister)))

(defun hmail:composing-dir (key-src) "\
If button KEY-SRC is a mail/news composure buffer, returns composure directory, else nil." (byte-code "ŠÅ!… qˆ	
=† 	=… )‡" [key-src major-mode hmail:composer hnews:composer default-directory bufferp] 3))

(defun hmail:editor-p nil "\
Returns t iff current major mode edits Hyperbole e-mail/news messages." (memq major-mode (list hmail:composer hnews:composer hmail:modifier)))

(defun hmail:init (class-prefix func-suffix-list) "\
Sets up CLASS-PREFIX functions with aliases for FUNC-SUFFIX-LIST.
'hmail:reader' should be set appropriately before this is called." (byte-code "?ƒ	 Á‚ Æ!Ç
ÈÉÊ
\"O!ÁËÌ\"+‡" [hmail:reader nil reader-name reader-prefix hmail-func func-suffix-list symbol-name capitalize 0 string-match "-" mapcar (lambda (func-suffix) (setq hmail-func (hypb:replace-match-string "Summ-" func-suffix "")) (fset (intern (concat class-prefix hmail-func)) (intern (concat reader-prefix "-" func-suffix))))] 7))

(defun hmail:lister-p nil "\
Returns t iff current major mode is a Hyperbole e-mail lister mode." (eq major-mode hmail:lister))

(defun hnews:lister-p nil "\
Returns t iff current major mode is a Hyperbole news summary lister mode." (eq major-mode hnews:lister))

(defun hmail:mode-is-p nil "\
Returns current major mode if a Hyperbole e-mail mode, else nil." (byte-code "È	
&>@‡" [major-mode hmail:reader hmail:composer hmail:lister hmail:modifier hnews:reader hnews:composer hnews:lister list] 9))

(defun hmail:msg-narrow (&optional msg-start msg-end) "\
Narrows buffer to displayable part of current message.
Its displayable part begins at optional MSG-START and ends at or before
MSG-END." (byte-code "Â … Ã ˆ† e	† d‰ˆÄÅ	\"\"‡" [msg-start msg-end hmail:reader-p rmail:msg-widen narrow-to-region hmail:hbdata-start] 7))

(defun hmail:reader-p nil "\
Returns t iff current major mode shows received Hyperbole e-mail messages." (memq major-mode (list hmail:reader hmail:modifier)))

(defun rmail:init nil "\
Initializes Hyperbole abstract mail interface for a particular mail reader.
'hmail:reader' should be set appropriately before this is called." (byte-code "ÀÁÂ\"ˆÀÃÄ\"‡" [hmail:init "rmail:" ("msg-hdrs-full" "msg-narrow" "msg-num" "msg-prev" "msg-next" "msg-to-p" "msg-widen" "to") "lmail:" ("Summ-delete" "Summ-expunge" "Summ-goto" "Summ-to" "Summ-undelete-all")] 4))

(defvar rmail:msg-hdr-prefix "\\(^Date: \\|

From [^ 
]+ \\)" "String header preceding an e-mail received message-id.")

(defun rmail:msg-id-get nil "\
Returns current msg id for an 'hmail:reader' buffer as a string, else nil.
Signals error when current mail reader is not supported." (byte-code "Ä	!ÅÆÇ!† ÈÉ\"ˆŠÊŽebˆËÌP!…' ÍÎÏ!ÐÏ!\"))*‡" [reader hmail:reader toggled rmail:msg-hdr-prefix symbol-name nil fboundp rmail:msg-hdrs-full error "(rmail:msg-id-get): Invalid mail reader: %s" (nil) re-search-forward "\\(.+\\)" buffer-substring match-beginning 2 match-end] 9))

(defvar hmail:hbdata-sep "bd" "\
Text separating e-mail msg from any trailing Hyperbole button data.")

(provide (quote hmail))
