KaMail

Last modified: "2003/09/01 09:15:35"

Intro

私が、勝手に設定しているあたり。ちなみに、IMAP も News もつかってません。


Table of contents


知っていると便利な辺り

変数設定

;; サマリ表示バッファの高さ (既定値: 10)
(setq *kamail-height-summary* 7)

;; 署名表示バッファの高さ (既定値: 10)
(setq *kamail-signature-height* 4)

;; 添付ファイルの初期保存フォルダ
(setq *kamail-attach-save-directory* "~/temp")

;; header の表示順を変更
;;   To or Cc が長いと、Date が見えなくなるため
(setq *kamail-header-check-list*
      '(("subject" . *kamail-view-subject-forecolor*)
        ("from" . *kamail-view-from-forecolor*)
        ("date" . *kamail-view-subject-forecolor*)
        ("to" . *kamail-view-to-forecolor*)
        ("cc" . *kamail-view-to-forecolor*)
        ("bcc" . *kamail-view-to-forecolor*)
        ("newsgroups" . *kamail-view-to-forecolor*)
        ("reply-to" . *kamail-view-replyto-forecolor*)
        ("x-mailer" . *kamail-view-xmailer-forecolor*)
        ("x-newsreader" . *kamail-view-xmailer-forecolor*)
        ("x-yzzy-version" . *kamail-view-xmailer-forecolor*)
        ("user-agent". *kamail-view-xmailer-forecolor*)
        ))

設定ファイルのロード

カスタマイズしたものを .kamail に書くと、バージョンナップ時などに面倒なので、 km-cust.l として保存し、.kamail には、

;; 雑多なカスタマイズを呼ぶ
(load-file "~/KaMail/km-cust.l")

としている。


いろいろ

バッファバーを消す

起動時に buffer-bar を消し、終了時に復活させる。 OHKUBO Hiroshi さんに教えてもらった。
しかし、いまは、バッファタブを非表示にしているので、使っていない。

