[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 メーリングリストの案内