Emacs の設定

エディタとしての機能の他に, MUA としても利用しています. 私が利用しているパッケージに, 次のようなものがあります.

ファイルの構成

Emacs 関連のファイルは, 次のような構成になります.

ここで, .folders, .addresses, MAIL 以下, .elmo 以下のファイルは, Wanderlust によって自動的に 作成されるものなので, ここでは残りのものについて書いていきます.

なお, .emacs-env 以下のファイルは, 私がファイル分割をする際に, 整頓のために作ったものなので, .emacs を読み出すときに, LISP の load コマンドで 一緒に読むようにしています. 詳しくは, Meadow に付属しているドキュメント等をを読みましょう. なお, Emacs の設定ファイルは, 8bit clean な環境を想定していないので, 日本語で書く場合には, iso-2022-jp コード (いわゆる JIS コード) で記述する必要があります.

まずは, 設定ファイルの本体である, .emacs から. 中身の大部分は, Meadow パッケージの中にある, dot.emacs.ja の写しです. Cygwin から呼び出すことを前提に書いていますが, 直接 EXE ファイルを実行しても大丈夫なはずです.

;;;; -*- mode: lisp-interaction; syntax: elisp; coding: iso-2022-7bit -*-
;;;;
;;;; Copyright (C) 2001 The Meadow Team

;; Author: Koichiro Ohba <koichiro@meadowy.org>
;;      Kyotaro HORIGUCHI <horiguti@meadowy.org>
;;      Hideyuki SHIRAI <shirai@meadowy.org>
;;      KOSEKI Yoshinori <kose@meadowy.org>
;;      and The Meadow Team.


;;; Mule-UCS の設定
;; ftp://ftp.m17n.org/pub/mule/Mule-UCS/
;; (set-language-environment) の前に設定します
(require 'un-define)
;(require 'jisx0213)
(setq bitmap-alterable-charset 'tibetan-1-column)
(require 'bitmap)

;;; 日本語環境設定
(set-language-environment "Japanese")

;;; IMEの設定
(mw32-ime-initialize)
(setq default-input-method "MW32-IME")
(setq-default mw32-ime-mode-line-state-indicator "[--]")
(setq mw32-ime-mode-line-state-indicator-list '("[--]" "[あ]" "[--]"))
(add-hook 'mw32-ime-on-hook
          (function (lambda () (set-cursor-height 2))))
(add-hook 'mw32-ime-off-hook
          (function (lambda () (set-cursor-height 4))))

;; インクリメンタルサーチに非ASCII文字を使う
(define-key isearch-mode-map "\C-k" 'isearch-edit-string)


;; ;;; カーソルの設定
;; ;; (set-cursor-type 'box)            ; Meadow-1.10互換 (SKK等で色が変る設定)
;; ;; (set-cursor-type 'hairline-caret) ; 縦棒キャレット


;;; マウスカーソルを消す設定
(setq w32-hide-mouse-on-key nil)

(setq w32-hide-mouse-timeout 5000)

;; フォントの設定
(load "~/.emacs-env/.font")



;; ;; X-Face のインライン表示
;; (cond
;;  ((locate-library "x-face-mule")        ; ライブラリの有無をチェック
;;    (require 'x-face-mule)
;;   ;; 問い合わせなしでキャッシュファイルをセーブする
;;   (setq x-face-mule-force-save-cache-file t)))
;; 
;;  ;; bold, italic, bold itaric を追加。
;;  ;; Bold
;;  (w32-change-font-logfont "bdffont16-ascii" 1 
;;      (list 'bdf-font (expand-file-name "European/lt1-16b-etl.bdf" bdf-font-directory )))
;;  ;; italic
;;  (w32-change-font-logfont "bdffont16-ascii" 2 
;;      (list 'bdf-font (expand-file-name "European/lt1-16i-etl.bdf" bdf-font-directory )))
;;  ;; Bold itaric
;;  (w32-change-font-logfont "bdffont16-ascii" 3 
;;      (list 'bdf-font (expand-file-name "European/lt1-16bi-etl.bdf" bdf-font-directory )))
;; 

;; 行末の改行コード<CR>を^Mと表示するのを防ぐ
(add-hook 'comint-output-filter-functions 'shell-strip-ctrl-m nil t) 

;; 初期フレームの設定
(setq default-frame-alist
      (append (list '(foreground-color . "black") ; black
                    '(background-color . "antique white") ; LemonChiffon
;;                    '(background-color . "gray") ; gray
                    '(border-color . "white") ; black
                    '(mouse-color . "cyan") ; white
                    '(cursor-color . "dark gray") ; black
;;                    '(ime-font . "Nihongo-12") ; TrueType のみ
;;                    '(font . "bdf-fontset")    ; BDF
;;                    '(font . "private-fontset"); TrueType
                    '(width . 80)
                    '(height . 40)
                    '(top . 50)
                    '(left . 100))
              default-frame-alist))

;; ビープ音の設定
(set-message-beep 'ok)
;(setq visible-bell nil)

;; 行の表示など
(line-number-mode 1)
(column-number-mode 1)

;; ファイルバックアップの設定
(setq make-backup-files nil)

;; ;;; shell の設定

;;; Cygwin の bash を使う場合
(setq explicit-shell-file-name "bash.exe") 
(setq shell-file-name "sh.exe") 
(setq shell-command-switch "-c") 

;; ;;; Virtually UN*X!にある tcsh.exe を使う場合
;; (setq explicit-shell-file-name "tcsh.exe") 
;; (setq shell-file-name "tcsh.exe") 
;; (setq shell-command-switch "-c") 

;; ;;; WindowsNT に付属の CMD.EXE を使う場合。
;; (setq explicit-shell-file-name "CMD.EXE") 
;; (setq shell-file-name "CMD.EXE") 
;; (setq shell-command-switch "\\/c") 


;; ;;; coding-system の設定
;; (modify-coding-system-alist 'process ".*sh\\.exe" 'undecided-dos)


;;; argument-editing の設定
(require 'mw32script)
(mw32script-init)


;; ;;; browse-url の設定
(setq browse-url-browser-function 'browse-url-msie)
(setq browse-url-msie-program "iexplore")
(defun browse-url-msie (url)
  (interactive (browse-url-interactive-arg "URL: "))
  (if browse-url-msie-program
      (let ((w32-start-process-show-window t))
        (start-process (concat browse-url-msie-program url)
                       nil browse-url-msie-program url))))

;; (require 'browse-url)
;; (global-set-key [S-mouse-2] 'browse-url-at-mouse)

;;; Wanderlust の設定
(require 'mime-setup)
(autoload 'wl "wl" "Wanderlust" t)
(autoload 'wl-draft "wl-draft" "Write draft with Wanderlust." t)

;;; メールのドラフトを 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))
;;; ここまで

;;; elisp-w3m の設定
(load "~/.emacs-env/.w3m")

;;; yatex の設定
(load "~/.emacs-env/.yatex")

;;; CSS-mode
(autoload 'css-mode "css-mode")
(setq auto-mode-alist
     (cons '("\\.css$" . css-mode) auto-mode-alist))

;;; po-mode
(autoload 'po-mode "po-mode")
(setq auto-mode-alist (cons '("\\.po[tx]?\\'\\|\\.po\\." . po-mode)
                            auto-mode-alist))

;;; cc-mode 

;;;
;;; end of file
;;;

次に, フォントの設定ファイル .emacs-env/.font です.

;;; -*- mode:lisp -*-

;;; font-lockの設定
(if window-system
    (progn
      (setq font-lock-support-mode 'lazy-lock-mode)
      (global-font-lock-mode t)))


;;; TrueType フォント設定
(create-fontset-from-request "private-fontset"
                             '((width . 8)
                               (height . 16)
                               (fixed . t)
                               (italic . nil))
                             '((family . "MS ゴシック")
                               (family . "Courier New")))

;; (change-fontset-from-request "private-fontset"
;;                              '((width . 8)
;;                                (height . 16)
;;                                (fixed . t)
;;                                (weight . 700)
;;                                (italic . nil))
;;                              '((family . "MS ゴシック")
;;                                (family . "Courier New"))
;;                              1)


;;; BDF フォント設定
;; intlfonts-1.2.tar.gz が必要です
;;   http://www.ring.gr.jp/archives/GNU/intlfonts/intlfonts-1.2.tar.gz
;;   http://ring.asahi-net.or.jp/archives/GNU/intlfonts/intlfonts-1.2.tar.gz
;;   ftp://ftp.m17n.org/pub/mule/intlfonts-1.2.tar.gz
;;   ftp://ftp.gnu.org/pub/gnu/intlfonts/intlfonts-1.2.tar.gz
;; などから入手してください
;; c:/MEADOW/intlfonts-1.2 と展開した場合の設定例となっています。
(defvar bdf-font-directory "f:/MEADOW/fonts/intlfonts")
(defvar bdf-font-name-prefix "bdffont16-")

(defvar bdf-font-file-alist
  '((ascii "European/lt1-16-etl.bdf" 0)
     (latin-iso8859-1 "European/lt1-16-etl.bdf" 1)   ; ISO8859-1
     (latin-iso8859-2 "European/lt2-16-etl.bdf" 1)   ; ISO8859-2
     (latin-iso8859-3 "European/lt3-16-etl.bdf" 1)   ; ISO8859-3
     (latin-iso8859-4 "European/lt4-16-etl.bdf" 1)   ; ISO8859-4
     (cyrillic-iso8859-5 "European/cyr16-etl.bdf" 1) ; ISO8859-5
     (arabic-iso8859-6 "Misc/arab16-0-etl.bdf" 0)    ; ISO8859-6 ???
     (greek-iso8859-7 "European/grk16-etl.bdf" 1)    ; ISO8859-7
     (hebrew-iso8859-8 "Misc/heb16-etl.bdf" 1)       ; ISO8859-8
     (latin-iso8859-9 "European/lt5-16-etl.bdf" 1)   ; ISO8859-9
     (thai-tis620 "Asian/thai16.bdf" 1)              ; TIS620
     (katakana-jisx0201 "japanese.X/8x16rk.bdf" 1)   ; JISX0201
     (latin-jisx0201 "japanese.X/8x16rk.bdf" 0)      ; JISX0201
     (japanese-jisx0212 "japanese/jksp16.bdf" 0)     ; JISX0212
     (japanese-jisx0208-1978 "japanese/j78-16.bdf" 0); JISX0208.1978
     (japanese-jisx0208 "japanese.X/jiskan16.bdf" 0) ; JISX0208.1983
     (japanese-jisx0213-1 "Japanese.X/jiskan16-2000-1.bdf" 0)   ; JISX0213-2000(Plane 1) * Mule-UCS が必要です
     (japanese-jisx0213-2 "Japanese.X/jiskan16-2000-2.bdf" 0)   ; JISX0213-2000(Plane 2) * Mule-UCS が必要です
     (korean-ksc5601 "Korean.X/hanglm16.bdf" 0)      ; KSC5601   mincho
 ;;    (korean-ksc5601 "Korean.X/hanglg16.bdf" 0)    ; KSC5601   gothic
     (chinese-gb2312 "Chinese.X/gb16fs.bdf" 0 )      ; GB2312  ???
     (chinese-cns11643-1 "Chinese/cns1-16.bdf" 0)    ; CNS11643.1992-1
     (chinese-cns11643-2 "Chinese/cns2-16.bdf" 0)    ; CNS11643.1992-2
     (chinese-cns11643-3 "Chinese/cns3-16.bdf" 0)    ; CNS11643.1992-3
     (chinese-cns11643-4 "Chinese/cns4-16.bdf" 0)    ; CNS11643.1992-4
     (chinese-cns11643-5 "Chinese/cns5-16.bdf" 0)    ; CNS11643.1992-5
     (chinese-cns11643-6 "Chinese/cns6-16.bdf" 0)    ; CNS11643.1992-6
     (chinese-cns11643-7 "Chinese/cns7-16.bdf" 0)    ; CNS11643.1992-7
     (chinese-big5-1 "Chinese/taipei16.bdf" encode-big5-font) ; Big5
     (chinese-big5-2 "Chinese/taipei16.bdf" encode-big5-font) ; Big5
     (chinese-sisheng "Chinese/sish16-etl.bdf" 0)    ; sisheng_cwnn ???
     (vietnamese-viscii-lower "Asian/visc16-etl.bdf" encode-viscii-font) ; VISCII1.1
     (vietnamese-viscii-upper "Asian/visc16-etl.bdf" encode-viscii-font) ; VISCII1.1
     (arabic-digit "Misc/arab16-0-etl.bdf" 0)        ; MuleArabic-0
     (arabic-1-column "Misc/arab16-1-etl.bdf" 0)     ; MuleArabic-1
     (arabic-2-column "Misc/arab16-2-etl.bdf" 0)     ; MuleArabic-2
     (ipa "Misc/ipa16-etl.bdf" 1)                    ; MuleIPA
     (ethiopic "Ethiopic/ethio16f-uni.bdf" encode-ethio-font) ; Ethiopic-Unicode
 ;;    (ascii-right-to-left "European/lt1-16-etl.bdf" 0) ; ISO8859-1 ;; ???
     (indian-is13194 "Asian/isci16-mule.bdf" 0)      ; IS13194-Devanagari
     (indian-2-column "Asian/ind16-mule.bdf" 0)      ; MuleIndian-2
     (indian-1-column "Asian/ind1c16-mule.bdf" 0)    ; MuleIndian-1
     (lao "Asian/lao16-mule.bdf" 1)                  ; MuleLao-1
     (tibetan "Asian/tib16-mule.bdf" 0)              ; MuleTibetan-0
     (tibetan-1-column "Asian/tib1c16-mule.bdf" 0)   ; MuleTibetan-1
     ))

次に, meadow 内で使う w3m を設定するためのファイルである, .emacs-env/.w3m の設定です.

;;; elisp-w3m の設定
(autoload 'w3m "w3m" "Interface for w3m on Emacs." t)
(autoload 'w3m-find-file "w3m" "w3m interface function for local file." t)
(autoload 'w3m-browse-url "w3m" "Ask a WWW browser to show a URL." t)
(autoload 'w3m-search "w3m-search" "Search QUERY using SEARCH-ENGINE." t)
(autoload 'w3m-weather "w3m-weather" "Display weather report." t)
(autoload 'w3m-antenna "w3m-antenna" "Report chenge of WEB sites." t)

次に, YaTeX モード, および, YaHTML モードの設定をするためのファイル, .emacs-env/.yatex の設定です.

;; -*- mode:lisp -*-

;;; yatex の設定
(cond
 ((locate-library "yatex")
  (autoload 'yatex-mode "yatex" "Yet Another LaTeX mode" t)

  ;; 拡張子が .tex のファイルを開くときに yatex-mode にする
  (setq auto-mode-alist (cons '("\\.tex$" . yatex-mode) auto-mode-alist))

  ;; 漢字コードの指定(1=sjis, 2=jis, 3=euc)
;;  (setq YaTeX-kanji-code 1)
  (setq YaTeX-kanji-code 3)

  ;; 外部コマンドの指定(パスが通ってない場合は絶対パスで記述)
  ;;(setq tex-command "platex")
  ;;(setq dvi2-command "dviout")
  ;;(setq bibtex-command "jbibtex")
  ;;(setq makeindex-command "mendex")

  (setq tex-command "platex")
  (setq dvi2-command "dviout")
  (setq bibtex-command "jbibtex")
  (setq makeindex-command "mendex")

  (setq YaTeX-nervous nil)

  (setq latex-message-kanji-code 3)

  ;; yatex-mode 初期化時の設定
  (add-hook 'yatex-mode-hook
            (function
             (lambda ()
               ;; outline-minor-mode の設定(使用しない場合は不要)
               (outline-minor-mode t)   ; outline-minor-mode を起動
               (make-local-variable 'outline-regexp)
               (setq outline-regexp     ; 見出しの正規表現
                     (concat "[ \t]*\\\\"
                             "\\(appendix\\|documentstyle\\|part\\|chapter\\|"
                             "section\\|subsection\\|subsubsection\\|"
                             "paragraph\\|subparagraph\\)"
                             "\\*?[ \t]*[[{]"))

               ;; font-lock 用の設定(使用しない場合は不要)
               (setq YaTeX-use-font-lock t))))))


;; ;;; 印刷の設定
;; ;; この設定で M-x print-buffer RET などでの印刷ができるようになります
;; ;;
;; ;;  notepad に与えるパラメータの形式の設定
;; (define-process-argument-editing "notepad"
;;   (lambda (x) (general-process-argument-editing-function x nil t)))
;;
;; (defun w32-print-region (start end
;;                                &optional lpr-prog delete-text buf display
;;                                &rest rest)
;;   (interactive)
;;   (let ((tmpfile (expand-file-name (make-temp-name "w32-print-")
;;                                    temporary-file-directory))
;;         (coding-system-for-write w32-system-coding-system))
;;     (write-region start end tmpfile nil 'nomsg)
;;     (call-process "notepad" nil nil nil "/p" tmpfile)
;;     (and (file-writable-p tmpfile) (delete-file tmpfile))))
;;
;; (setq print-region-function 'w32-print-region)

;; yahtml の設定

 (cond
  ((locate-library "yahtml")
   (autoload 'yahtml-mode "yahtml" "Yet Another html mode" t)

   ;; 拡張子が .html, .htm のファイルを開くときに yahtml-mode にする
   (setq auto-mode-alist (cons '("\\.[sp]?html?$" . yahtml-mode)
                               auto-mode-alist))

   ;; 漢字コードの指定(1=sjis, 2=jis, 3=euc)
   (setq yahtml-kanji-code 3)

   ;; 要素名や、属性指定子を小文字にする
   (setq yahtml-prefer-upcases nil)
   (setq yahtml-prefer-upcase-attributes nil)

   ;; 無用な区切り文字を挿入しない
   (setq yahtml-faithful-to-htmllint t)

   ;; yahtml モードの起動が遅い場合に次の設定を有効にする
   ;; アクセス制限ファイル .htaccess を参照しないようにする
   ;;(setq yahtml-server-type nil)

   ;; P 要素の終了タグを挿入する
   (setq yahtml-always-/p t)

   ;; 外部コマンドの指定(パスが通ってない場合は絶対パスで記述)
   (setq yahtml-www-browser "fiber")
   (setq yahtml-lint-program "htmllint -pedantic")
   (setq yahtml-lint-buffer "*Another HTML-lint*")

   ;; yahtml-mode 初期化時の設定
   (add-hook 'yahtml-mode-hook
             (function
              (lambda ()
                ;; outline-minor-mode の設定(使用しない場合は不要)
                (outline-minor-mode t)   ; outline-minor-mode を起動
                ;; 見出しの正規表現
                (make-local-variable 'outline-regexp)
                (setq outline-regexp "^.*<[Hh][1-6]\\>") 
                ;; 見出し終わりの正規表現
                (make-local-variable 'outline-heading-end-regexp)
                (setq outline-heading-end-regexp "</[Hh][1-6]>")
                ;; 見出しレベルの計算式
                (make-local-variable 'outline-level)
                (setq outline-level
                      (function (lambda () (char-after (1- (match-end 0))))))
                
                ;; META 要素内の date に対する, 更新日の自動更新
                
                (set (make-local-variable 'time-stamp-start)
                     (concat "<[Mm][Ee][Tt][Aa][ \t\n\r]+"
                             "\\([Nn][Aa][Mm][Ee]\\|[Hh][Tt][Tt][Pp]-"
                             "[Ee][Qq][Uu][Ii][Vv]\\)"
                             "[ \t\n\r]*=[ \t\n\r]*"
                             "\"\\(date\\|Last-Modified\\)\"[ \t\n\r]+"
                             "[Cc][Oo][Nn][Tt][Ee][Nn][Tt][ \t\n\r]*"
                             "=[ \t\n\r]*\""))
                (set (make-local-variable 'time-stamp-format)
                     "%3a, %02d %3b %:y %02H:%02M:%02S %Z") ; rfc1123-date
                (set (make-local-variable 'time-stamp-line-limit) 30)
                ;; auto time-stamp
                (add-hook 'local-write-file-hooks 'time-stamp)
                (auto-fill-mode)
                
                ;; font-lock の設定
                (setq YaTeX-use-font-lock t))))))

私が浅学なもので, LISP における CI な正規表現を知らないので, 一部の文が見難くなっています. 各自工夫をして, 簡潔に書いてみましょう.

最後に, .wlの設定です. これはケース・バイ・ケースなので, そのまま写してもダメです. あくまで参考程度にとどめてください. なお, Wanderlust そのものの使い方は, ここでは一切解説しないので, 各自, 調べてください. (私は, Outlook Express に不便を感じたので, Wanderlust に乗り換えました.)

;;; dot.wl -*- emacs-lisp -*-

;; [[ 動作に必要な設定 ]]

;; まず、次の設定を ~/.emacs などに書いてください。
;; ここから
(require 'mime-setup)
(autoload 'wl "wl" "Wanderlust" t)
(autoload 'wl-draft "wl-draft" "Write draft with Wanderlust." t)
;; ここまで

;; アイコンを置くディレクトリ (XEmacs, Emacs21 のみ)
;; XEmacs の package としてインストールされている場合は必要ありません。
;(setq wl-icon-dir "/usr/local/lib/emacs/etc")
(setq wl-demo-display-logo t)

;;; [[ 個人情報の設定 ]]

;; From: の設定
(setq wl-from "Satoshi NANIGASHI <ark-h@ma4.seikyou.ne.jp>")
(setq wl-organization "Somewhere Lab.")

;; 自分のメールアドレスのリスト
(setq wl-user-mail-address-list
      (list (wl-address-header-extract-address wl-from)
            ;; "e-mail2@example.com"
            ;; "e-mail3@example.net" ...
            ))

;; 自分の参加しているメーリングリストのリスト
(setq wl-subscribed-mailing-list
      '("wl@lists.airs.net"
        "apel-ja@m17n.org"
        "emacs-mime-ja@m17n.org"
        ;; "ml@example.com" ...
        ))


;;; [[ サーバの設定 ]]

;; IMAP サーバの設定
(setq elmo-imap4-default-server "imap4.mail.com")
;; POP サーバの設定
(setq elmo-pop3-default-server "pop3.mail.com")
;; SMTP サーバの設定
(setq wl-smtp-posting-server "smtp.mail.com")
;; ニュースサーバの設定
(setq elmo-nntp-default-server "news.mail.com")
;; 投稿先のニュースサーバ
(setq wl-nntp-posting-server elmo-nntp-default-server)

;; (system-name) が FQDN を返さない場合、
;; `wl-local-domain' にホスト名を除いたドメイン名を設定してください。
;; (system-name)  "." wl-local-domain が Message-ID に使用されます。
(setq wl-local-domain "localdomain.mail.com")

;; ダイヤルアップのための設定
(setq smtp-local-domain "smtp.local.mail.com")

;; Message-ID のドメインパートを強制的に指定
;(setq wl-message-id-domain "hostname.example.com")

;; IMAP サーバの認証方式の設定
(setq elmo-imap4-default-authenticate-type 'clear) ; 生パスワード
;;(setq elmo-imap4-default-authenticate-type 'cram-md5) ; CRAM-MD5

;; POP-before-SMTP
(setq wl-draft-send-mail-function 'wl-draft-send-mail-with-pop-before-smtp)
(setq wl-pop-before-smtp-user 'UserID);

;;; [[ 基本的な設定 ]]

;; `wl-summary-goto-folder' の時に選択するデフォルトのフォルダ
;; (私は, 全て MH 形式で保存しています.
;; mbox 形式だと, 多量のメールの扱いに困る上に, 一箇所が壊れると,
;; 最悪の場合は他のメールも読めなくなるからです.)
;(setq wl-default-folder "+inbox")

;; フォルダ名補完時に使用するデフォルトのスペック
;(setq wl-default-spec "+")

;; Folder Carbon Copy
;(setq wl-fcc "+outbox")

;; 終了時に確認する
(setq wl-interactive-exit t)

;; メール送信時には確認する
(setq wl-interactive-send t)

;; スレッドは常に開く
;(setq wl-thread-insert-opened t)

;; サマリバッファの左にフォルダバッファを表示する (3ペイン表示)
; t の場合
(setq wl-stay-folder-window nil)

;; ドラフトを新しいフレームで書く
;(setq wl-draft-use-frame t)

;; HTML パートを表示しない
;(setq mime-setup-enable-inline-html nil)

;; 大きいメッセージを送信時に分割しない
(setq mime-edit-split-message nil)

;; サブジェクトが変わったらスレッドを切って表示
;(setq wl-summary-divide-thread-when-subject-changed t)

;; スレッドの見た目を変える
;(setq wl-thread-have-younger-brother-str "+"
;      wl-thread-youngest-child-str       "+"
;      wl-thread-vertical-str             "|"
;      wl-thread-horizontal-str           "-"
;      wl-thread-space-str                " ")

;; サマリ移動後に先頭メッセージを表示する
;(setq wl-auto-select-first t)

;; サマリ内の移動で未読メッセージがないと次のフォルダに移動する
;(setq wl-auto-select-next t)

;; 未読がないフォルダは飛ばす(SPCキーだけで読み進める場合は便利)
;(setq wl-summary-next-no-unread 'skip-no-unread)

;; 未読メッセージを優先的に読む
;(setq wl-summary-move-order 'unread)

;; メール着信を知らせる
(setq wl-biff-check-folder-list '("+inbox"))
(setq wl-biff-notify-hook '(ding))

;;;添付ファイル名に日本語が使われている場合の対策
(eval-after-load "mime"
  '(defadvice mime-entity-filename (around mime-decode activate)
     ad-do-it
     (and ad-return-value
          (setq ad-return-value
                (eword-decode-string (decode-mime-charset-string
                                      ad-return-value
                                      'iso-2022-jp))))))

;;; [[ ネットワーク ]]

;; フォルダ種別ごとのキャッシュの設定
;; (localdir, localnews, maildir はキャッシュできない)
;(setq elmo-archive-use-cache nil)
;(setq elmo-nntp-use-cache t)
;(setq elmo-imap4-use-cache t)
;(setq elmo-pop3-use-cache t)

;; オフライン(unplugged)操作を有効にする(現在はIMAPフォルダのみ)
;(setq elmo-enable-disconnected-operation t)

;; unplugged 状態で送信すると,キュー(`wl-queue-folder')に格納する
(setq wl-draft-enable-queuing t)
;; unplugged から plugged に変えたときに,キューにあるメッセージを送信する
(setq wl-auto-flush-queue t)

;; 起動時はオフライン状態にする
;(setq wl-plugged nil)
;; 起動時にポートごとのplug状態を変更する
;(add-hook 'wl-make-plugged-hook
;          '(lambda ()
;             ;; server,portのplug状態を新規追加もしくは変更する
;             (elmo-set-plugged plugged値(t/nil) server port)
;             ;; port を省略するとserverの全portが変更される
;             ;; (port を省略して新規の追加はできない)
;             (elmo-set-plugged plugged値(t/nil) server)
;             ))


;;; [[ 特殊な設定 ]]

;; グループをcheckした後に未読があるフォルダのグループを自動的に開く
;(add-hook 'wl-folder-check-entity-hook
;          '(lambda ()
;             (wl-folder-open-unread-folder entity)
;             ))

;; サマリ表示関数を変更する

;; サマリ表示において使用する情報を持つフィールドをoverview情報に
;; 入れる設定(ただし,localフォルダのみ)
;; 自動リファイルに必要なフィールドも設定
(setq elmo-msgdb-extra-fields '("newsgroups"
                                "x-ml-name" "list-id"
                                "x-mail-count" "x-ml-count" "x-sequence"
                                "mailing-list"))

;; ML のメッセージであれば,サマリの Subject 表示に
;; ML名 や MLにおけるメッセージ番号も表示する
;(setq wl-summary-subject-func 'my-wl-summary-subject-func-ml)
(setq wl-summary-subject-function 'my-wl-summary-subject-func-ml)
(defun my-wl-summary-subject-func-ml (subject-string)
  (let ((folder wl-summary-buffer-folder-name)
        (subj subject-string) (sequence) (ml-name) (ml-count))
    (setq sequence (elmo-msgdb-overview-entity-get-extra-field
                    entity "x-sequence")
          ml-name (or (elmo-msgdb-overview-entity-get-extra-field
                       entity "x-ml-name")
                      (and sequence
                           (car (split-string sequence " "))))
          ml-count (or (elmo-msgdb-overview-entity-get-extra-field
                        entity "x-mail-count")
                       (elmo-msgdb-overview-entity-get-extra-field
                        entity "x-ml-count")
                       (and sequence
                            (cadr (split-string sequence " ")))))
    (if (string-match
;;;         "^\\s(\\(.+\\)[ :]\\([0-9]+\\)\\s)[ \t]*"
         "^\\s(\\(\\S)+\\)[ :]\\([0-9]+\\)\\s)[ \t]*"
         subject-string)
        (progn
          (setq subj (substring subject-string (match-end 0)))
          (if (not ml-name) (setq ml-name (match-string 1 subject-string)))
          (if (not ml-count) (setq ml-count (match-string 2 subject-string)))))
    (if (and ml-name ml-count)
        (if (string= folder wl-default-folder)
            (format "(%s %05d) %s"
                    (car (split-string ml-name " "))
                    (string-to-int ml-count)
                    subj)
          (format "#%05d %s"
                  (string-to-int ml-count) subj))
      subj)))

;; imput により非同期で送信する
;; (utils/im-wl.el をインストールしておく必要があります。
;;  また,~/.im/Config の設定(Smtpservers)を忘れないことと,
;;  wl-draft-enable-queuing の機能が働かなくなることに注意。)
;(autoload 'wl-draft-send-with-imput-async "im-wl")
;(setq wl-draft-send-func 'wl-draft-send-with-imput-async)


;; 短い User-Agent: フィールドを使う
;(setq wl-generate-mailer-string-func
;      (function
;       (lambda ()
;         (wl-generate-user-agent-string-1 nil))))


;;; [[ テンプレート ]]

;; テンプレートの設定
(setq wl-template-alist
      '(("default"
         ("From" . wl-from)
         ("Organization" . "~/.wl sample")
         (body . "  何某です。\n"))                ;; 本文
;        ("report"
;         ("To" . "boss@example.com")
;         ("Subject" . "報告")
;         (top . "今週の報告です。\n")                ;; 本文先頭への挿入
;;         (bottom-file . "~/work/report.txt")        ;; 本文末尾へファイルの挿入
;         )
        ("private"
         ("Organization" . "Hokkaidou University")
         (top . "何某です。\n")
         (bottom . "--------\n何某哲\nark-h@ma4.seikyou.ne.jp"))
)
       

;; ドラフトバッファの内容により From や Organization などのヘッダを自
;; 動的に変更する
(setq wl-draft-config-alist
      '((reply                        ;; 返信元のバッファを見る
         "^To: .*\\(test-notsend-wl@lists.airs.net\\)"
         (template . "default"))                ;; テンプレート
        ("^To: .*\\(test-notsend-wl@lists.airs.net\\)"
         wl-ml-draft-config-func                ;; 関数
         ("From" . wl-from)                        ;; 変数
         ("Organization" . "~/.wl sample"))        ;; 文字列
        ("^Newsgroups: test.*"
         ("Organization" . "ニュース投稿時の組織名"))
        ))

;; ドラフト作成時(返信時)に,自動的にヘッダを変更する
;(add-hook 'wl-mail-setup-hook
;          '(lambda ()
;             (unless wl-draft-reedit        ; 再編集時は適用しない
;               (wl-draft-config-exec wl-draft-config-alist))))


;;; [[ 返信時の設定 ]]

;; 返信時のウィンドウを広くする
;(setq wl-draft-reply-buffer-style 'full)

;; 返信時のヘッダに相手の名前を入れない。
;(setq wl-draft-reply-use-address-with-full-name nil)

;; メールの返信時に宛先を付ける方針の設定
;; 下記変数の alist の要素
;; ("返信元に存在するフィールド" .
;;   ('Toフィールド' 'Ccフィールド' 'Newsgroupsフィールド'))

;; "a" (without-argument)では Reply-To: や From: などで指定された唯一人
;; または唯一つの投稿先に返信する。また,X-ML-Name: と Reply-To: がつい
;; ているなら Reply-To: 宛にする。
(setq wl-draft-reply-without-argument-list
      '((("X-ML-Name" "Reply-To") . (("Reply-To") nil nil))
        ("X-ML-Name" . (("To" "Cc") nil nil))
        ("Followup-To" . (nil nil ("Followup-To")))
        ("Newsgroups" . (nil nil ("Newsgroups")))
        ("Reply-To" . (("Reply-To") nil nil))
        ("Mail-Reply-To" . (("Mail-Reply-To") nil nil))
        ("From" . (("From") nil nil))))

;; "C-u a" (with-argument)であれば関係する全ての人・投稿先に返信する。
(setq wl-draft-reply-with-argument-list
      '(("Followup-To" . (("From") nil ("Followup-To")))
        ("Newsgroups" . (("From") nil ("Newsgroups")))
        ("Mail-Followup-To" . (("Mail-Followup-To") nil ("Newsgroups")))
        ("From" . (("From") ("To" "Cc") ("Newsgroups")))))

;; プリフェッチの設定
; プリフェッチを有効にするフォルダ
(setq wl-message-buffer-prefetch-folder-type-list t)
; プリフェッチのサイズ制限. nil なら無限大
(setq wl-message-buffer-prefetch-threshold nil)

;; X-Face を表示する (要 x-face (and x-face-mule))
(when (and window-system
           (module-installed-p 'x-face))
  (cond (wl-on-xemacs                        ;; for XEmacs
         (autoload 'x-face-xmas-wl-display-x-face "x-face" nil t)
         (setq wl-highlight-x-face-function
               'x-face-xmas-wl-display-x-face))
        ;; for Mule (GNU Emacs)
        ((module-installed-p 'x-face-mule)
         ;; x-face-mule 0.20以後
         (setq wl-highlight-x-face-function
               (function
                (lambda (&rest dummy)
                  (x-face-decode-message-header))))
         (require 'x-face-mule)
         )))

;; 自動リファイルのルール設定
(setq wl-refile-rule-alist
      '(
        ("From"
         (".*@vector.co.jp" . "+vector")
         ("ark-h@ma4.seikyou.ne.jp" . "+sent-mail")
        ("Subject"
         (".*Weekly Mag2.*" . "+magmag"))
        ("To"
         ("htmllint@ring.gr.jp" . "+htmllint"))
         ("x-ml-name"
         ("^Meadow" . "+meadow")
              ("^Wanderlust" . "+wanderlust")
              ("^Elisp" . "+elisp"))))

;; 自動リファイルしない永続マークを設定
;; 標準では "N" "U" "!" になっており、未読メッセージを自動リファイルし
;; ません。nil ですべてのメッセージが対象になります。
(setq wl-summary-auto-refile-skip-marks nil)

;; 自分宛にBccで送る

(setq wl-bcc "ark-h@ma4.seikyou.ne.jp")

;; GnuPG の設定
(setq pgp-version 'gpg)
(setq pgg-default-user-id "Satoshi NANIGASHI <ark-h@ma4.seikyou.ne.jp>")
(setq pgg-cache-passphrase nil)
(setq pgg-gpg-shell-file-name "/bin/bash")
(setq pgg-gpg-program "/usr/bin/gpg")

;; 自動削除の設定
; 自動削除のログを取る
(setq wl-expire-use-log t)
; 削除の設定
(setq wl-expire-alist
      '(("^\\+magmag$" (date 7) trash) ;; ゴミ箱へ移動
        ("^\\+vector$" (date 14) trash)
        ("^\\+trash$" (date 21) remove) ;; 削除
))

;; スコア機能の設定
;; `wl-score-folder-alist' の設定に関わらず必ず "all.SCORE" は使用される。
;(setq wl-score-folder-alist
;      '(("^-comp\\."
;         "news.comp.SCORE"
;         "news.SCORE")
;        ("^-"
;         "news.SCORE")))

;; スコアファイルを保存するディレクトリ
; (setq wl-score-files-directory "~/.elmo/")

;;; dot.wl ends here

以上で設定は終わりです.