Skip to content

Instantly share code, notes, and snippets.

@sankitch
Created May 28, 2013 18:40
Show Gist options
  • Select an option

  • Save sankitch/5665059 to your computer and use it in GitHub Desktop.

Select an option

Save sankitch/5665059 to your computer and use it in GitHub Desktop.
;; -*- Mode: Emacs-Lisp -*-
;;
;; DDSKK
;;____________________________________________________________
(setq skk-japanese-message-and-error t);; メッセージを日本語で通知する
(setq skk-show-japanese-menu t);; メニューを英語で表示する
(setq skk-show-annotation t);; 変換時に注釈 (annotation) を表示する
;;isearch-mode に入った際に自動的に skk-isearch を起動
(add-hook 'isearch-mode-hook 'skk-isearch-mode-setup)
(add-hook 'isearch-mode-end-hook 'skk-isearch-mode-cleanup)
;; isearch時にSKKをオフ
(setq skk-isearch-start-mode 'latin)
(when skk-use-color-cursor
;; カーソル色を変えてみる
(setq skk-cursor-hiragana-color "OrangeRed3"
skk-cursor-katakana-color "DodgerBlue"
skk-cursor-abbrev-color "red"
skk-cursor-jisx0208-latin-color "red"
skk-cursor-jisx0201-color "purple"
skk-cursor-latin-color "Yellow3"))
;; 変換候補一覧と注釈 (annotation) を GUI ぽく表示する
(setq skk-show-tooltip t)
;;tooltipの色設定
(when skk-show-tooltip
(setq skk-tooltip-parameters
'((background-color . "OrangeRed3")
(border-color . "royal blue"))))
;; 変換候補をインラインに表示する
(setq skk-show-inline t)
;; 変換候補を縦型インラインに表示する
;;(setq skk-show-inline 'vertical)
(when skk-show-inline
;; 変数 skk-treat-candidate-appearance-function を利用して自前で候補に
;; 色を付ける場合はこの変数を nil に設定する。
(setq skk-inline-show-face nil))
(defvar my-skk-jisyo-updated
nil
"個人辞書の更新直後に保存するかどうかを示すフラグ")
(defadvice skk-henkan-in-minibuff (after my-skk-raise-jisyo-update-flag last
activate compile)
"単語登録された場合 my-skk-jisyo-updated をセットする"
(if ad-return-value
(setq my-skk-jisyo-updated t)))
(defadvice skk-update-jisyo (after my-skk-sync-private-jisyo last
(word &optional purge)
activate compile)
"新たに単語が登録されたか削除された時、個人辞書を保存する"
(if (or my-skk-jisyo-updated purge)
(progn
(skk-save-jisyo 'quiet)
(setq my-skk-jisyo-updated nil))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;基本的なユーザ・インターフェース
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Enter キーを押したときには確定する
(setq skk-egg-like-newline t)
;; 対応する閉括弧を自動的に挿入する
(setq skk-auto-insert-paren t)
;; 句読点を動的に決定する
(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)))))
;; 動的な補完を使う
(setq skk-dcomp-activate t)
;; 動的補完の可否を判定するより高度な設定例
(setq skk-dcomp-activate
#'(lambda ()
(and
;; -nw では動的補完をしない。
window-system
;; 基本的に行末のときのみ補完する。ただし行末でなくても現在の
;; ポイントから行末までの文字が空白のみだったら補完する。
(or (eolp)
(looking-at "[ \t]+$")))))
;; 動的補完で候補を複数表示する
(setq skk-dcomp-multiple-activate t)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;変換動作の調整
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setq skk-henkan-strict-okuri-precedence t);; 送り仮名が厳密に正しい候補を優先して表示する
(setq skk-check-okurigana-on-touroku 'auto);; 辞書登録のとき、余計な送り仮名を送らないようにする
;; 変換の学習
(require 'skk-study)
;;単漢字検索のキーを!にする
(setq skk-tankan-search-key ?!)
; Wikipedia URL
;(setq skk-annotation-show-wikipedia-url t)
;;コメント行を抜けたらasciiにする。
(add-hook 'skk-load-hook
(lambda ()
(require 'context-skk)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; @@ 検索に関連した設定
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 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)
;; カタカナ語を変換候補に加える。
(setq skk-search-prog-list
(skk-nunion skk-search-prog-list
'((skk-search-katakana))))
;; @で挿入する日付表示を半角に
(setq skk-number-style nil)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;辞書に関する設定
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 辞書サーバを使うための設定
(setq skk-server-host "localhost")
(setq skk-server-portnum 1178)
;; 複数の Emacsen を起動して個人辞書を共有する
(setq skk-share-private-jisyo t)
;; 10 分放置すると個人辞書が自動的に保存される設定
(defvar skk-auto-save-jisyo-interval 600)
(defun skk-auto-save-jisyo ()
(skk-save-jisyo))
(run-with-idle-timer skk-auto-save-jisyo-interval
skk-auto-save-jisyo-interval
'skk-auto-save-jisyo)
(setq skk-save-jisyo-instantly t)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;その他いろいろ
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; かなモードの入力で (モード変更を行なわずに) 長音(ー)を
;; ASCII 数字の直後では `-' に、全角数字の直後では `?' にしたい。
(setq skk-rom-kana-rule-list
(cons '("-" nil skk-hyphen)
skk-rom-kana-rule-list))
(defun skk-hyphen (arg)
(let ((c (char-before (point))))
(cond ((null c) "ー")
((and (<= ?0 c) (>= ?9 c)) "-")
((and (<= ?0 c) (>= ?9 c)) "?")
(t "ー"))))
;; かなモードの入力でモード変更を行わずに、数字入力中の
;; 小数点 (.) およびカンマ (,) 入力を実現する。
;; (例) かなモードのまま 1.23 や 1,234,567 などの記述を行える。
;; period
(setq skk-rom-kana-rule-list
(cons '("." nil skk-period)
skk-rom-kana-rule-list))
(defun skk-period (arg)
(let ((c (char-before (point))))
(cond ((null c) "。")
((and (<= ?0 c) (>= ?9 c)) ".")
((and (<= ?0 c) (>= ?9 c)) ".")
(t "。"))))
;; comma
(setq skk-rom-kana-rule-list
(cons '("," nil skk-comma)
skk-rom-kana-rule-list))
(defun skk-comma (arg)
(let ((c (char-before (point))))
(cond ((null c) "、")
((and (<= ?0 c) (>= ?9 c)) ",")
((and (<= ?0 c) (>= ?9 c)) ",")
(t "、"))))
(setq skk-rom-kana-rule-list
(nconc skk-rom-kana-rule-list
'(
("z " nil " ") ;; "z "(zと半角スペース)で" "(全角スペース)
("?" nil "?") ;; "?"全角に統一
("!" nil "!") ;; "!"全角に統一
)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment