;;; dot.skk --- examples for SKK init file  -*- mode: emacs-lisp; coding: iso-2022-jp -*-

;;; Commentary:

;; 以下は ~/.skk の設定例集です。

;; (注意)
;; このファイルは ~/.skk に直接コピーして使用するように意図されたものでは
;; ありません。必要な設定例のみコピーして使用してください。

;;; Code:

;; @@ 基本中の基本の設定

;; 辞書サーバを使うとき
;; (setq skk-server-host "localhost"
;;       skk-server-portnum 1178
;;       skk-server-report-response t)

;; 辞書サーバを使わないとき
;; SKK が検索する CDB 形式辞書 (DDSKK 14 以降)
;; (setq skk-cdb-large-jisyo "/usr/share/skk/SKK-JISYO.L.cdb")

;; SKK が検索する辞書
;; (setq skk-large-jisyo "/usr/share/skk/SKK-JISYO.L")

;; ja-dic.el を利用したかな漢字変換(DDSKK 14.2〜)を無効とする
;; (setq skk-inhibit-ja-dic-search t)

;; SHIFT キーを使うことなく、見出し語・送り仮名の位置を指定する
;; (setq skk-sticky-key ";")

;; @@ 表示の設定

;; 各種メッセージを日本語で通知する
(setq skk-japanese-message-and-error t)

;; skk-version() の結果を日本語で表示する
;;   nil  => Daredevil SKK/15.1 (Umeda)
;;   t    => Daredevil SKK/15.1 (梅田)
(setq skk-version-codename-ja t)

