created and maintained by tokd

MewTips

Meadow 上で愛用していたメーラ Mew の Tips です.

defun-add-hook

Meadow終了時に定型メールをインタラクティブに送信

(defun-add-hook 'kill-emacs-query-functions
  (interactive)
  (if (y-or-n-p "Mail to Home?")
      (progn
	(mew-send "myhome@example.com" nil "今から帰ります")
	(goto-char (point-max))
	(insert "今から帰ります")
	(setq mew-ask-send nil)
	(add-hook 'mew-smtp-sentinel-hook 'kill-emacs)
	(mew-draft-send-message))
    t))

mew-summary-execute-external hack


C-c C-e を押したときに、
- キャッシュされていなかったら '.' を実行
- メールパートで実行されたら 'n' を実行
- Mac のリソースフォークなら 'n' を実行


(defadvice mew-summary-execute-external
  (before my-mew-summary-execute-external activate)
  (let* ((fld (mew-summary-folder-name))
	 (msg (mew-summary-message-number2))
	 (cache (mew-cache-hit fld msg))
	 syntax nums stx ctl ct program part)
    (if (not cache)
	(progn
	  (mew-summary-analyze-again)
	  (setq cache (mew-cache-hit fld msg))))
    (setq syntax (mew-cache-decode-syntax cache)
	  nums (mew-syntax-nums)
	  stx (mew-syntax-get-entry syntax nums)
	  ctl (mew-syntax-get-ct stx)
	  ct (mew-syntax-get-value ctl 'cap)
	  program (mew-ctdb-prog (mew-ctdb-by-ct ct))
	  part (mew-syntax-get-part syntax))
    (if (and (equal program 'mew-mime-message/rfc822)
	     (mew-syntax-multipart-p part))
	(mew-summary-display-down))
    (setq nums (mew-syntax-nums)
	  stx (mew-syntax-get-entry syntax nums)
	  ctl (mew-syntax-get-ct stx)
	  ct (mew-syntax-get-value ctl 'cap))
    (if (equal ct "Application/Applefile")
	(mew-summary-display-down))))

mew-browse (browse-url) で '~' 以降が URL として認識されない


EmacsTips に書いてあるように、'~' だけ latin-jisx0201 になってしまうのを
抑制すれば全部 URL として認識されるようになる。

"*Mew message*0" バッファ


バッファ一覧に現れないように、先頭に空白を追加。


(setq mew-buffer-message " *Mew message*")

警告色があるかどうかで signature を自動的に切り替える


c-sig の機能を利用する。


(defun my-insert-signature-eref (&optional arg)
  (interactive)
  (setq ovl (overlays-in (point-min) (mew-header-end)))
  (setq warnp nil)
  (while ovl
    (if (equal (overlay-get (car ovl) 'face) 'mew-face-header-warning)
	(setq warnp t))
    (setq ovl (cdr ovl)))
  (if warnp
      (setq sig-default-name "external")
    (setq sig-default-name "internal"))
  (insert-signature-eref arg))
(defun-add-hook 'mew-draft-mode-hook
  (define-key mew-draft-mode-map "\C-ci" 'my-insert-signature-eref))

+inbox 以外のフォルダバッファを自動的に消去


2ch Mew スレ Part 4 の 386-388 を参考(私の投稿ですが)。


(require 'tempbuf)
(setq tempbuf-life-extension-ratio 0
      tempbuf-minimum-timeout 1)
(defun-add-hook 'mew-summary-mode-hook
  (unless (string= (buffer-name) "+inbox")
    (turn-on-tempbuf-mode)))

Application/Mac-Binhex40 対応


gnus の binhex.el を利用。


(defun-add-hook 'mew-init-hook
  (mew-addq mew-mime-content-type
	    '("Application/Mac-Binhex40" nil
	      nil mew-prog-mac-binhex40 mew-icon-text)))
(setq mew-prog-mac-binhex40 '(nil mew-func-mac-binhex40))
(defun mew-func-mac-binhex40 (cache begin end params)
  (let ((file (mew-make-temp-name (cadr (assoc "name" params)))))
    (with-temp-buffer
      (mew-set-buffer-multibyte nil)
      (insert-buffer-substring cache begin end)
      (binhex-decode-region (point-min) (point-max))
      (mew-frwlet
       mew-cs-dummy mew-cs-binary
       (write-region (point-min) (point-max) file nil 'no-msg)))
    (mew-mime-start-process
     (mew-ctdb-prog (mew-ctdb-by-ct "application/octet-stream")) nil file)))