ラベル Wanderlust の投稿を表示しています。 すべての投稿を表示
ラベル Wanderlust の投稿を表示しています。 すべての投稿を表示

2009年3月9日月曜日

Emacs23 で Wanderlust

Emacs23 で Wanderlust で日本語フォルダが扱えなかった。他にネットで似たような情報がなかったので、うちだけの問題なのだろう。けっこうごちゃごちゃいじってあるので、自分でもわけがわからないw
 wl付属のutf7.el を削除すれば直ったというケースもあるようだけど、うちでは無理だった。
凹んだ(×_×)

 でまあ、emacs23になってから utf7 まわりがおかしいのだろうなと思っていたのだけど、wl のデバッグログを眺めていたら、デコードされたフォルダ名の先頭に空白が・・・・・・・・BOMだったorz

原因が判明したのでググって、 /usr/share/emacs/23.0.60/lisp/gnus/utf7.el に以下の変更を。

(defconst utf7-utf-16-coding-system
(cond ((mm-coding-system-p 'utf-16-be-no-signature) ; Mule-UCS
'utf-16-be-no-signature)
((and (mm-coding-system-p 'utf-16-be) ; Emacs 21.3, Emacs 22 (BOM?)
;; Avoid versions with BOM.
(= 2 (length (encode-coding-string "a" 'utf-16-be))))
'utf-16-be)
+ ((and (mm-coding-system-p 'utf-16be) ; Emacs 22 and later
+ ;; Avoid versions with BOM.
+ (= 2 (length (encode-coding-string "a" 'utf-16be))))
+ 'utf-16be)
((mm-coding-system-p 'utf-16-be-nosig) ; ?
'utf-16-be-nosig))
"Coding system which encodes big endian UTF-16 without a BOM signature.")
Emacs23 になって utf-16-beutf-16be になっているせいらしい・・・なんでやねん。

 同じようにwl付属のutf7.elも変更しないといけないのだけど、こちらは ~/.wl にバージョン判定で切り抜けるようにした。

(cond ( (string-match "^23\." emacs-version)
(defconst utf7-utf-16-coding-system
(and (fboundp 'find-coding-system)
(find-coding-system 'utf-16be))
"Coding system which encodes big endian UTF-16.")))

 結果は、見事に動作するようになった。 

・参考
 http://d.hatena.ne.jp/defiant/20081112/1226461505
 http://article.gmane.org/gmane.emacs.bugs/16892

2008年2月20日水曜日

EmacsのWanderlustの設定をちょこっと修正

前回のWanderlustの導入から操作にも慣れてきて、普段日常でも使えるようになってきました。
以前よりまめにメール出すようになったしねw

ということで少し設定をいじったのでメモ。

メールヘッダ

前回のは冗長すぎたので以下のように修正。
~/.wl に以下を追記。
;; summary-mode ですべての header を一旦除去
(setq wl-message-ignored-field-list '("."))
;; 表示するヘッダ。
(setq wl-message-visible-field-list
'("Cc:" "^Subject:" "^From:" "^To:" "^Cc:"
"^X-Mailer:" "^X-Newsreader:" "^User-Agent:"
"^X-Face:" "^X-Mail-Count:" "^X-ML-COUNT:"
))
全てのメールヘッダを表示するには、H キー。元に戻すにはもう一度 H キーか、「.」ピリオドを押す。生のメールヘッダを見たいときは、M キー。

WanderlustをEmacs標準のメーラーに

C-x m で 新規メール作成画面になるのだけれども、これをWanderlustが立ち上がるように設定する。
~/.emacs に以下を追記。

;;;====================================
;;;; Wanderlust - メールソフト
;;;====================================
;;; wl の設定は~/.wl に。
;;; 標準のメーラーをWanderlustにする。
(autoload 'wl-user-agent-compose "wl-draft" nil t)
(if (boundp 'mail-user-agent)
(setq mail-user-agent 'wl-user-agent))
(if (fboundp 'define-mail-user-agent)
(define-mail-user-agent
'wl-user-agent
'wl-user-agent-compose
'wl-draft-send
'wl-draft-kill
'mail-send-hook))

メール作成モード(ドラフトモード)の初期設定

~/.wl に以下を追記。
;;; メール編集モードフック。
(add-hook 'wl-draft-mode-hook
'(lambda ()
(setq paragraph-start '"^\\([  ・○<\t\n\f]\\|(?[0-9a-zA-Z]+)\\)")
(auto-fill-mode t)
(set-fill-column 60)
))

シグネチャ(署名)挿入時のセパレータを削除する

~/.wl に以下を追記。
(setq signature-separator "")
(add-hook 'wl-mail-setup-hook
(lambda ()
(require 'signature)
(local-set-key "\C-c\C-w" 'insert-signature)))

アドレス帳を暗号化する

EasyPG などのEmacsからgpgを透過的に扱うパッケージを入れてあれば簡単に出来ます。
~/.addresses ファイルをgpgを使って暗号化し、出来た ~/.addresses.gpg ファイルを ~/.wl に、
;;; アドレス帳の指定。EasyPGで透過的に扱える。
(setq wl-address-file "~/.addresses.gpg")
などとして指定するだけ。
あとはWanderlust起動時に自動的にパスフレーズを聞かれるので入力すればOK。

2008年2月7日木曜日

EmacsでGmailを

EmacsでGmailを扱えるようがんばってみた。
メーラーは Wanderlust で IMAP4 を使います。



インストール

sudo apt-get install bl-beta starttls gnutls-bin

設定

  • ~/.wl にWanderlustの設定を書きます。
  • ~/.folders にフォルダ設定を書きます。

私がとりあえず設定してみた~/.wl の中身。

;;; -*- mode: emacs-lisp; Coding: iso-2022-7bit -*-
;;; last updated : 2008/02/08 15:00:23 JST
;;;
;;; Wanderlust 設定ファイル

;;; 一般的なメーラの操作とGmailでの扱われ方の対応表
;;; https://mail.google.com/support/bin/answer.py?answer=77657

;; IMAP サーバの設定
(setq elmo-imap4-default-server "imap.gmail.com")
(setq elmo-imap4-default-user "ふがふがほげげ@gmail.com") ; メールアドレス
(setq elmo-imap4-default-authenticate-type 'clear)
(setq elmo-imap4-default-port '993)
(setq elmo-imap4-default-stream-type 'ssl)
(setq elmo-imap4-use-modified-utf7 t) ; 日本語フォルダ対策

;; SMTP サーバの設定
(setq wl-smtp-connection-type 'starttls)
(setq wl-smtp-posting-port 587)
(setq wl-smtp-authenticate-type "plain")
(setq wl-smtp-posting-user "ふんがぁ") ; 適宜修正
(setq wl-smtp-posting-server "smtp.gmail.com")
(setq wl-local-domain "gmail.com")

;; 一意なmessage-ID 動的IPアドレスの場合に設定。何か適当な文字列を。例えばメールアドレスとか。
(setq wl-from "もげ <もげっとぎゃおす@gmail.com>")


;;;------------------------------------------
;;; その他の設定
;; デフォルトのフォルダ
(setq wl-default-folder "%inbox")
;; フォルダ名補完時に使用するデフォルトのスペック
(setq wl-default-spec "%")
(setq wl-draft-folder "%[Gmail]/Drafts") ; Gmail IMAPの仕様に合わせて
(setq wl-trash-folder "%[Gmail]/Trash")
;; 下書きディレクトリをローカルに設定する.
(setq wl-draft-folder "+Drafts")
(setq wl-folder-check-async t) ; 非同期でチェックするように
;; 大きなメッセージを分割して送信しない(デフォルトはtで分割する)
(setq mime-edit-split-message nil)
;; 起動時からオフラインにする
;; (setq wl-plugged nil)
;; サマリモードで日時を英語表示
;; (setq wl-summary-weekday-name-lang 'en)
;; HTMLファイルは表示しない。
(setq mime-setup-enable-inline-html nil)
;; メールを書くときは見出し画面を残して、フル画面にする
(setq wl-draft-reply-buffer-style 'keep)
;; 送信済みIMAPフォルダは送信と同時に既読にする
(setq wl-fcc-force-as-read t)
;; 最初からスレッドを開いておかない
(setq wl-thread-insert-opened nil)
;; スレッドを分割するしきい値(デフォルト:30)
(setq wl-summary-max-thread-depth 30)
;; 警告無しに開けるメールサイズの最大値(デフォルト:30K)
(setq elmo-message-fetch-threshold 500000)
;; プリフェッチ時に確認を求めるメールサイズの最大値(デフォルト:30K)
(setq wl-prefetch-threshold 500000)

;;;------------------------------------------
(setq wl-dispose-folder-alist
(cons '("^%inbox" . remove) wl-dispose-folder-alist))


;;;------------------------------------------
;;; from,to のデコード指定。
(mime-set-field-decoder
'From nil 'eword-decode-and-unfold-unstructured-field-body)
(mime-set-field-decoder
'To nil 'eword-decode-and-unfold-unstructured-field-body)

;;;------------------------------------------
;; summary-mode ですべての header を一旦除去
(setq mime-view-ignored-field-list '("^.*"))

;; 表示するヘッダ。
(setq wl-message-visible-field-list
(append mime-view-visible-field-list
'("^Subject:" "^From:" "^To:" "^Cc:"
"^X-Mailer:" "^X-Newsreader:" "^User-Agent:"
"^X-Face:" "^X-Mail-Count:" "^X-ML-COUNT:"
)))

;; 隠すメールヘッダを指定。
(setq wl-message-ignored-field-list
(append mime-view-ignored-field-list
'(".*Received:" ".*Path:" ".*Id:" "^References:"
"^Replied:" "^Errors-To:"
"^Lines:" "^Sender:" ".*Host:" "^Xref:"
"^Content-Type:" "^Content-Transfer-Encoding:"
"^Precedence:"
"^Status:" "^X-VM-.*:"
"^X-Info:" "^X-PGP" "^X-Face-Version:"
"^X-UIDL:" "^X-Dispatcher:"
"^MIME-Version:" "^X-ML" "^Message-I.:"
"^Delivered-To:" "^Mailing-List:"
"^ML-Name:" "^Reply-To:" "Date:"
"^X-Loop" "^X-List-Help:"
"^X-Trace:" "^X-Complaints-To:"
"^Received-SPF:" "^Message-ID:"
"^MIME-Version:" "^Content-Transfer-Encoding:"
"^Authentication-Results:"
"^X-Priority:" "^X-MSMail-Priority:"
"^X-Mailer:" "^X-MimeOLE:"
)))


;;;---------------------------------------------------
;; ファイル名が日本語の添付ファイルをデコードする [semi-gnus-ja: 4332]
(eval-after-load "mime"
'(defadvice mime-entity-filename
(after eword-decode-for-broken-MUA activate)
"Decode eworded file name for *BROKEN* MUA."
(when (stringp ad-return-value)
(setq ad-return-value (eword-decode-string ad-return-value t)))))

;; ファイル名が日本語の添付ファイルをエンコードする [semi-gnus-ja: 6046]
(eval-after-load "std11"
'(defadvice std11-wrap-as-quoted-string (before encode-string activate)
"Encode a string."
(require 'eword-encode)
(ad-set-arg 0 (or (eword-encode-string (ad-get-arg 0)) "" )) ))


;; 添付ファイルがある場合は「@」を表示
(setq elmo-msgdb-extra-fields
(cons "content-type" elmo-msgdb-extra-fields))
(setq wl-summary-line-format-spec-alist
(append wl-summary-line-format-spec-alist
'((?@ (wl-summary-line-attached)))))
(setq wl-summary-line-format "%n%T%P%1@%M/%D(%W)%h:%m %t%[%17(%c %f%) %] %s")


修正する場所は、

(setq elmo-imap4-default-user "もきゅもきゅ@gmail.com") ; メールアドレス
(setq wl-smtp-posting-user "もきゅもきゅ") ; 適宜修正してください
(setq wl-from "もきゅ <もきゅもきゅ@gmail.com>")

ぐらいで、あとはそのままで動作するでしょう。

~/.folders はこんな感じで。まだよくわかってない。

# -*- mode: conf-unix ; Coding: iso-2022-7bit -*-
#
%inbox "受信トレイ"
+Drafts "下書き"
%/


使い方

起動は M-x wl でフォルダ一覧が出ます。
見たいフォルダの上でRETでメール一覧(サマリモード)が開きます。Pで前のメールに、Nで次のメールに移動。RET でメールの内容が表示されます。
  •  新規にメールを書くときは、W
  •  返信するときは、a
  •  引用して返信は、A

 メールを編集(ドラフトモード)しているときは、C-c C-c で送信。C-c C-z でセーブして編集を中断。

一応これで動いています。まだWanderlustの使い方がよく判ってないのでいろいろとあれですが、受信、返信、新規メール送信ぐらいは覚えましたw

使ってみてFirefox上でGMail扱うよりも軽快に動くし、Emacsで編集していたものを、そのままメールで送信とか便利です。

  • 20080209追記:

    Gmailの容量が6.4GBになってました・・・なんかもう凄いですね。
    C-x m を wl-draft に割り当てましたので、Emacsで編集している文章を片っ端からWanderlustでGmailにメールしちゃいそうです><