;; モードライン上の表示を変更する
;;   'left => モードラインの左端に表示する
;;   以外  => マイナーモードとして表示する
;; (setq skk-status-indicator 'minor-mode)

;; モードラインに SKK アイコンを表示する。
(setq skk-show-icon t)

;; カーソル付近にモード切り替えを表示する
;; (setq skk-show-mode-show t)		; M-x skk-show-mode でトグル可。
;; (setq skk-show-mode-style 'tooltip)	;デフォルトは 'inline
;; (set-face-background 'skk-show-mode-inline-face "DodgerBlue")

;; メニューバーの表示
;;   Non-nil => 日本語
;;   nil => 英語
;; (setq skk-show-japanese-menu nil)

;; 変換時に注釈 (annotation) を表示する
(setq skk-show-annotation
      t					; 常に表示
;      '(not list)			; *候補*バッファでは非表示
;      '(not minibuf)			; ミニバッファでは非表示
;      '(not list minibuf)		; 両方とも非表示
      )

;; 注釈を表示するまでの遅延を秒で指定する
 (setq skk-annotation-delay 0)		;デフォルトは1.0秒

;; 注釈 (annotation) の表示の仕方
;;   Non-nil => エコーエリアに表示する (デフォルト)
;;   nil => 別な window に表示する
;; (setq skk-annotation-show-as-message nil) ;`skk-show-tooltip' が優先される

;; 変換前/変換中にエコーエリアに冗長なメッセージを表示
(setq skk-verbose t)

;; カーソルに色を付けない
;; (setq skk-use-color-cursor nil)

;; (when skk-use-color-cursor
;;   ;; カーソル色を変えてみる
;;   (setq skk-cursor-hiragana-color       "blue"
;; 	   skk-cursor-katakana-color       "green"
;; 	   skk-cursor-abbrev-color         "red"
;; 	   skk-cursor-jisx0208-latin-color "red"
;; 	   skk-cursor-jisx0201-color       "purple"
;; 	   skk-cursor-latin-color          "cyan")
;;   ;;
;;   (set-face-foreground 'skk-prefix-hiragana-face skk-cursor-hiragana-color)
;;   (set-face-foreground 'skk-prefix-katakana-face skk-cursor-katakana-color)
;;   (set-face-foreground 'skk-prefix-jisx0201-face skk-cursor-jisx0201-color))

;; インジケータに色を付けない
;; (setq skk-indicator-use-cursor-color nil)

;; ;; [残り 99++]
;; 表示を右端へ寄せてみる
;; (setq skk-henkan-rest-indicator t)
;; 適用するフェイス
;; (copy-face 'font-lock-keyword-face 'skk-henkan-rest-indicator-face)

;; `$' skk-display-code-for-char-at-point で使用するフェイス
(set-face-attribute 'skk-display-code-prompt-face nil
		    :foreground "cyan"
		    :bold t)

(set-face-attribute 'skk-display-code-char-face nil
		    :height 150
		    :foreground "white"
		    :background "black")

;; @@ 基本的なユーザ・インターフェース

;; 前候補/前候補群に戻る操作
;; (setq skk-previous-candidate-keys (list "x" "\C-p"))

;; ▼モードで Enter キーを押したとき
;;   nil => 確定と改行（デフォルト）
;;   non-nil => 確定するのみ。改行しない。
(setq skk-egg-like-newline t)

;; ▼モードで BS を押したときには確定しないで前候補を表示する
;; (setq skk-delete-implies-kakutei nil)

;; 対応する閉括弧を自動的に挿入する
(setq skk-auto-insert-paren t)

;; 確定アンドゥ
(define-key skk-j-mode-map (kbd "C-M-j") 'skk-undo-kakutei)

;; ▽モードと▼モード時のアンドゥ情報を記録しない
;; (setq skk-undo-kakutei-word-only t)

;; 句読点に ．， を使う
;; (setq-default skk-kutouten-type 'en)

;; 句読点を動的に決定する
;; (add-hook 'skk-mode-hook
;;           (lambda ()
;;             (save-excursion
;;               (goto-char 0)
;;               (make-local-variable 'skk-kutouten-type)
;;               (if (re-search-forward "。" 10000 t)
;;                   (setq skk-kutouten-type 'en)
;;                 (setq skk-kutouten-type 'jp)))))

(define-key skk-j-mode-map (kbd "M-,") 'skk-toggle-kutouten)

;; 見出し語の補完を行う際の候補の表示順
;; (setq skk-comp-circulate t)

;; 見出し語の補完動作（前候補の出力） Shift + TAB を無効化する
;; (setq skk-previous-completion-use-backtab nil)

;; 動的な補完を使う
;; (setq skk-dcomp-activate t)
;; ▽ほ-!-んとう の「んとう」の face
;; (set-face-foreground 'skk-dcomp-face "green")

;; 動的補完の可否を判定するより高度な設定例
(setq skk-dcomp-activate
      #'(lambda ()
	  (and
	   ;; -nw では動的補完をしない。
	   window-system
	   ;; 基本的に行末のときのみ補完する。ただし行末でなくても現在の
	   ;; ポイントから行末までの文字が空白のみだったら補完する。
	   (or (eolp)
	       (looking-at "[ \t]+$")))))

;; 動的補完で候補を複数表示する （XEmacs では機能しません）
;; (setq skk-dcomp-multiple-activate t
;;       skk-dcomp-multiple-rows 10)

;;; ▽ほ*んとう-!-
;;;   ほ んとう
;;;   ほ かん
;;;   ほ うほう

;; 「ほ」のフェイス
;; (set-face-foreground 'skk-dcomp-multiple-face "COLOR")

;; 「んとう」、「かん」、「うほう」のフェイス
;; (set-face-foreground 'skk-dcomp-multiple-trailing-face "COLOR")

;; 選択位置のフェイス
;; (set-face-foreground 'skk-dcomp-multiple-selected-face "COLOR")

;; viper と組み合わせて使う
;; (setq skk-use-viper t)

;; 確定には C-j ではなく【変換キー】を使う
;; (setq skk-kakutei-key [henkan])
;; 注) 変換キーは、Emacs on XFree86  では [henkan]
;;                 XEmacs on XFree86 では [henkan-mode]
;;                 Meadow と NTEmacs では [convert]

;; 接頭・接尾辞変換のキーを設定する
;; 例 1) 標準の設定
;; (setq skk-special-midashi-char-list '(?> ?< ??))
;; 例 2) ? は普通に入力したいから外す
;; (setq skk-special-midashi-char-list '(?> ?<))
;; 例 3) 文字キーは普通に入力したいから他のキーを使う
;; (setq skk-special-midashi-char-list nil)
;; (define-key skk-j-mode-map [muhenkan] 'skk-process-prefix-or-suffix)

;; @@ かな入力関連の設定

;; 半角カナ入力メソッドを使う
;; (setq skk-use-jisx0201-input-method t)

;; かな配列キーボードで入力する
;; (setq skk-use-kana-keyboard t)

;; (when skk-use-kana-keyboard
;;   ;; 旧 JIS 配列を使う
;;   ;; (setq skk-kanagaki-keyboard-type '106-jis)
;;   ;; 親指シフトエミュレーションを使う
;;   (setq skk-kanagaki-keyboard-type 'omelet-jis)
;;   ;; OASYS 風の後退・取消キーを使う
;;   (setq skk-nicola-use-koyubi-functions t))

;; Microsoft Windows の IME のようにファンクションキーにいくつかの変換機能を割り当てる
;;   conversion => skk-search-prog-list-{1-9,0} を実行できる。
;;   kanagaki => かなキーボード入力用の設定になる。
;;   nil => 自動設定しない（自分で好きな設定ができる） デフォルト
(setq skk-j-mode-function-key-usage 'conversion)
;; 注) 標準では以下の変換機能が割り当てられます。
;;  [F5]単漢字 [F6]無変換 [F7]カタカナ [F8]半角カナ [F9]全角ローマ [F10]ローマ
;; (setq skk-verbose t) と併用すると上記の割り当て情報がメッセージされます。

;; かなモードにおいて、モード変更を伴わなくとも
;;   ASCII 数字の直後であれば、長音(ー)を `-' に
;;                             句点(。)を `.' に
;;                             読点(、)を `,' に
;;   JISX0208(全角)数字の直後であれば、長音(ー)を `−' に
;;                                     句点(。)を `．' に
;;                                     読点(、)を `，' に
;; (setq skk-use-auto-kutouten t)

;; @@ 変換動作の調整

;; 送り仮名が厳密に正しい候補を優先して表示する
;; (setq skk-henkan-strict-okuri-precedence t)

;; 辞書登録のとき、余計な送り仮名を送らないようにする
;; (setq skk-check-okurigana-on-touroku 'auto)

;; 変換の学習
(require 'skk-study)

;;;; @@ 候補の表示方法

;; 変換中の文字列をハイライトしない
;; (setq skk-use-face nil)

(when skk-use-face
;;   ;; 変換文字列の色を変えてみる
;;   ;; 注) `skk-treat-candidate-appearance-function' の設定が優先されます。
;;   (setq skk-henkan-face (skk-make-face 'DimGray/PeachPuff1))
  )

;; A S D F J K L に適用するフェイス
;; (set-face-attribute 'skk-henkan-show-candidates-keys-face nil
;; 		    :foreground "black"
;; 		    :background white"")

;; 漢字変換の候補の表示は、次の変数で指定します。
;; このうち２つ以上が non-nil の場合は、記載の順に優先適用されます。
;;   1. skk-show-inline
;;   2. skk-show-tooltip
;;   3. skk-show-candidates-always-pop-to-buffer
;;  (4. echo area)

;; 変換候補をインラインに （XEmacs では機能しません）
;;   nil => 表示しない (デフォルト)
;;   t   => 表示する
;;   'vertical => 縦型インラインに表示する
;; (setq skk-show-inline t)

(when skk-show-inline
  ;; 変換候補の装飾に変数 `skk-treat-candidate-appearance-function' を利用
  ;; するならば、skk-inline-show-face を nil に設定すること
  (setq skk-inline-show-face nil
	skk-inline-show-background-color     "gray15"	;偶数ラインの背景色
	skk-inline-show-background-color-odd "gray20")) ;奇数ラインの背景色

;; 変換候補一覧と注釈 (annotation) の表示を
;; エコーエリアに代えて tooltip で表示する
;; 注) 今のところ FSF Emacs 21 以上と XEmacs 21.5 以上で機能します。
(setq skk-show-tooltip t)

;; ;; Tip 描画に pos-tip を利用してみる
;; ;; http://www.emacswiki.org/emacs-en/PosTip
;; (require 'pos-tip)
;; (setq skk-tooltip-function
;;   #'(lambda (tooltip-str)
;;       (pos-tip-show tooltip-str nil nil nil 0)))

;; ;; Tip 描画に popup-tip を利用してみる
;; ;; http://github.com/m2ym/auto-complete
;; (require 'popup)
;; (setq skk-tooltip-function
;;   #'(lambda (tooltip-str)
;;       (popup-tip tooltip-str)))

(when skk-show-tooltip
  ;; tooltip のルックスを指定する。
  ;; 文字の前景色と背景色の適用は、下記の順の上位ほど優先される。
  ;;   `skk-treat-candidate-appearance-function'
  ;;   `skk-tooltip-face'
  ;;   `skk-tooltip-parameters'
  ;;   `tooltip-frame-parameters'
  ;;   `tooltip' face
  (setq skk-tooltip-parameters
	'((background-color . "alice blue")
	  (border-color     . "royal blue")
	  (foreground-color . "gray")	;`skk-tooltip-face' が優先される
	  (internal-border-width . 3)	;境界線と文字との間の余白
	  ))

  ;; (setq skk-tooltip-face 'font-lock-doc-face) ; 例

  ;; Tooltip 表示位置の調整。Tooltip の表示位置は OS (Window System) や
  ;; Emacs のバージョン、フォント設定など諸々の影響を受けてずれるので、
  ;; 自分の環境に合わせて微調整します。

  ;; (setq skk-tooltip-x-offset 3)
  ;; (setq skk-tooltip-y-offset 10)

  ;; Tooltip を表示する場合の、マウスポインタの挙動。
  ;;   follow => tip の位置に移動する。
  ;;   avoid => ウィンドウの端に退避する。
  ;;   avoid-maybe => ウィンドウ上にあるマウスポインタのみ退避する。
  ;;   banish => ウィンドウの端に退避したまま帰ってこない。
  ;;   nil => 退避しない。この場合、tip のテキストとマウスポインタが
  ;;          重なってしまうこともある。
  (setq skk-tooltip-mouse-behavior 'avoid-maybe)

  ;; tooltip 表示の際のマウスポインタを変更して遊んでみる
  ;; 注) この設定は X Window System 上の GNU Emacs でないと利用できません。
  (defadvice skk-tooltip-show-at-point (around set-pointer activate)
    (let ((shape x-pointer-shape))
      (require 'avoid)
      (mouse-avoidance-set-pointer-shape (if (ad-get-arg 1)
					     x-pointer-pencil
					   x-pointer-hand1))
      (unwind-protect
	  ad-do-it
	(mouse-avoidance-set-pointer-shape shape))))
  )

;; 変換候補を別ウインドウに表示する
;;   nil => 変換候補をエコーエリアに表示する (デフォルト)
;;   Non-nil => *候補*バッファ を pop-to-buffer する。
;; (setq skk-show-candidates-always-pop-to-buffer t)

;; *候補*バッファ の背景色
;; (setq skk-candidate-buffer-background-color     "grey90"
;;       skk-candidate-buffer-background-color-odd "grey80")

;; *候補*バッファ の fringe を消す
;; (setq skk-candidate-buffer-display-fringes nil)

;; @@ 候補表示の装飾（フェイス）に関する高度な設定

;; 注1) skk-emacs-*-face は GNU Emacs に限って定義される face です。
;; XEmacs では別の存在する face に置き換えてください。
;;
;; 注2) 候補の個人辞書への登録においても、`skk-update-jisyo-function' を
;; 設定することで同様のカスタマイズができます。「個人辞書に関する設定」の
;; 例をご覧ください。
(setq skk-treat-candidate-appearance-function
      #'(lambda (candidate listing-p)
	  (let* ((value (skk-treat-strip-note-from-word candidate))
		 (cand (car value))	;候補
		 (note (cdr value))	;注釈
		 (sep (if note		;セパレータ
			  (propertize (if (skk-annotation-display-p 'list)
					  " ≒ "
					" !")
				      'face 'skk-emacs-jisx0208-latin-face)
			nil)))
	    (cond (note
		   (put-text-property 0 (length cand)
				      'face 'skk-emacs-jisx0201-face cand)
		   (put-text-property 0 (length note)
				      'face 'skk-emacs-katakana-face note)
		   (cons cand (cons sep note)))
		  (t
		   (put-text-property 0 (length cand)
				      'face 'skk-emacs-hiragana-face cand)
		   cand)))))

;; @@ 辞書検索に関連した設定

;; From DDSKK 14.2:
;;   メイン辞書（L 辞書、CDB 形式辞書、辞書サーバ）以外の辞書を指定する
(setq skk-extra-jisyo-file-list
      (list "/usr/share/skk/SKK-JISYO.JIS2"
	    '("/usr/share/skk/SKK-JISYO.JIS3_4" . euc-jisx0213)
	    "/usr/share/skk/SKK-JISYO.notes"
	    "/usr/share/skk/SKK-JISYO.assoc"
	    "/usr/share/skk/SKK-JISYO.edict"
	    "/usr/share/skk/SKK-JISYO.geo"
	    "/usr/share/skk/SKK-JISYO.hukugougo"
	    "/usr/share/skk/SKK-JISYO.jinmei"
	    "/usr/share/skk/SKK-JISYO.law"
	    "/usr/share/skk/SKK-JISYO.okinawa"
	    "/usr/share/skk/SKK-JISYO.propernoun"
	    "/usr/share/skk/SKK-JISYO.pubdic+"
	    "/usr/share/skk/SKK-JISYO.station"
	    "/usr/share/skk/SKK-JISYO.zipcode"
	    "/usr/share/skk/SKK-JISYO.office.zipcode"))
;; 注1) 辞書ファイル名のリストを指定します。ファイルのコード系が
;;   `skk-jisyo-code' と異なるファイルの場合は、ファイル名の代わりに
;;   ("ファイル名" . コード系) のペアを指定することが推奨されます。
;;   上記の SKK-JISYO.JIS3_4 の例をご覧ください。
;; 注2) `skk-search-prog-list' を手動で設定している場合はこの機能の
;;   動作は保証されません。

;; 異体字の候補を表示する
;; http://mail.ring.gr.jp/skk/200303/msg00071.html
;; (setq skk-itaiji-jisyo "/usr/share/skk/SKK-JISYO.itaiji")

;; look コマンドを使った検索を行う
(setq skk-use-look t)

(when skk-use-look
  ;; look が見つけた語を見出し語として検索する
  (setq skk-look-recursive-search t)
  ;; ispell を look と一緒に使うのはやめる
  (setq skk-look-use-ispell nil)
  ;; look に渡すコマンドラインオプションの設定。補完時と検索時それぞれに
  ;; ついて設定できる。
  ;; look で case を見るときは、それ専用の辞書を sort コマンドで作る必要
  ;; がある (look の引数 -d, -f は sort の引数 -d, -f と一致させておく必
  ;; 要がある)。
  ;; (*) 補完時には引数 -d を指定すると dcomp との併用時に問題あることが
  ;; 報告されているため、-d を指定しないことをお勧めします。
  (setq skk-look-completion-arguments "%s /usr/share/dict/words")
  (setq skk-look-conversion-arguments "-df %s /usr/share/dict/words")
  ;; `skk-abbrev-mode' で skk-look を使った検索をしたときに確定情報を
  ;; 個人辞書に記録しないようにする
  (add-hook 'skk-search-excluding-word-pattern-function
	    ;; KAKUTEI-WORD を引数にしてコールされるので、不要でも引数を取る
	    ;; 必要あり
	    #'(lambda (kakutei-word)
		(and skk-abbrev-mode
		     (save-match-data
		       ;; `skk-henkan-key' が "*" で終わるとき、または
		       ;; `skk-henkan-key' が数字のみのとき
		       (or (string-match "\\*$" skk-henkan-key)
			   (string-match "^[0-9]*$" skk-henkan-key)))))))

;; 数値変換機能を使う
(setq skk-use-numeric-conversion t)

(when skk-use-numeric-conversion
  ;; 数値変換の検索から除外する辞書検索プログラムを指定する
  (setq skk-non-numeric-prog-list
	'(skk-look
	  skk-tankan-search
	  (skk-search-jisyo-file "/usr/share/skk/SKK-JISYO.jinmei" 10000))))

;; Lookup を利用した変換を行う
(if (featurep 'skk-lookup)
    (setq skk-search-prog-list (skk-nunion skk-search-prog-list
					   '((skk-lookup-search)))))

;; 送りあり変換を送りなし変換と同じ操作でできるようにする
;; (setq skk-auto-okuri-process t)

;; カタカナ語を変換候補に加える。1、2 を好みで選んでください
;; 例 1) 単純にカタカナに変換したものを加える
;; (setq skk-search-katakana t)
;; 例 2) 全角カタカナの候補と半角カタカナの候補を共に加える
;; (setq skk-search-katakana 'jisx0201-kana)
;; 注) `skk-search-prog-list' を手動で設定している場合はこの機能の
;; 動作は保証されません。

;; サ行変格活用の動詞も送りあり変換出来るようにする
;; (setq skk-search-sagyo-henkaku t)
;; 注) `skk-search-prog-list' を手動で設定している場合はこの機能の
;; 動作は保証されません。

;; 辞書検索に関する高度な設定 --
;; ユーザオプションに頼らず検索方法と検索順を自分で制御する方法
;; (setq skk-search-prog-list
;;   '(;; 0. 確定辞書
;;     (skk-search-kakutei-jisyo-file skk-kakutei-jisyo 10000 t)
;;     ;; 注) 確定変換機能を使うときには上記設定します。
;;     ;; 確定変換機能については info を参照してください。
;;     ;; 1. 個人辞書
;;     (skk-search-jisyo-file skk-jisyo 0 t)
;;     ;; 2. list の前方に置くべき機能
;;     (skk-abbrev-search)
;;     (skk-look)
;;     (skk-okuri-search)
;;     ;; 3. 以下に直接検索したい辞書を検索順に列挙する
;;     (skk-search-jisyo-file
;;      '("/usr/share/skk/SKK-JISYO.L" . euc-jp) 10000)
;;     (skk-search-jisyo-file
;;      '("/usr/share/skk/SKK-JISYO.JIS2" . euc-jp) 10000)
;;     (skk-search-jisyo-file
;;      '("/usr/share/skk/SKK-JISYO.JIS3_4" . euc-jisx0213) 10000)
;;     (skk-search-jisyo-file
;;      '("/usr/share/skk/SKK-JISYO.assoc" . euc-jp) 10000)
;;     (skk-search-jisyo-file
;;      '("/usr/share/skk/SKK-JISYO.edict" . euc-jp) 10000)
;;     (skk-search-jisyo-file
;;      '("/usr/share/skk/SKK-JISYO.geo" . euc-jp) 10000)
;;     (skk-search-jisyo-file
;;      '("/usr/share/skk/SKK-JISYO.hukugougo" . euc-jp) 10000)
;;     (skk-search-jisyo-file
;;      '("/usr/share/skk/SKK-JISYO.jinmei" . euc-jp) 10000)
;;     (skk-search-jisyo-file
;;      '("/usr/share/skk/SKK-JISYO.law" . euc-jp) 10000)
;;     (skk-search-jisyo-file
;;      '("/usr/share/skk/SKK-JISYO.okinawa" . euc-jp) 10000)
;;     (skk-search-jisyo-file
;;      '("/usr/share/skk/SKK-JISYO.propernoun" . euc-jp) 10000)
;;     (skk-search-jisyo-file
;;      '("/usr/share/skk/SKK-JISYO.pubdic+" . euc-jp) 10000)
;;     (skk-search-jisyo-file
;;      '("/usr/share/skk/SKK-JISYO.station" . euc-jp) 10000)
;;     (skk-search-jisyo-file
;;      '("/usr/share/skk/SKK-JISYO.zipcode" . euc-jp) 10000)
;;     (skk-search-jisyo-file
;;      '("/usr/share/skk/SKK-JISYO.office.zipcode" . euc-jp) 10000)
;;     ;; 4. その他の検索手段を検索順に列挙する
;;     (skk-lookup-search)
;;     (skk-search-server skk-aux-large-jisyo 10000)
;;     (skk-search-katakana t)
;;     ;; 注) 3 → 4 は好みにより 4 → 3 の順にすることもできる
;;     ;; 5. list の後方に置くべき機能
;;     (skk-search-sagyo-henkaku)
;;     ))
;; 注) `skk-search-prog-list' は厳密な意味でのユーザオプションではないので
;;   直接設定することはお勧めしません。自分が何をしようとしているか理解し
;;   ている場合のみ設定してください。

;; 単漢字変換を行う ▽よみ@<SPC>
;;   DDSKK 14.2 からは特段の設定の必要なしに標準で単漢字変換が行えます。
(set-face-attribute 'skk-tankan-face nil
		    :foreground "yellow"
		    :height 150)

(set-face-foreground 'skk-tankan-radical-name-face
		     "gray40")

;; @@ 個人辞書に関する設定

;; 複数の Emacsen を起動して個人辞書を共有する
(setq skk-share-private-jisyo t)

;; 10 分放置すると個人辞書が自動的に保存される設定
(defvar skk-auto-save-jisyo-interval 600)
(defun skk-auto-save-jisyo ()
  (skk-save-jisyo)
  ;; skk-bayesian.el を使っていなければ以下の 2 行はコメントアウト
  ;; (skk-bayesian-save-history)
  ;; (skk-bayesian-corpus-save)
  )
(run-with-idle-timer skk-auto-save-jisyo-interval
		     skk-auto-save-jisyo-interval
		     'skk-auto-save-jisyo)
;; (cancel-function-timers 'skk-auto-save-jisyo)

;; 単語登録／単語削除のたびに個人辞書を保存する
;; (setq skk-save-jisyo-instantly t)

;; 個人辞書の文字コードを指定する
;; (setq skk-jisyo-code 'utf-8)
;; 注) この設定は気をつけないと辞書の検索ができなくなりますので十分理
;;   解してから行ってください。 `skk-jisyo-code' は個人辞書の読み書きの
;;   他、L 辞書などの読み込みコードも決めている影響力の強い変数です。
;;   この設定をした場合は、まず個人辞書を上記のコードに変換しなければ
;;   いけません。その上で、さらに以下のいずれかの対処をする必要があり
;;   ます。
;;
;; 方針 1) Emacs のバッファに読み込む辞書を全て `skk-jisyo-code' と同じ
;;         文字コードに変換する
;; 方針 2) `skk-search-prog-list' の要素を全て文字コード指定に書き直す。
;;         例えば
;;
;; (setq skk-search-prog-list
;;   '((skk-search-jisyo-file skk-jisyo 0 t)
;;     [...]
;;     (skk-search-jisyo-file (cons skk-large-jisyo 'euc-jp) 10000)
;;     [...]
;;     ))
;;
;; なお、辞書サーバとの通信の際の文字コードなどは気にする必要はありません。
;;
;; このことに関しては上記「辞書検索に関する高度な設定」の部分も参照す
;; ることをお勧めします。

;; 個人辞書の更新方法に関する設定
;;
;; 以下は注釈が長すぎる場合に個人辞書から注釈を除外して候補を登録する
;; 設定例です。この他にも色々なカスタマイズが考えられます。
(setq skk-update-jisyo-function
      #'(lambda (word &optional purge)
	  (if purge
	      (skk-update-jisyo-original word purge)
	    (let* ((pair (skk-treat-strip-note-from-word word))
		   (cand (car pair))
		   (note (cdr pair)))
	      (when (and (stringp note)
			 (> (length note) 8))
		;; 注釈が 8 文字より長かったら注釈を消して登録する
		(setq note nil))
	      (setq word (if (stringp note)
			     (concat cand ";" note)
			   cand))
	      (skk-update-jisyo-original word)))))

;; @@ 辞書登録に関する設定

;; 強制的に辞書登録モードに入るキーキャラクタ
;; (setq skk-force-registration-mode-char ?.)

;; 「↓辞書登録中↓」に適用するフェイス
;; skk-jisyo-registration-badge-face 

;; experimental/skk-search-web.el をインストールすると、
;;   辞書登録モードに移ったときの初期値に Google サジェストを利用できます
;;     (setq skk-read-from-minibuffer-function
;;           (lambda ()
;;             (car (skk-google-suggest skk-henkan-key))))

;; @@ SKK abbrev mode
;; 見出し語の補完において Lisp シンボルも補完する
;; (add-to-list 'skk-completion-prog-list
;; 	     '(skk-comp-lisp-symbol) t)

;; @@ server completion
;; (add-to-list 'skk-search-prog-list
;;	     '(skk-server-completion-search) t)
;; (add-to-list 'skk-completion-prog-list
;;	     '(skk-comp-by-server-completion) t)

;; @@ その他いろいろ

;; いつでもどこでも領域選択して Wikipedia/Wiktionary を調べる。
;; (global-set-key "\M-i" 'skk-annotation-lookup-region-or-at-point)
;; 注) 基本形の (活用形/複数形などでない) 英単語なら領域を選択せずとも M-i
;;   だけで調べることが可能です。例えば en.wiktionary を使うと「どこでも
;;   英英辞典」のように使えて便利です。 skk-annotation-other-sources
;;   の設定がデフォルト値であれば、英単語にカーソルを置いて M-3 M-i で常
;;   に en.wiktionary を調べることができます (Apple OS X では M-4 M-i)。

;; Tips といえるものではないが、`lisp-interaction-mode' において "C-j"
;; (`eval-print-last-sexp') を利用する人にとっては、英数モードにおいて
;; "C-j" によって かなモードに入る仕様は使いづらい。
;; (defadvice skk-latin-mode (after no-latin-mode-in-lisp-interaction activate)
;;   "`lisp-interaction-mode' において英数モードを回避する。"
;;   (when (eq major-mode 'lisp-interaction-mode)
;;     (skk-mode-off)))

;; ■モードのまま C-j を有効とする
(defun skk-C-j-key (arg)
  (interactive "P")
  (let ((enable-modes '(lisp-interaction-mode ; eval-print-last-sexp
			emacs-lisp-mode	      ; newline-and-indent
			;; and more.
			)))
    (cond
     ((and (null (skk-in-minibuffer-p)) 
	   (null skk-henkan-mode)
	   (member major-mode enable-modes))
      (skk-emulate-original-map arg))
     (t
      (skk-kakutei arg)))))

(add-to-list 'skk-rom-kana-rule-list
	     '(skk-kakutei-key nil skk-C-j-key))

;; よく使う英単語を■モードのままでも
(add-to-list 'skk-rom-kana-rule-list
	     '("http" nil "http://"))

;; 日本語と英語の間に空白を自動挿入する
;;   http://hins11.jugem.jp/?eid=47

;;; dot.skk ends here
