ujimushiの日記: T-code's night 第六夜 「不完全な君が好き」 ac-tc-complete環境
前日の説明で抜けているところをいくつか補足します。
auto-completeでは,各バッファ毎に設定される「ac-sources」という情報源リストがあるのですが,そこに に「ac-source-tcode-complete」を追加する必要があります。 これをしないと,tc-complete.elをロードしても補完は始まりません。
また,前夜のtcode-ready-hookにフックする設定ではIME機能(tc.el)をONにするまでtc-completeが読み込まないので, この状態で「auto-complete」が出来る状態になるとエラーで終了してしまいます。 その時は一度IMEをON(標準では画面下方に[TC]が出ている状態)にしてから, 再度「M-x auto-complete-mode」とすれば補完モードに入ります。
この手間が面倒ならtcode-ready-hookではなく「˜/.tc」に直接かinit.elで(require ’tc-complete)して あらかじめロードしておくといいでしょう。
さて,前夜でとりあえずauto-tcode-completeが動くようになったので,動作確認です。
complete.dicに適当に単語を登録して使ってみますが,思ったよりもレスポンスの問題も無く動きます。
また,T-codeのON・OFFに合わせて補完候補を見つける処理もON・OFFしているので, プログラミング中とかで,他の補完の情報源を邪魔することも少なそうです。
補完辞書も手軽にどんどん登録して使えるようにしてみます。 オリジナルのtc-completeでは,
- tcode-complete-add-to-dictionary(リージョンの内容を辞書への追加)
- tcode-complete-reload-dictionary(辞書ファイルから辞書をリロード)
- tcode-complete-switch-to-dictionary(辞書バッファへ画面切り替え)
の機能はありますが,登録した内容をファイルに強制的に保存する機能は無いようです。 Emacsの終了時には保存されるようですが。 そこで,即時に反映できる関数を追加してみます。
他の辞書ファイルの保存等のコードを見ると,次のような感じで実装できそうです。
(defun tcode-complete-save-dictionary ()
"変更された補完辞書の内容を辞書ファイルに書き込む。"
(interactive)
(tcode-save-buffer tcode-complete-buffer-name
tcode-complete-dictionary-name))
そして,tc-complete関係の関数を「˜/.tc」でキーにアサインしてみます。WindowsのEmacsでは「C-z」はあまり使われていないので, そのキーをprefixとします。
(add-hook 'tcode-ready-hook
(function
(lambda ()
(require 'tc-complete)
(global-set-key [(C z) (a)] 'tcode-complete-add-to-dictionary);
(global-set-key [(C z) (s)] 'tcode-complete-switch-to-dictionary);
(global-set-key [(C z) (C s)] 'tcode-complete-save-dictionary);
(global-set-key [(C z) (r)] 'tcode-complete-reload-dictionary);
)))
これで気軽に補完辞書に登録できますね。
さて,ここまで説明してきましたが,大きくオリジナルのtc-completeと違う動作があります。 オリジナルでは交ぜ書き変換辞書や,complete.dicなどで
まぜがき 交ぜ書き
のように間にスペースを入れて変換候補として登録したていた時に, 「まぜが」と入力すると「交ぜ書き」というような候補を 表示する機能があるのですが,今回の実装ではその候補は表示されません。
auto-completeはあくまでも「補完」なので文字列が一部一致しないと候補として表示しないようです。
「まぁいいかぁ」と思っていたのですが,ネットで検索している時に, ac-mozcというものがあるようで,それでは 補完の元になる文字列と候補が一致していないものでも一覧に表示されています。
何とかできるのであれば何とかしたい,ということで今度は交ぜ書き辞書対応に挑戦です。続きはまた次の夜に。
T-code's night 第六夜 「不完全な君が好き」 ac-tc-complete環境 More ログイン