[mew-dist 29631] mew-scan-body
Tatsuya Kinoshita
tats at example.com
2013年 7月 2日 (火) 22:01:54 JST
Summaryに本文を表示する機能(mew-scan-body)について、少しずつ
改良しているところではありますが、まだMew本体へマージできず
にいる内容も残っています。
以下、手元のdefadviceの一部です(実際には、さらに固有名詞の
置き換え等あり)。4文字以上続く同じ文字を3文字に省略、あたり
は標準の動作でも良さそうな気がしています。いかがでしょうか。
ほかにも良さそうな方法がありましたら、ぜひお聞かせください。
(defadvice mew-scan-body (after modify-body (mew-vec &optional draftp) activate)
(setq mew-vec (ad-get-arg 0))
(setq body ad-return-value)
(when body
(while (string-match "株式会社" body)
(setq body (replace-match "株).." nil t body)))
(while (string-match "有限会社" body)
(setq body (replace-match "有).." nil t body)))
(while (string-match "\\(いつも\\)?お世話にな\\(ってお\\)?ります" body)
(setq body (replace-match ".." nil t body)))
(while (string-match "お\\(疲\\|つか\\)れ\\(様\\|さま\\)です" body)
(setq body (replace-match ".." nil t body)))
(while (string-match "ございま\\(す\\|した\\)" body)
(setq body (replace-match ".." nil t body)))
(while (string-match "申します" body)
(setq body (replace-match ".." nil t body)))
(while (string-match "[、。 …‥・●○◎◆◇■□★☆=−━┃╋┻┳┫┣┏┓┗┛─│┼┴┬┤├┌┐└┘┿┷┯┥┝╂┸┰┨┠|\/]" body)
(setq body (replace-match " " nil t body)))
(while (string-match "\\([0-9A-Za-z+/=]\\{5\\}\\)[0-9A-Za-z+/=]\\{20,\\}" body)
(setq body (replace-match "\\1.." nil nil body)))
(while (string-match "\\(.\\)\\1\\1\\1+" body)
(setq body (replace-match "\\1\\1\\1" nil nil body)))
(while (string-match "[^[:print:]]+" body)
(setq body (replace-match " " nil t body)))
(setq body (mew-replace-white-space body))
(ad-set-arg 0 (aset mew-vec (1- (length mew-vec)) body))
(setq ad-return-value body)))
--
木下達也
Mew-dist メーリングリストの案内