[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re[2]: Running Mew
- To: bep@argv.org
- Subject: Re[2]: Running Mew
- From: Takayuki Watanabe <takayuki@la.shonan-it.ac.jp>
- Date: Thu, 03 Aug 2000 19:17:42 +0900
- Delivered-To: mailing list bep@argv.org
- Mailing-List: contact bep-help@argv.org; run by ezmlm
渡辺@湘南工科大です。
On Thu, 03 Aug 2000 18:41:11 +0900 (JST), KIRIAKE Masanori wrote:
> ここは井上さんにお任せして、あっしらはMewとWanderlustを調査しましょう(笑)
オリジナルのスピーチサーバーを使った全バージョンのVoice MeadowでMew-mode
を作ったので、そのときの経験からアドバイスします。
# EmacspeakとELispの世界をたっぷり楽しめますよ。
・emacspeak-rmail.elが参考になると思います。
Emacspeakのパターンを盗んでEmacspeak流にやるのがよいと思います。
・Mewのドキュメントだったかソースだったかに、Mewが提供するhookのリストが
あります。このフックを使ってたとえば以下のようなことができます。
注;このソースは前バージョンのソースなので、コマンドvoice-speak-string()な
どは前バージョンのコマンドであって今はつかえません。
(defun voice-mew-start()
"announce the start of mew"
(voice-speak-string "\\X=S1\\Mew スタート"))
(add-hook 'mew-init-hook 'voice-mew-start)
(defun voice-mew-summary-mode()
"announce the entrance of mew summary mode"
(voice-speak-string "\\X=S3\\Summary mode"))
(add-hook 'mew-summary-mode-hook 'voice-mew-summary-mode)
(defun voice-mew-read-message()
"Read message of mew"
(interactive)
(let (beg end original eol-point flag_h string_flag point-c)
(setq original (point))
(save-excursion
(setq string-header "")
(setq string-tmp "")
(sit-for 0 10) ; reflesh screen
; search "Subject" header
(goto-char (point-min))
(if (re-search-forward "^Subject:" nil t)
(progn (end-of-line)
(setq eol-point (point))
(setq string-header (buffer-substring (match-end 0) eol-point))
(voice-speak-string "\\X=S3\\ Subject " 20)
(setq flag_h t)
(voice-speak-string string-header 20)))
; search "From" header (略)
; search "To" header (略)
; search "Date" header (略)
; skip repeated patterns in the body of the message
(mapcar
(function (lambda (str)
(dtk-replace-duplicates str "all" )))
voice-cleanup-patterns)
; Now reading the body
(voice-speak-string "\\X=S1\\ 本文" 20)
; find the 1st line
(if flag_h
(re-search-forward "^$" nil t))
(voice-read-region (point) (point-max) nil "line")
(setq string-tmp (buffer-substring (point) (point-max)))
(voice-speak-string "\\X=S1\\終了" 20)
(push-mark original))))
(add-hook 'mew-message-hook 'voice-mew-read-message)