;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;  -*- coding: utf-8-unix -*-
;;  FSF Emacs 23 用 Vine Linux Tamago 設定
;;    Munehiro Yamamoto <munepi@cg8.so-net.ne.jp>
;;	$Id: vine-default-tamago.el,v 1.2 2009/04/22 23:55:04 munepi Exp $	
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

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

;; Wnn6/FreeWnn
(if (or (equal emacs-ime "wnn")
        (equal emacs-ime "Wnn")
        (equal emacs-ime "wnn6")
        (equal emacs-ime "Wnn6")
        (equal emacs-ime "wnn8")
        (equal emacs-ime "Wnn8"))
    (progn
      (if (>= emacs-major-version 21)

      (progn

         ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	 ;;emacs-dl-wnnでないときの設定( emacs-21 + tamago v4)

	 (global-set-key "\C-\\" 'toggle-input-method)
         ;; Shift-Space または 半角/全角 でも起動
	 (global-set-key [?\S-\ ] 'toggle-input-method)
	 (global-set-key [zenkaku-hankaku] 'toggle-input-method)
	 (load "egg")
	 
	 ;; InputMethod の設定
	 ;; emacs 起動時 ASCII
	 ;;(setq default-input-method "japanese-egg-wnn")
	 ;; emacs 起動時から日本語入力
	 (set-input-method "japanese-egg-wnn")
	 
	 ;; jserverの指定
	 ;; jserver のリストを次の様にして指定できます
	 ;;(setq jserver-list '("vanilla" "espresso"))
	 (setq jserver-list (list (getenv "JSERVER") "localhost"))


	 ;;--------------------------------------------------------
	 ;; tamago v4
	 ;;--------------------------------------------------------
	 ;; 全般
	 
	 ;;(setq egg-default-startup-file "eggrc-wnn") ; 95.6.1 by S.Tomura
	 (garbage-collect)
	 
	 ;; "nn" で「ん」を入力
	 (setq enable-double-n-syntax t)
	 
	 ;; "." で「.」、"," で「,」を入力。
	 (setq use-kuten-for-period nil)
	 (setq use-touten-for-comma nil)
	 
	 )
       
       ;; emacs-dl-wnn の場合 (emacs-20)
       (progn
	 (autoload 'egg "egg" "Initialize EGG." t)
	 (egg)
	 (global-set-key "\C-\\" 'toggle-egg-mode)
	 (global-set-key [\S-\ ] '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)))
	 
	 )
       )
      )
  )


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; tamago-anthy の設定
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(if (or (equal emacs-ime "scim")
        (equal emacs-ime "SCIM")
        (equal emacs-ime "anthy")
        (equal emacs-ime "Anthy")
        (equal emacs-ime "egg-anthy")
        (equal emacs-ime "tamago-anthy"))
    (progn
	   (require 'egg)
	   (load "tamago/leim-list")
	   ;; InputMethod の設定
	   (setq default-input-method "japanese-egg-anthy")
	   ;; AnthyとUTF-8で通信する
	   (setq anthy-egg-use-utf8 t)
	   
	   ;; tamago v4 共通設定
	   (setq
	    ;; 何回変換すると（自動的に）辞書に反映するか
	    wnn-auto-save-dictionaries 1
	    ;; nil にすると、alphanumeric が半角入力になるらしい。
	    its-enable-fullwidth-alphabet nil
	    ;; Backspace で消すときに、かなを入力したローマ字に展開して
	    ;; ローマ字単位で消す？
	    its-delete-by-keystroke t
	    ;; 外すと操作方法が変わるみたいです。よく分かりません。
	    egg-mode-preference t
	    ;; "nn" で「ん」を入力
	    enable-double-n-syntax t
	    ;; "." で「．」、"," で「，」を入力。 
	    use-kuten-for-period nil
	    use-touten-for-comma nil
	    ;; 候補の最後まで行ったら先頭に戻る
	    egg-conversion-wrap-select t
	    ;; 候補一覧を表示するまでの変換回数、0で非表示
	    egg-conversion-auto-candidate-menu 2
	    ;; 不正なキーシーケンスを警告する
	    its-barf-on-invalid-keyseq t)
	   
	   ;; F7 で toroku-region
	   (global-set-key [f7] 'egg-toroku-region)

	   ;; egg-anthy.el
	   (add-hook 'anthy-load-hook '(lambda () (load "egg-anthy")))

	   (load "its")
	   ;(define-key global-map "\C-o" 'toggle-input-method)
           (global-set-key [?\S-\ ] 'toggle-input-method)
           (global-set-key [zenkaku-hankaku] 'toggle-input-method)
	   ;(define-key isearch-mode-map "\C-o" 'isearch-toggle-input-method)
           (define-key isearch-mode-map [?\S-\ ] 'isearch-toggle-input-method)
           (define-key isearch-mode-map [zenkaku-hankaku] 'isearch-toggle-input-method)
	   (define-key its-mode-map "\C-h" 'its-delete-backward-SYL)
	   (define-key its-mode-map "\C-p" 'its-hiragana)
	   (define-key its-mode-map "\C-y" 'its-hiragana)
	   (define-key its-mode-map "\C-n" 'its-katakana)
	   (define-key its-mode-map "\C-k" 'its-katakana)
	   (define-key its-mode-map [up] 'its-hiragana)
	   (define-key its-mode-map [down] 'its-katakana)
	   (define-key egg-conversion-map "\C-g" 'egg-abort-conversion)
	   (cond ((eq window-system 'x)
		  (define-key its-mode-map [henkan] 'its-kick-convert-region)
		  (define-key its-mode-map [hiragana-katakana] 'its-katakana)
		  (define-key its-mode-map [muhenkan] 'its-hiragana)
		  (define-key its-mode-map [f6] 'its-hiragana)
		  (define-key its-mode-map [f7] 'its-katakana)
		  (define-key its-mode-map [f8] 'its-half-width)
		  (define-key its-mode-map [backspace] 'its-delete-backward-SYL)
		  (define-key its-mode-map [delete] 'its-delete-SYL))
		 ((null window-system)
		  (define-key its-mode-map "\e[17~" 'its-hiragana)
		  (define-key its-mode-map "\e[18~" 'its-katakana)
		  (define-key its-mode-map "\e[19~" 'its-half-width)
		  (define-key its-mode-map [8] 'its-delete-backward-SYL)
		  (define-key its-mode-map "\e[3~" 'its-delete-SYL)))
	   )
  )


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

(provide 'vine-default-tamago)

;; Local Variables:
;; mode: emacs-lisp
;; End:
