;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;  FSF Emacs 20 用 ユーザ設定ファイルのサンプル
;;    MATSUBAYASHI 'Shaolin' Kohji (shaolin@rins.st.ryukoku.ac.jp>
;;                      modified by Jun Nishii <jun@vinelinux.org>
;;                          Time-stamp: <2001-04-18 16:43:07 student>
;;  ベースにした設定ファイル：
;;  PJE-0.1 ユーザ設定ファイルサンプル for emacs(mule)
;;                       MATSUMOTO Shoji (shom@i.h.kyoto-u.ac.jp)


;;; 初期設定ファイルの指定

(setq user-init-file "~/.emacs.el")

;;; 言語環境の指定

(set-language-environment "Japanese")

;;; 漢字コードの指定

(set-default-coding-systems 'euc-jp)
(set-buffer-file-coding-system 'euc-jp-unix)
(set-terminal-coding-system 'euc-jp)
(set-keyboard-coding-system 'euc-jp)

;;; 一行が 80 字以上になった時には自動改行する
(setq fill-column 80)
(setq text-mode-hook 'turn-on-auto-fill)
(setq default-major-mode 'text-mode)

;;; emacsclient サーバを起動
(server-start)

;;; gzファイルも編集できるように
(auto-compression-mode t)

;; 環境変数 EMACS_IME を調べる。- 現在のところ、canna または Canna なら、
;; 「かんな」を使用する。それ以外の場合は Wnn を使用する。

(setq emacs-ime (getenv "EMACS_IME"))
(if (null emacs-ime)
    (setq emacs-ime "wnn"))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Egg (Wnn フロントエンド) の設定
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(if (or (equal emacs-ime "wnn")
	(equal emacs-ime "Wnn")
	(equal emacs-ime "wnn6")
	(equal emacs-ime "Wnn6")
	)
  (progn
    (autoload 'egg "egg" "Initialize EGG." t)
    (egg)
    (global-set-key "\C-\\" 'toggle-egg-mode)
    (define-key isearch-mode-map "\C-\\" 'isearch-fep-egg)
    (autoload 'toggle-egg-mode "egg" "Initialize EGG." t)
    (autoload 'isearch-fep-egg "isearch-ext"
      "Read string for incremental search by using egg." t)

    (setq egg-default-startup-file "eggrc-wnn") ; 95.6.1 by S.Tomura
    (garbage-collect)

    ;; jserver のリストを次の様にして指定できます
    ;;(setq jserver-list '("vanilla" "espresso"))
    (setq jserver-list (list (getenv "JSERVER") "localhost"))

    ;; "nn" で「ん」を入力
    (setq enable-double-n-syntax t)

    ;; "." で「．」、"," で「，」を入力。 
    (setq use-kuten-for-period nil)
    (setq use-touten-for-comma nil)

    ;; 1234567890%#%"' を「半角」で入力"
    (let ((its:*defrule-verbose* nil))
    (its-define-mode "roma-kana")
    (dolist (symbol '("1" "2" "3" "4" "5" 
    		  "6" "7" "8" "9" "0"
    		  "#" "%" "\"" "'" ))
    	(its-defrule symbol symbol)))

    ;; おまけ :-)
    ;;(set-egg-fence-mode-format "♪" "♪" 'highlight)
    )
)


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; かんなの設定
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(if (or (equal emacs-ime "canna")
	(equal emacs-ime "Canna")
	)
    (progn
      (load-library "canna")

      ;; color-mate を使わないで、漢字変換に色を付けたい時に
      ;;(setq canna-use-color t)

      ;; フェンスモードでなくアンダーラインを使う
      ;;(setq canna-with-fences nil)
      ;;(setq canna-underline t)

      ;; Canna サーバの指定
      (if (null (getenv "CANNASERVER"))
	  (setq canna-server "localhost")
	(setq canna-server (getenv "CANNASERVER")))
      (canna)

      ;; Canna を Ctrl-\ で起動します。コメントアウトすれば、
      ;; Ctrl-\ で skk が立ち上がります。
      (global-set-key "\C-\\" 'canna-toggle-japanese-mode)

      (global-set-key "\C-_" 'canna-undo)  ;アンドゥの設定。
      (setq canna-save-undo-text-predicate ;アンドゥバッファへ入れる条件
            '(lambda (s) (> (length (car s)) 2)) )
      (setq canna-undo-hook ;アンドゥ＋α。
            '(lambda () (message "再変換します....")                          
               (canna-do-function canna-func-henkan)) )

      ;;かんなの変換中に BS & DEL を使う
      ;;(define-key canna-mode-map [backspace] [?\C-h])
      ;;(define-key canna-mode-map [delete] [?\C-h])

      ;;かんなの変換中に C-h を使う (with term/keyswap)
      (define-key canna-mode-map [?\177] [?\C-h])
      )
)


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; SKK-9.6m 
;;   Mule 上の仮名漢字変換システム SKK の設定
;;   C-x t でチュートリアルが起動します
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;; 使用する辞書の設定 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;; SKK-JISYO.L をメモリ上に読み込んで利用する場合
(setq skk-large-jisyo "/usr/share/skk/SKK-JISYO.L")

;;; SKK-JISYO.M をメモリ上に読み込み、
;;; 見付からない場合は skkserv を起動して SKK-JISYO.L から検索する場合
;;; (skkexdic パッケージが必要です)
;;(setq skk-large-jisyo "/usr/share/skk/SKK-JISYO.M")
;;(setq skk-aux-large-jisyo "/usr/share/skk/SKK-JISYO.L")
;;(setq skk-server-portnum 1178)
;;(setq skk-server-host "localhost")
;;(setq skk-server-prog "/usr/libexec/skkserv")

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(global-set-key "\C-x\C-j" 'skk-mode)
(global-set-key "\C-xj" 'skk-auto-fill-mode)
(global-set-key "\C-xt" 'skk-tutorial)
(autoload 'skk-mode "skk" nil t)
(autoload 'skk-auto-fill-mode "skk" nil t)
(autoload 'skk-tutorial "skk-tut" nil t)
(autoload 'skk-isearch-mode-setup "skk-isearch" nil t)
(autoload 'skk-isearch-mode-cleanup "skk-isearch" nil t)
(add-hook 'isearch-mode-hook
	  (function (lambda ()
		      (and (boundp 'skk-mode) skk-mode
			   (skk-isearch-mode-setup) ))))
(add-hook 'isearch-mode-end-hook
	  (function (lambda ()
		      (and (boundp 'skk-mode) skk-mode
			   (skk-isearch-mode-cleanup)
			   (skk-set-cursor-color-properly) ))))


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; X 版 Emacs/Mule で色を付ける
;;; color-mate の設定読み込み
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(load "~/.emacs-color.el")

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; X 版 Emacs/Mule で色を付ける
;; color-mate を使わない時にはこちらをどうぞ

;(cond
; ((and window-system (>= (string-to-int emacs-version) 19))
;      (setq hilit-mode-enable-list  nil
;            hilit-background-mode   'light
;            hilit-inhibit-hooks     nil
;            hilit-inhibit-rebinding nil)
;      (require 'hilit19)
;      ;;
;      (add-hook 'mew-message-hook
;                'hilit-rehighlight-buffer-quietly)
;     (hilit-set-mode-patterns 
;       '(mew-message-mode)
;       '(("^Subject:.*$" nil msg-subject)
;         ("^From:.*$" nil msg-from)
;         ("^X-.*:.*$" nil msg-quote)
;         ("^>.*$" nil msg-quote)
;         ("^[A-Za-z][A-Za-z0-9-]+:" nil msg-header)))
;      (add-hook 'mew-draft-mode-hook
;                'hilit-rehighlight-buffer-quietly)
;      (hilit-set-mode-patterns 
;       '(mew-draft-mode)
;       '(("^Subject:.*$" nil msg-subject)
;         ("^From:.*$" nil msg-from)
;         ("^>.*$" nil msg-quote)
;         ("^[A-Za-z][A-Za-z0-9-]+:" nil msg-header)))
;      )
; )


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; SEMI 
;;  Vine 1.9 からは tm (Tiny Mime) の代りに semi を使います
;;  (Mew は tm や semi なしでも MIME に対応しています)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(require 'mime-setup)
(load "path-util")
(setq rmail-enable-mime t)

;; rail-1.0.2 を使って User-Agent: フィールドのコードネームを日本語化する
(setq rail-emulate-genjis t)
(if (module-installed-p 'rail) (load "rail"))


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; T-Gnus 6.13.3 (参考)
;;   NetNews リーダー GNUS (SEMI 対応版)
;;   M-x gnus で起動します
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; News Server 名やドメイン名を適切に指定してください
;(setq gnus-nntp-server "news.hoge.hoge.or.jp")
;(setq gnus-local-domain "hoge.hoge.or.jp")
;(setq gnus-local-organization "HogeHoGe Org.")
;(setq gnus-use-generic-from t)


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Mew 1.94  -  Messaging in the Emacs World
;;   メールリーダー Mew
;;   M-x mew で起動します
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(autoload 'mew "mew" nil t)
(autoload 'mew-send "mew" nil t)

;; 返信時の引用フォーマットの指定
(setq mew-cite-fields '("From:" "Subject:" "Date:" "Message-ID:"))
(setq mew-cite-format "From: %s\nSubject: %s\nDate: %s\nMessage-ID: %s\n\n")
;;(setq mew-cite-prefix-function 'mew-cite-prefix-username)

;; 起動時にメールを取りにいかないようにする
(setq mew-auto-get nil)

;; From: に余計なもの (localhost 名等) が付いたりする場合は，
;; xxxx の部分にドメイン名を指定します
;(setq mew-mail-domain-list '("xxxx.xxxx.xxxx.xxxx"))
(setq mew-mail-domain-list '("mn.waseda.ac.jp"))

;; From ヘッダの "" で囲まれた文字も MIME デコードする
;(setq mew-decode-quoted t)

;; スレッド表示を行う
;(setq mew-prog-imls-arg-list '("--thread=yes"))

;; 自分に Bcc をつけない
;(setq mew-mail-address-list
;    '("あなたのメールアドレス" "他にもあれば"))

;; Reply-To ヘッダがある場合そのアドレスにだけ返信
;(setq mew-replyto-to-list '("Reply-To:"))
;(setq mew-replyto-cc-list nil)

;; ドラフトを用意する時に定型文を自動的に挿入する
;(add-hook 'mew-draft-mode-hook
;   (function
;      (lambda()
;         (let ((p (point)))
;         (goto-char (point-max))
;         (insert-file "~/Mail/teikei")
;         (goto-char p)))))

;; 引用(返信)時でも定型文を一番上に挿入する
;(add-hook 'mew-before-cite-hook
;   (lambda() (goto-char (point-max))))

;; 印刷コマンド設定
(setq mew-print-command-format "mpage -2 -P")
(defun mew-print-region (begin end)
     (interactive "r")
     (shell-command-on-region begin end mew-print-command-format))

(defun mew-print-buffer ()
    (interactive)
    (mew-print-region (point-min) (point-max)))
(setq mew-print-function (function mew-print-buffer))

;;; URL をマウス中クリックでブラウザ起動する様にする
(autoload 'browse-url-at-mouse "browse-url"
      "Ask a WWW browser to load a URL clicked with the mouse." t)
(add-hook 'mew-message-mode-hook
   (function
      (lambda()
         (local-set-key [mouse-2] 'browse-url-at-mouse)
)))

;;; らくらく整理整頓
;;; マッチするヘッダ、その値、リファイル先のフォルダを書いておくと、
;;; 簡単に振り分けができます

;(setq mew-refile-guess-alist
;  '(("Reply-To:"
;      ("vine-users@" . "+ml/vine-users")
;      ("foobar-ml@" . "+ml/FooBarML")
;    )
;    ("From:"
;      ("shaolin@rins" . "+from/shaolin")
;      ("hoge@foo.bar" . "+from/hoge")
;    )
;))


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Wanderlust 2.2.12
;;   IMAP にも対応したメール/ニュースリーダ
;;   これ以外の設定は ~/.wl で行います
;;   ~/.wl のサンプルは /usr/doc/Wanderlust-2.2.12 以下にあります
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(autoload 'wl "wl" "Wanderlust" t)
(autoload 'wl-draft "wl" "Write draft with Wanderlust." t)


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; X-Face-Mule
;;   Mew や Wanderlust などで、X-Face 画像つきのメッセージを表示します
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(if (and window-system (module-installed-p 'bitmap))
    (progn
      (require 'bitmap)
      (mapcar (lambda (fontset)
                (set-fontset-font
                  fontset 'bitmap
                  "-etl-fixed-medium-r-*--16-*-100-100-m-*-bitmap.8x16-0"))
              (fontset-list))

      ; for Wanderlust
      (setq wl-highlight-x-face-func
	    'x-face-mule-x-face-decode-message-header)

      ; for Mew
      (setq mew-use-highlight-x-face t)
      (setq mew-use-highlight-x-face-function
	    (function
	     (lambda (beg end)
	       (x-face-mule-x-face-decode-message-header beg end))))))


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; irchat-pj-2.4.24.07
;;   IRC (チャット) クライアントの設定
;;   M-x irchat で起動します
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(autoload 'irchat "irchat" nil t)

;;; IRC server の指定
;;; (いずれか一つをコメントアウトします)
;;(setq irchat-server "irc.tohoku.ac.jp")
;;(setq irchat-server "irc.kyutech.ac.jp")
;;(setq irchat-server "irc.tokyo.wide.ad.jp")
;;(setq irchat-server "irc.kyoto.wide.ad.jp")
;;(setq irchat-server "irc.huie.hokudai.ac.jp")
;;(setq irchat-server "irc.cc.yamaguchi-u.ac.jp")
;;(setq irchat-server "irc.karrn.ad.jp")
;;(setq irchat-server "irc.kyoto.wide.ad.jp")

;;; ユーザー名とニックネーム
;;; (nick は半角英数および []{}_\^ からなる最大 9 文字の文字列です)
(setq irchat-name "IRC sample user")
(setq irchat-nickname "VineUser")

;;; デフォルトで参加するチャンネルのリスト
;;;  （ここに書いたチャンネルには irchat の起動と同時に参加できます）
;;(setq irchat-startup-channel-list '("#linuxjp,#vinetest"))
(setq irchat-startup-channel-list '("#vinetest"))

;;; オプション
;;;   詳細は /usr/doc/irchat-pj-2.4.24.07/doc 以下のファイルを参照
(setq irchat-reconnect-automagic t)      ; 切れた場合に再接続を試みる
;;(setq irchat-channel-buffer-mode t)    ; チャネル分割表示モード
;;(setq irchat-display-channel-always t)
;;(setq irchat-default-freeze-local nil)


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; YaTeX 1.67
;;   [La]TeX 入力モード
;;   M-x yatex とするか、.tex で終わるファイルを読み込むと起動します
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(autoload 'yatex-mode "yatex" "Yet Another LaTeX mode" t)

;; YaTeX-mode
(setq auto-mode-alist
      (cons (cons "\\.tex$" 'yatex-mode) auto-mode-alist))
(setq dvi2-command "xdvi"
      tex-command "platex"
      dviprint-command-format "dvips %s | lpr"
      YaTeX-kanji-code 3)

;; YaHtml-mode
(setq auto-mode-alist
      (cons (cons "\\.html$" 'yahtml-mode) auto-mode-alist))
(autoload 'yahtml-mode "yahtml" "Yet Another HTML mode" t)
(setq yahtml-www-browser "netscape")


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; dic (eldic.el)
;;   Mule 上で dic を利用するための設定です
;;   ~/lib/emacs に /usr/doc/dic/eldic.el をコピーして
;;   dic-shell-file-name の辺りを適切に設定してください。
;;   C-c C-c C-e で英和、C-c C-c C-j で和英が引けます。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;(global-set-key "\C-c\C-c\C-e" 'lookup-edic)
;;(global-set-key "\C-c\C-c\C-j" 'lookup-jdic)
;;(autoload 'lookup-edic "eldic" nil t)
;;(autoload 'lookup-jdic "eldic" nil t)



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; その他の設定
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;; マクロサーチパスの追加
;;; ~/lib/emacs 以下にユーザ用の *.el, *.elc を置くことができます
;;(setq load-path (append '("~/lib/emacs") load-path))

;;; C-h と Del の入れ替え
;;; Help が Shift + Ctrl + h および Del に割当てられ、
;;; 前一文字削除が Ctrl + h に割当てられます
;;(load-library "term/keyswap")
;;(if (eq window-system 'x)
;;    (progn
;;      (define-key function-key-map [delete] [8])
;;      (put 'delete 'ascii-character 8)))

;;; ステータスラインに時間を表示する
;;(display-time)

;;; mule/emacs -nw で起動した時にメニューバーを消す
;;(if window-system (menu-bar-mode 1) (menu-bar-mode -1))

;;; スクロールバーを右側に表示する
;;(set-scroll-bar-mode 'right)

;;; rpm-mode の読み込み
;;; rpm-mode.el は spec ファイルの作成に便利です。
;;;   ~/lib/emacs に /usr/doc/rpm/rpm-mode.el をコピーして以下の設定を
;;; 行ってください。

;(setq auto-mode-alist (nconc '(("\\.spec" . rpm-mode)) auto-mode-alist))
;(autoload 'rpm-mode "rpm-mode" "Major mode for editing SPEC file of RPM." t) 
;(setq packager "Vine User <vine@hoge.fuga>");自分の名前
;      (setq buildrootroot "/tmp");BuildRootの場所
;      (setq projectoname "Project Vine");プロジェクト名 

;;;印刷設定
;(setq-default lpr-switches '("-Pepson"))
(setq-default lpr-switches '("-2P"))
(setq-default lpr-command "mpage")

;; ps-print
(setq ps-multibyte-buffer 'non-latin-printer)

;;;バッファの最後でnewlineで新規行を追加するのを禁止する

(setq next-line-add-newlines nil)


;;; 最終更新日の自動挿入
;;;   ファイルの先頭から 8 行以内に Time-stamp: <> または
;;;   Time-stamp: " " と書いてあれば、セーブ時に自動的に日付が挿入されます
(if (not (memq 'time-stamp write-file-hooks))
    (setq write-file-hooks
          (cons 'time-stamp write-file-hooks)))

;;;
;;; For TRR
;;;
(setq load-path (append '("~/lib/emacs/site-lisp/trr") load-path))
(require 'trr)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; このファイルに間違いがあった場合に全てを無効にします
(put 'eval-expression 'disabled nil)
