自分でメルマガ発行しといて言うのもなんだが、この手のメールって広告が多くて、どこを読んでいいのか目で追うのが大変。そこで、広告文だけ色を薄くして簡単に読み飛ばせるようにしてみた。けど、広告も時には役に立つし、まったく見えないのもさびしいから、見えにく〜くしてみた。Wanderlust 用です。
設定さえやれば、ほとんどの広告を見えにくくできますが、広告の境界線がいいかげんな場合は設定が面倒、もしくは不可能です。行儀の悪いメルマガはこの際、解除だ解除だ。
(require 'wl-highlight-ad)
(set-face-foreground 'wl-highlight-ad-face "gray20")
(setq wl-highlight-ad-regexp-user-alist
'(("@.*nikkeibp.co.jp" ("^─PR─+$" . "^─+$") default)
("@egroups.co.jp" ("^-.*~-->$" . "^-+~->$"))
("@mainichi.co.jp" ("^-+【AD】-+$"
. "\n.*\n.*\n.*\n.*\n.*\n-+\n.*\n.*\n.*\n.*\n.*\n-+\\|\n.*\n.*\n.*\n.*\n.*\n-+"))
("@pc.mycom.co.jp" ("^―+\\[PR\\]―+$" . "^―+$"))
("mag2" ("^-【.*まぐ.*】-+$" . "^-+$")
("^_@_+-PR-_+$" . "^_+$") default)
("@hotmail.com" ("^_+\n.*\\(MSN\\|マイクロソフト\\)" . "^$") continue)
("@yahoo.co" ("^_+\nDo You Yahoo!\\?" . "^$") continue)
(".*" ("^\\[snip!\\]$" . "") default)))

この機能、ほんとに無いのかな。スレッド表示だとか、カーソルの上下の移動方向なんかは無視です。誰か改善してください。
(define-key wl-summary-mode-map "o" 'wl-summary-auto-refile-this-mail)
(defun wl-summary-auto-refile-this-mail () (interactive)
(let* ((number (wl-summary-message-number))
(dst
(wl-folder-get-realname
(wl-refile-guess (elmo-message-entity wl-summary-buffer-elmo-folder number)
wl-auto-refile-guess-functions))))
(unless dst
(setq dst (wl-summary-get-refile-destination 'refile number)))
(wl-summary-refile number dst)
(wl-summary-next)))
それだけ。
;; display file size of a mail. (summary-mode)
(defun wl-summary-file-size () (interactive)
(message "File Size (bytes): %d"
(elmo-msgdb-overview-entity-get-size
(elmo-message-entity wl-summary-buffer-elmo-folder (wl-summary-message-number)))))
何でこの機能無いの? ほんとはある? しょうがないので作ってみた。


もしかして、この機能って最初からある? 昔々使っていたマイフェイスというエディタに、こんな機能があったのを思い出したので作ってみた。
デリミタ (ターミネータ) で区切られたデータファイルから、1個だけランダムにデータを選び出す。デリミタの設定次第で、1データ1行でも、1データ複数行でも可能。"本日の名言" X-Quote: をメールヘッダにくっつけて、ムリヤリ相手に送りつけるために作った。
ついでにコツコツ集めた名言集 quotes.txt (2009-07-01 版) もどうぞ。
Wanderlust を使ってる人は下記の設定を書けば、ムダにヘッダを増やして相手に問答無用で名言を送りつけ、ひとり悦に入ることができます。ちなみにこの X-Quote: を読んで喜んでくれた人も、苦情をくれた人も、まだいない。
(require 'pick-a-string)
(setq pick-a-string-file "~/quotes.txt"
pick-a-string-terminator "\n"
wl-draft-config-alist '(("^From: .*@kakura\.jp"
("X-Quote" . (pick-a-string)))))
(add-hook 'wl-mail-setup-hook 'wl-draft-config-exec)
(remove-hook 'wl-draft-send-hook 'wl-draft-config-exec)
何でも好きなものを追加してハイライトさせましょう。ただ、ハイライトさせすぎると動作が遅くなる。
(defvar highlight-etc-mode nil)
(defvar highlight-etc-alist
; mail@address.es
`(("\\([a-zA-Z0-9]@\\|[a-zA-Z0-9][-a-zA-Z0-9_.]*[a-zA-Z0-9]@\\)[a-zA-Z0-9][-a-zA-Z0-9_]*\\.[-a-zA-Z0-9_.]*[a-zA-Z][a-zA-Z]"
0 font-lock-keyword-face keep)
; URLs
(,(concat "\\(https?\\|ftp\\|file\\|gopher\\|news\\|telnet\\|wais\\):"
"\\(//[-a-zA-Z0-9_.]+:[0-9]*\\)?"
"[-a-zA-Z0-9_=?#$@~`%&*+|\\/.,]*[-a-zA-Z0-9_=#$@~`%&*+|\\/]") 0 font-lock-keyword-face keep)
; comments and border lines.
("^#.*\\|[-+_=~#^*][-+_=~#^*][-+_=~#^*][-+_=~#^*][-+_=~#^*].*" 0 font-lock-comment-face keep)
; double quoted strings.
("\"[^\"]*\"" 0 font-lock-string-face keep)))
(defun highlight-etc-mode () (interactive)
(cond (highlight-etc-mode
(highlight-etc-off)
(message "highlight-etc-mode ... off"))
(t
(highlight-etc-on)
(message "highlight-etc-mode ... on")))
(setq highlight-etc-mode (not highlight-etc-mode)))
(defun highlight-etc-on ()
(unless highlight-etc-mode ; check this not to add keywords again.
(font-lock-add-keywords nil highlight-etc-alist)
(font-lock-fontify-buffer)))
(defun highlight-etc-off ()
(when highlight-etc-mode
(font-lock-remove-keywords nil highlight-etc-alist)
(font-lock-fontify-buffer)))
たったそれだけなんだけど、結構便利。好きなキーにバインドしてください。
(defun copy-char-above () (interactive)
(save-excursion
(previous-line 1)
(let ((beg (point)))
(set-mark (point))
(forward-char 1)
(kill-ring-save beg (point))))
(yank))
(defun copy-word-above () (interactive)
(save-excursion
(previous-line 1)
(let ((beg (point)))
(set-mark (point))
(forward-word 1)
(kill-ring-save beg (point))))
(yank))
そういえば elisp を勉強しようと思って、何年も前にこれ書いたの思い出した。ということは自分でも使ってない。初めて書いた elisp です。力技なのでコードは見ないで。
例えばキーバインドが C-S-c なら、C-S-c で3秒だけ表示、C-S-cC-S-c でずっと表示、もう一回 C-S-c で3秒後に消す。
(global-set-key [?\C-\S-c] 'bigclock) ; お好みでどうぞ (autoload 'bigclock "bigclock" nil t) (setq bigclock-jpn t)
