[Mew-Win32 01985] summary の色づけ
Hideyuki SHIRAI ( 白井秀行 )
shirai at example.com
1999年 9月 14日 (火) 19:16:12 JST
白井です。(やっぱり、こういうのはこちら、ということで。。。)
# だけど、sen さんに Cc: つき。:-)
(あくまで冗談として) summary に色づけするのものを作ってみました。
サンプルを
http://www.netLaputa.ne.jp/~hshirai/Image/summary1.png
http://www.netLaputa.ne.jp/~hshirai/Image/summary2.png
http://www.netLaputa.ne.jp/~hshirai/Image/summary3.png
に置いておきましたので、見てみて下さい。次ページのものを
~/.emacs にでも書けばとりあえず色がつくのですが、
1. 遅い。
2. きっと Emacs にやさしくない。
3. 人によって全然 form が違うから、汎用的なのは書けなかった。だ
から、自分で改造しないといけないし、当然、ある程度の elisp の知
識を要求する。
という弱点があります。
;; summary の色づけ
(cond
(window-system
(add-hook
'mew-init-hook
'(lambda ()
;; 趣味で色とか書体とか指定してね
(if (or (facep 'mew-summary-from-face)
(and (fboundp 'find-face)
(find-face 'mew-summary-from-face)))
()
(make-face 'mew-summary-from-face)
(copy-face 'bold 'mew-summary-from-face)
(set-face-foreground 'mew-summary-from-face "Purple"))
(if (or (facep 'mew-summary-to-face)
(and (fboundp 'find-face)
(find-face 'mew-summary-to-face)))
()
(make-face 'mew-summary-to-face)
(copy-face 'bold-italic 'mew-summary-to-face)
(set-face-foreground 'mew-summary-to-face "DarkOrange3"))
(if (or (facep 'mew-summary-subject-face)
(and (fboundp 'find-face)
(find-face 'mew-summary-subject-face)))
()
(make-face 'mew-summary-subject-face)
(copy-face 'bold 'mew-summary-subject-face)
(set-face-foreground 'mew-summary-subject-face "DarkGreen"))
(if (or (facep 'mew-summary-ml-face)
(and (fboundp 'find-face)
(find-face 'mew-summary-ml-face)))
()
(make-face 'mew-summary-ml-face)
(copy-face 'bold-italic 'mew-summary-ml-face)
(set-face-foreground 'mew-summary-ml-face "ForestGreen"))
(if (or (facep 'mew-summary-body-face)
(and (fboundp 'find-face)
(find-face 'mew-summary-body-face)))
()
(make-face 'mew-summary-body-face)
(copy-face 'italic 'mew-summary-body-face)
(set-face-foreground 'mew-summary-body-face "Grey50"))
;;; ~/.im/Config で設定する Form で全然処理が変わってしまう。
;;; default はこうなのだけど、
;;; Form=%+5n %m%d %-14A %S || %b # default format for scanning
;;;
;;; 白井の場合はこうなっていて、
;;; imget.Form=%+4n %m%d %h:%E %+2KK %-24A %S || %b # for imget
;;; Form=%+4n %m%d/%y %+3KK %-24A %S || %b # for imls
;;; なおかつ %+4n や %3Kk がモノ(環境)によって幅が違うから、"K"
;;; で引っかけてみる。
(setq mew-summary-hl-start-regex "^[^K]+K ") ;; ほとんど白井専用 ^^;
;; 固定 format 向け (2byte 文字は無いだろうから) '.' の数
;; で調節してみたりする
;; (setq mew-summary-hl-start-regex "^............ ")
(setq mew-summary-hl-from-width 24) ;; %-nnA の数字を書いてね
;; 以下、結構いい加減な regexp が続く。。。
;; [mew-dist nnn] や (pgp-users nnn) の色を変えてみる
(setq mew-summary-hl-ml " *\\([\[(][^])]*[\])]\\)")
;; %b が表示されているとき用の regexp
(setq mew-summary-hl-subject-regex1 " *\\(.*\\) +\\(\|\|[^\n\r]*\\)")
;; %b が表示されていないとき用の regexp
;; summary の最後に '|' が出ても色づけしてしまうし
(setq mew-summary-hl-subject-regex2 " *\\([^\n\r]*\\)")
(defun mew-summary-highlight-region (beg end)
(interactive "r")
(and (> (- end beg) 256)
(message "summary face making ... "))
(save-excursion
(mew-elet
(goto-char beg)
(while (< (point) end)
(if (not (re-search-forward mew-summary-hl-start-regex nil t))
()
(goto-char (match-end 0))
(if (looking-at "To:")
(put-text-property (point)
(progn (move-to-column (+ (current-column)
mew-summary-hl-from-width))
(point))
'face 'mew-summary-to-face)
(put-text-property (point)
(progn (move-to-column (+ (current-column)
mew-summary-hl-from-width))
(point))
'face 'mew-summary-from-face))
(if (not (looking-at mew-summary-hl-ml))
()
(put-text-property (match-beginning 1) (match-end 1)
'face 'mew-summary-ml-face)
(goto-char (match-end 0)))
(if (not (looking-at mew-summary-hl-subject-regex1))
(if (looking-at mew-summary-hl-subject-regex2)
(put-text-property (match-beginning 1) (match-end 1)
'face 'mew-summary-subject-face))
(put-text-property (match-beginning 1) (match-end 1)
'face 'mew-summary-subject-face)
(put-text-property (match-beginning 2) (match-end 2)
'face 'mew-summary-body-face)))
(forward-line))))
(and (> (- end beg) 256)
(message "summary face making ... done.")))
(defadvice mew-highlight-mark-region (after summary-highlight activate)
(mew-summary-highlight-region beg end))
(defadvice mew-highlight-unmark-line (after summary-highlight activate)
(save-excursion
(mew-summary-highlight-region
(progn (beginning-of-line) (point))
(progn (forward-line) (point)))))
;; これから下は、人によりけり。
;;; (defadvice mew-summary-virtual-review (after summary-highlight activate)
;;; (mew-summary-highlight-region (point-min) (point-max)))
;;; (defadvice mew-nmz-virtual (after summary-highlight activate)
;;; (mew-summary-highlight-region (point-min) (point-max)))
))))
--
白井秀行@本当に冗談なので、あまり深く考えていません。(__)
Mew-win32 メーリングリストの案内