;; 起動時の処理
(add-hook '*kamail-mode-hook* #'(lambda () (hide-command-bar 'buffer-bar)))

;; 終了時の処理
(add-hook '*kamail-exit-hook* #'(lambda () (show-command-bar 'buffer-bar)))

View モードのバッファの状態を変える

View モードでは、改行マークを消し、行カーソルを表示する。

;; View モードの処理
(add-hook '*kamail-view-mode-hook*      'my-kamail-set-local-window-flags)
(add-hook '*kamail-multipart-mode-hook* 'my-kamail-set-local-window-flags)

;; 制御文字等表示設定
(defun my-kamail-set-local-window-flags ()
  (let ((buffer (selected-buffer)))
    ;改行マークを消す
    (set-local-window-flags buffer *window-flag-newline* nil)
    ;行カーソルを表示
    (set-local-window-flags buffer *window-flag-cursor-line* t)))

flex-fill を使う

喜多さんの flex-fill を使えるようにする。服部さんに教えてもらった。

(require "flex-fill")
(pushnew 'kamail *flexible-fill-mode-list*)
(add-hook '*kamail-draft-mode-hook*
          #'(lambda ()
              (setq fill-column 62)
              (auto-fill-mode t)))

この設定をする場合は、KaMail の折り返し機能を使わないようにしておいたほうがいいかも。

(setq *kamail-draft-fold-width* nil)

モード毎の関数、キーバインド設定

Toy's わがまま Version を参考に。

Summary モード

;; フォルダ選択
(define-key *kamail-list-map* #\g 'kamail-close-folder)

;; メール見る or 次の行へ (or 次のメッセージへ)
(defun kamail-view-mail-or-next-line-or-message ()
  (interactive)
  (let ((num (kamail-summary-getnum)))
    (kamail-select-view)
    (if (and (boundp 'kamail-number)
             (equal kamail-number num))
        (unless (scroll-window 1)
          ;次の行を有効にすると、メール末尾から次のメッセージに移動
   ;(kamail-next-message)
   )
      (progn
        (kamail-select-window-summary)
        (kamail-view-mail))))
  (kamail-select-window-summary))
(define-key *kamail-list-map* #\C-Down
            'kamail-view-mail-or-next-line-or-message)

;; メール見る or 前の行へ (or 前のメッセージへ)
(defun kamail-view-mail-or-previous-line-or-message ()
  (interactive)
  (let ((num (kamail-summary-getnum)))
    (kamail-select-view)
    (if (and (boundp 'kamail-number)
             (equal kamail-number num))
        (unless (scroll-window -1)
          ;次の行を有効にすると、メール先頭から前のメッセージに移動
   ;(kamail-previous-message)
   )
      (progn
        (kamail-select-window-summary)
        (kamail-view-mail))))
  (kamail-select-window-summary))
(define-key *kamail-list-map* #\C-Up
            'kamail-view-mail-or-previous-line-or-message)

;; 標準ソート
(define-key *kamail-list-map* '(#\C-c #\s #\x) 'kamail-summary-sort-dialog)

;; 件名でソート and 番号振り直し
(defun kamail-special-sort-by-subject ()
  (interactive)
  (kamail-summary-sort-by-subject)
  (kamail-renumber))
(define-key *kamail-list-map* '(#\C-c #\s #\s) 'kamail-special-sort-by-subject)

;; 日付でソート and 番号振り直し
(defun kamail-special-sort-by-date ()
  (interactive)
  (kamail-summary-sort-by-date)
  (kamail-renumber))
(define-key *kamail-list-map* '(#\C-c #\s #\d) 'kamail-special-sort-by-date)

;; 特別製メール閲覧
;;   RET でメール閲覧時は、サマリウィンドウ(?)にヘッダを表示
(defun kamail-special-view-mail ()
  (interactive)
  (kamail-view-mail)
  (kamail-header-toggle)
  (set-buffer-fold-width t)
  (beginning-of-buffer)
  (other-window))
(define-key *kamail-list-map* #\RET 'kamail-special-view-mail)

View モード

;; Folder モードへ移動
(define-key *kamail-view-map*      #\g 'kamail-select-window-folder)
(define-key *kamail-multipart-map* #\g 'kamail-select-window-folder)

;; 添付ファイル保存フォルダを開く
(defun open-attach-save-directory ()
  (interactive)
  (filer *kamail-attach-save-directory* t nil nil))
(define-key *kamail-view-map*      '(#\C-x #\d) 'open-attach-save-directory)
(define-key *kamail-multipart-map* '(#\C-x #\d) 'open-attach-save-directory)

全モード共通

;; ドラフト作成
(define-key *kamail-folder-map*    #\w 'kamail-prepare-draft-as-mail)
(define-key *kamail-list-map*      #\w 'kamail-prepare-draft-as-mail)
(define-key *kamail-view-map*      #\w 'kamail-prepare-draft-as-mail)
(define-key *kamail-multipart-map* #\w 'kamail-prepare-draft-as-mail)

まとめて受信し、受信結果をダイヤログで表示

(defun my-kamail-pop3-get ()
  (interactive)
  (let ((newmail (kamail-pop3-get)))
    (if (< 0 newmail)
        (message-box (concat (format nil "~D" newmail) "通のメールを受信した。") "亀手紙")
      (message-box "受信すべきメールはないもよう。" "亀手紙")
      )))
(define-key *kamail-folder-map*    #\i 'my-kamail-pop3-get)
(define-key *kamail-list-map*      #\i 'my-kamail-pop3-get)
(define-key *kamail-view-map*      #\i 'my-kamail-pop3-get)
(define-key *kamail-multipart-map* #\i 'my-kamail-pop3-get)

POP 受信時に、時刻合わせ

KaMail で POP 受信時(前)に、サーバから時間を取得し、PC の時刻を合わせる。 [xyzzy:05781](oowada さん)より。

まず、oowada さんのぺーじから、 rtimee10a.lzh を頂き、rtime.exe を xyzzy.exe と同じフォルダに設置する。 その後、以下の設定をしておくとメールを受信するたびに、時刻を合わせてくれる。

サーバの初期設定は、カシオさんのになっているが、つながらなかったので time-nw.nist.gov にしてみた。(もっと近くにあるのかもしれないけど知らない。)

(add-hook '*kamail-pop3-get-pre-hook* #'(lambda () (call-process "rtime.exe")))

もしかすると、ダイヤルアップな環境では、*kamail-pop3-get-post-hook* でないといけないかも。(環境がないのでわからない。)

rtime.exe のログは、同じフォルダにできる rtime.log に記録されるみたい。

View バッファをクリア

人にメールを覗かれそうになったときに b 。

(defun my-kamail-clear-view-buffer ()
  (interactive)
  (let ((p-window (buffer-name (selected-buffer))))
    (kamail-select-window-view)
    (kamail-view-create-buffer)
    (cond ((string= p-window "*KaMail: Folder*")
           (kamail-select-window-folder))
          (t (kamail-select-window-summary))
          )))
(define-key *kamail-folder-map*    #\b 'my-kamail-clear-view-buffer)
(define-key *kamail-list-map*      #\b 'my-kamail-clear-view-buffer)
(define-key *kamail-view-map*      #\b 'my-kamail-clear-view-buffer)
(define-key *kamail-multipart-map* #\b 'my-kamail-clear-view-buffer)

POP 自動受信

自動受信の設定と、受信間隔の設定をツールバーからしてみた。

受信時の IME 制御は、 Shinichi Sugiyama さん のを使わせて頂いて、KaMail の関数 kamail-pop3-auto-check をかきかえてみた。

パスワードを保存していない場合は、起動時に ON にしないで、 起動後にツールバーから ON にしたほうがいいかも。 なぜならば、パスワードを保存していない場合に、自動受信を ON にすると、 *kamail-pop3-check-time* 秒経った後にパスワードを聞かれるので、 気付かずにいると、初回受信状態のまま止まっていたりして悲しいため。

;; 自動受信を起動時に ON
(kamail-pop3-auto-check-start)

;; 受信間隔(秒単位)
(setq *kamail-pop3-check-time* 300)

;; kamail-pop3-auto-check 改
;;   IME の状態を保つため
(defun kamail-pop3-auto-check ()
  (interactive)
  (let ((orgdef (symbol-function 'toggle-ime)))
    (setf  (symbol-function 'toggle-ime) #'(lambda (arg) nil))
    (let ((new (kamail-pop3-get)))
      (when (< 0 new)
        (message-box (format nil "~D通受信しました。" new))))
    (setf  (symbol-function 'toggle-ime)  orgdef)))

;; kamail-pop3-auto-check-toggle 改
;;   start する前に一度 kamail-pop3-auto-check
;;   パスワードを保存していない場合のために
(defun kamail-pop3-auto-check-toggle ()
  (interactive)
  (if *kamail-pop3-auto-check*
      (kamail-pop3-auto-check-stop)
    (progn
      (kamail-pop3-auto-check)
      (kamail-pop3-auto-check-start))))

;; 受信間隔を設定
(defun set-kamail-pop3-get-interval ()
  (interactive)
  (let ((auto *kamail-pop3-auto-check*))
    (if auto (kamail-pop3-auto-check-stop))
    (message (format nil "現在間隔: ~:D" *kamail-pop3-check-time*))
    (let ((interval (read-integer "受信間隔[秒]: ")))
      (if (< 29 interval)
          (progn
            (setq *kamail-pop3-check-time* interval)
            (if auto (kamail-pop3-auto-check-start)))
        (message-box "それはあまりにも短すぎない?" "亀手紙" '(:ok :information))))))

;; ツールバー
(define-command-bar 'my-kamail-tool-bar "亀手紙(&K)")
(defun update-kamail-pop3-auto-check ()
  (and km::*kamail-pop3-auto-check* :check))
(defun my-kamail-tool-bar ()
  (create-tool-bar
   'my-kamail-tool-bar
   (merge-pathnames "toolbar.bmp" (etc-path))
   '(
     ("自動受信" 44 kamail-pop3-auto-check-toggle update-kamail-pop3-auto-check)
     ("受信間隔" 54 set-kamail-pop3-get-interval)
     )))

;; 起動時設定
(add-hook '*kamail-mode-hook*  #'(lambda ()
                                   ;ツールバーを表示
                            (show-command-bar 'my-kamail-tool-bar)))

;; 終了時設定
(add-hook '*kamail-exit-hook* #'(lambda ()
                                  ;自動受信を止める
                           (kamail-pop3-auto-check-stop)
                                  ;ツールバーを非表示
                           (hide-command-bar 'my-kamail-tool-bar)))

思わず、*kamail-pop3-check-time* を 0 にして、自動受信してしまった (-_-;) ので、 できないようにもしておいた。

自動受信をする場合は、*kamail-read-after-get* (POPサーバーから持ってきたらすぐ読む) を t にしておかない方が良いと思う。

ツールバーを削除する場合は、ESC ESCして、以下を実行すれば良いと思う。

(delete-command-bar 'km::my-kamail-tool-bar)

指定したサーバからのみ受信

普段わけあって一括受信をしないのだけど、「メール選択取込み」がメンドーだったので、 つまらないものをつくってみた。*kamail-pop3-get-list* にないサーバも登録できる。

サーバの設定

*kamail-pop3-get-list* と同じ書式で設定する。使わない場合は、nil にしておく。

;; 鯖(グループ)Aの設定
(setq *kamail-pop3-get-list-a* '(("serverA.domain" "userA" nil t)))

;; 鯖(グループ)Bの設定
(setq *kamail-pop3-get-list-b*
      '(
        ("serverA.domain" "userA" nil t)
        ("serverB.domain" "userB" nil t)
        ))

;; 鯖(グループ)Cの設定
(setq *kamail-pop3-get-list-c* nil)

個別受信用の関数

TAB a 〜 TAB c でそれぞれ受信する。Folder モード、Summary モードからのみ使用可。

;; 受信には、my-kamail-pop3-get を使っている。

;; 個々の鯖から受信
(defun my-kamail-pop3-get-s (&optional li)
  (let (*kamail-pop3-get-list*)
    (and li (setq *kamail-pop3-get-list* li))
    (my-kamail-pop3-get)))

;; 鯖(グループ)Aから受信
(defun my-kamail-pop3-get-a ()
  (interactive)
  (my-kamail-pop3-get-s *kamail-pop3-get-list-a*))
(define-key *kamail-folder-map* '(#\C-i #\a) 'my-kamail-pop3-get-a)
(define-key *kamail-list-map*   '(#\C-i #\a) 'my-kamail-pop3-get-a)

;; 鯖(グループ)Bから受信
(defun my-kamail-pop3-get-b ()
  (interactive)
  (my-kamail-pop3-get-s *kamail-pop3-get-list-b*))
(define-key *kamail-folder-map* '(#\C-i #\b) 'my-kamail-pop3-get-b)
(define-key *kamail-list-map*   '(#\C-i #\b) 'my-kamail-pop3-get-b)

;; 鯖(グループ)Cから受信
(defun my-kamail-pop3-get-c ()
  (interactive)
  (my-kamail-pop3-get-s *kamail-pop3-get-list-c*))
(define-key *kamail-folder-map* '(#\C-i #\c) 'my-kamail-pop3-get-c)
(define-key *kamail-list-map*   '(#\C-i #\c) 'my-kamail-pop3-get-c)

大容量アドレス補完

KaMail のアドレス帳に、700 程のアドレス (会社で使われているメーラのアドレス帳を変換したもの:これがないと仕事でつらい) を登録したら、異常に動作が遅くなってしまった。 さらに、「メニュー項目が多すぎます」のエラーが多発し、悲しい状況が続いた。 思い悩んだ挙句、キーワードファイルとしてアドレスリストを別形式で持つことにした。 こんなことをしても良いのだろうかと思いつつも、とりあえず軽快な環境が戻ってきたのでうれしい。 頻繁に変更しない大きなアドレス帳を使うときにはいいかも。

ADDRESS ファイルは、以下のような形式で記述し、etc フォルダに設置する。

friend@domain (ともだち)
someone@domain (だれか)
...

C-. で補完する。

;; アドレスファイル
(defvar *my-kamail-keyword-file* "ADDRESS")

(defvar *my-kamail-keyword-hash-table* nil)
(defvar *my-kamail-completion-list* nil)

;; 起動時設定
(add-hook '*kamail-mode-hook*
          #'(lambda ()
              (and *my-kamail-keyword-file*
                   (null *my-kamail-keyword-hash-table*)
                   (setq *my-kamail-keyword-hash-table*
                         (load-keyword-file *my-kamail-keyword-file* t)))
              (when *my-kamail-keyword-hash-table*
                (make-local-variable 'keyword-hash-table)
                (setq keyword-hash-table *my-kamail-keyword-hash-table*))))

;; アドレス補完  (C-.)
(defun my-kamail-completion ()
  (interactive)
  (or *my-kamail-completion-list*
      (setq *my-kamail-completion-list*
            (make-list-from-keyword-table *my-kamail-keyword-hash-table*))
      (return-from my-kamail-completion nil))
  (let ((opoint (point)))
    (when (skip-syntax-spec-backward "w_.")
      (let ((from (point)))
        (goto-char opoint)
        (do-completion from opoint :list *my-kamail-completion-list*)))))
(define-key *kamail-draft-map* '#\C-. 'my-kamail-completion)

KaMail 関係のバッファをバッファリストに出さないように

バッファバーやバッファリストに KaMail 関係のバッファを出さないようにする。 これで良いのかわからないが、一応動いているみたい。

;kamail.l
(setq *kamail-buffer-prefix* " *KaMail: ")
(setq *kamail-buffer-folder* (concat *kamail-buffer-prefix* "Folder*"))
(setq *kamail-buffer-summary* (concat *kamail-buffer-prefix* "Summary*"))
(setq *kamail-buffer-view* (concat *kamail-buffer-prefix* "Viewer*"))
(setq *kamail-buffer-multipart* (concat *kamail-buffer-prefix* "Multipart*"))
(setq *kamail-buffer-get* (concat *kamail-buffer-prefix* "Get*"))
(setq *kamail-buffer-draft* (concat *kamail-buffer-prefix* "Draft*"))
(setq *kamail-buffer-send* (concat *kamail-buffer-prefix* "Send*"))
(setq *kamail-buffer-temp* (concat *kamail-buffer-prefix* "Temp*"))
(setq *kamail-buffer-folder-select* (concat *kamail-buffer-prefix* "Folder Select*"))
(setq *kamail-buffer-signature* (concat *kamail-buffer-prefix* "Signature*"))
(setq *kamail-buffer-group* (concat *kamail-buffer-prefix* "Group*"))
(setq *kamail-buffer-grep* (concat *kamail-buffer-prefix* "Grep*"))
(setq *kamail-buffer-header* (concat *kamail-buffer-prefix* "Header*"))
;imap4.l
(setq *imap4-buffer-prefix* " *IMAP ")
(setq *imap4-buffer-output* (concat *imap4-buffer-prefix* "OUTPUT*"))
(setq *imap4-buffer-temp* (concat *imap4-buffer-prefix* "TEMP*"))
;nntp.l
(setq *nntp-buffer-prefix* " *NNTP ")
(setq *nntp-buffer-output* (concat *nntp-buffer-prefix* "OUTPUT*"))
(setq *nntp-buffer-temp* (concat *nntp-buffer-prefix* "TEMP*"))
;pop3.l
(setq *pop3-buffer-prefix* " *POP3 ")
(setq *pop3-buffer-output* (concat *pop3-buffer-prefix* "OUTPUT*"))
(setq *pop3-buffer-temp* (concat *pop3-buffer-prefix* "TEMP*"))
;local.l
(setq *local-buffer-prefix* " *LOCAL ")
(setq *local-buffer-output* (concat *local-buffer-prefix* "OUTPUT*"))
(setq *local-buffer-temp* (concat *local-buffer-prefix* "TEMP*"))
;spool.l
(setq *spool-buffer-prefix* " *SPOOL ")
(setq *spool-buffer-output* (concat *spool-buffer-prefix* "OUTPUT*"))
(setq *spool-buffer-temp* (concat *spool-buffer-prefix* "TEMP*"))
;archive.l
(setq *archive-buffer-prefix* " *ARCHIVE ")
(setq *archive-buffer-output* (concat *archive-buffer-prefix* "OUTPUT*"))
(setq *archive-buffer-temp* (concat *archive-buffer-prefix* "TEMP*"))
;cache.l
(setq *cache-buffer-prefix* " *CACHE ")
(setq *cache-buffer-output* (concat *cache-buffer-prefix* "OUTPUT*"))
(setq *cache-buffer-temp* (concat *cache-buffer-prefix* "TEMP*"))

キー操作で URL を開く

右クリックメニューから「URL を開く」を抜き出したつもり。

(defun kamail-open-url ()
  (interactive)
  (let (url)
    (save-excursion
      (skip-chars-backward *kamail-url-chars*)
      (when (looking-at ed::*url-scheme-regexp*)
        (setq url (buffer-substring (point)
                                    (progn
                                      (goto-char (match-end 0))
                                      (skip-chars-forward *kamail-url-chars*)
                                      (point))))))
    (when url
      ;----------------------------------------
      ; 1. browser.dll & browserex.l を使う場合
      ;(bx::navigate url :position bx::XPIS_BOTTOM :size 200)
      ; 2. 標準ブラウザを使う場合
      ;(shell-execute url t)
      ; 3. www-mode を使う場合
      (user::www-open-url url)
      ;----------------------------------------
      )))
(define-key *kamail-view-map*      '(#\C-c #\o) 'kamail-open-url)
(define-key *kamail-multipart-map* '(#\C-c #\o) 'kamail-open-url)

ついでに URL をコピー。

(defun kamail-copy-url ()
  (interactive)
  (let (url)
    (save-excursion
      (skip-chars-backward *kamail-url-chars*)
      (when (looking-at ed::*url-scheme-regexp*)
        (setq url (buffer-substring (point)
                                    (progn
                                      (goto-char (match-end 0))
                                      (skip-chars-forward *kamail-url-chars*)
                                      (point))))))
    (when url
      (copy-to-clipboard url))))
(define-key *kamail-view-map*      '(#\C-c #\c) 'kamail-copy-url)
(define-key *kamail-multipart-map* '(#\C-c #\c) 'kamail-copy-url)

ここで設定したキーバインド

Folder

i --- まとめてメール受信(受信結果をダイヤログで表示)
w --- ドラフト作成
b --- View バッファをクリア
TAB a --- サーバ(グループ)Aから受信
TAB b --- サーバ(グループ)Bから受信
TAB c --- サーバ(グループ)Cから受信

Summary

RET --- 閲覧&サマリウィンドウにヘッダを表示
i --- まとめてメール受信(受信結果をダイヤログで表示)
g --- フォルダウィンドウへ移動
(g g --- まとめてメール受信)
w --- ドラフト作成
b --- View バッファをクリア
TAB a --- サーバ(グループ)Aから受信
TAB b --- サーバ(グループ)Bから受信
TAB c --- サーバ(グループ)Cから受信
C-c s x --- ソート
C-c s s --- 件名でソート and 番号振り直し
C-c s d --- 日付でソート and 番号振り直し
C-Down --- メール見る or 次の行へ (or 次のメッセージへ)
C-Up --- メール見る or 前の行へ (or 前のメッセージへ)

View

i --- まとめてメール受信(受信結果をダイヤログで表示)
g --- フォルダウィンドウへ移動
(g g --- まとめてメール受信)
w --- ドラフト作成
b --- View バッファをクリア
C-x d --- 添付ファイル保存フォルダを開く
C-c o --- URL を開く
C-c c --- URL をコピー

Draft

C-. --- アドレス補完


diff

オリジナルのファイルに対して修正個所を適用した後、 そのファイルだけバイトコンパイルしておけばよいと思う。

kamail-grep への修正

・kamail-grep したときに正規表現が効いてない
・kamail-grep-view-mail すると xyzzy から応答がなくなることがある
ことに対する修正。[xyzzy:08571](Yoichi Katogi さん)より。

*** kamail-grep.l       Sun Dec  2 13:26:36 2001
--- kamail-grep.l       Mon Dec  9 13:38:00 2002
***************
*** 69,74 ****
--- 69,78 ----
        (ed::*grep-highlight-match* *kamail-grep-highlight-match*)
        (ed::*grep-regexp-search* t)
        (ed::*grep-subdir* t))
+     (declare (special ed::*grep-case-fold-search*
+                       ed::*grep-highlight-match*
+                       ed::*grep-regexp-search*
+                       ed::*grep-subdir*))
      (switch-to-buffer "*grep*")
      (erase-buffer (selected-buffer))
      (ed::scan-files *kamail-grep-last-word* "[0-9]*" dir)

kamail-view でのヘッダの色分けへの修正

ビューバッファで数字を含むヘッダフィールド名が色分けされないことへの修正。 [xyzzy:08656-08657] (Yoichi Katogi さん)より。
kamail-0.0.2.5 2003/01/26 23:50:24 版(version は、03/01/25)との diff をとってみた。 これでいいかな?

*** kamail-view.l       Sun Jan 26 06:05:14 2003
--- kamail-view.l       Wed Feb 19 23:32:16 2003
***************
*** 554,560 ****
        (narrow-to-region (point-min) (point))
        (goto-char (point-min))
        (loop
!       (when (looking-at "^[-a-zA-Z]+[ \t]*:")
          (set-text-attribute (match-beginning 0) (match-end 0) 'field
                              :foreground *kamail-view-field-forecolor*))
        (or (forward-line 1) (return))
--- 554,560 ----
        (narrow-to-region (point-min) (point))
        (goto-char (point-min))
        (loop
!       (when (looking-at "^[\x21-\x39\x3B-\x7E]+[ \t]*:")
          (set-text-attribute (match-beginning 0) (match-end 0) 'field
                              :foreground *kamail-view-field-forecolor*))
        (or (forward-line 1) (return))


(^_^)