2016-03-31

Emacs: Gnus: Always `Message-ID' in Article buffer

メールをコピペするとき、エンジニア的には Message-ID を含めておきたい。Gnus の標準設定は Message-ID 非表示なので、今まではその度に t キー(gnus-summary-toggle-header)でヘッダーを表示させて Message-ID だけを別途コピペしていたが、いい加減それが面倒になった。(そりゃそうだ)

gnus-visible-headers なる変数は直ぐに見つかったので簡単と思いきや、この変数は、

  • 「正規表現」「正規表現のリスト」のどちらも設定可能で、前者の初期値を持つ。
  • gnus-art ロード時に定義される。(それまでは未定義)

これらの要因により、当初の想像よりも設定が面倒だった。私がやりたいのは、gnus-visible-headers の初期値に Message-ID 用の設定を追加すること。将来のバージョンで初期値が変わる可能性も考慮したい。

;; visible headers in article buffer
(setq my-gnus-visible-headers '("^Message-ID:"))
(eval-after-load "gnus-art"
  '(progn
     (when (stringp gnus-visible-headers)
       (setq gnus-visible-headers
	     (split-string gnus-visible-headers "\\\\|")))
     (dolist (header my-gnus-visible-headers)
       (add-to-list 'gnus-visible-headers header))))

他の人は、単純に gnus-visible-headers に正規表現を concat するパターンが多いようだ。しかし私的には、add-to-list で値の重複を防げるリストの方が好み。しかし、やりたいことに対して設定が難解になった感は否めない。