情報源による拡張が可能な auto-complete 0.1.0 をリリースしました
情報源による拡張が可能な auto-complete 0.1.0 をリリースしました。
以下の URL から取得できます。
http://www.emacswiki.org/emacs/AutoComplete
目にみえる変更は少ないのですが、 Anything ばりの拡張性を持つようになりました。さまざまな候補機能を一緒に使えるようになっており、色々夢が広がった感じになっているのではないかと思います。
前のバージョンからの主な変更点は以下のようになっています。
- 情報源による拡張
- オプションの追加
- インターフェースの変更
- ポップアップメニューの表示位置の改善
- 色々なバグフィックス
情報源による拡張
0.1.0 での一番の変更は情報源によって拡張可能にしたことです。
auto-complete は補完を実行するために以下の二つの変数を利用します。
- ac-find-function
- ac-candidate-function
ac-find-function は補完対象となる文字列の開始位置を返す関数を入れる変数で、デフォルトでは ac-default-find という関数が入っています。 ac-candidate-function は候補を文字列のリストとして返す関数を入れる変数で、前回は現在のバッファ内の単語を拾って返す関数を入れていましたが、今回の変更で ac-sources-candidate という関数を入れるようになりました。そしてこの ac-sources-candidate という関数が、情報源の定義である ac-sources` 変数を利用して候補を生成する関数で、今回の変更の要となっているのです。
ac-sources-candidate は ac-sources を利用して候補を生成するため、利用者は自分が好きな情報源を ac-sources に設定することで、さまざまな補完機能をまとめて利用することができるようになっています。
ac-sources 変数は、グローバル変数になっており、デフォルトでは ac-source-words-in-buffer 情報源のみを利用するようになっています。この情報源は前のバージョンの補完関数の内容と完全に一致するため、前のバージョンと今回のバージョンのデフォルトの挙動は完全に一致するようになっています。 0.1.0 の段階ではビルトインの情報源として以下が定義されています。
- ac-source-words-in-buffer:
- 現在のバッファ内の単語を補完する情報源
- ac-source-symbols:
- Emacs Lisp のシンボルを補完する情報源
- ac-source-abbrev:
- ローカルの abbrev を補完する情報源
- ac-source-files-in-current-dir:
- カレントディレクトリのファイルを補完する情報源
- ac-source-yasnippet:
- Yasnippet の情報源
例えば ac-source-abbrev と ac-source-words-in-buffer を情報源として使いたい場合は、 .emacs に以下のように記述します。
(setq ac-sources '(ac-source-abbrev ac-source-words-in-buffer))
これでローカル abbrev やバッファ内の単語を同時に補完できるようになります。
また、 Emacs Lisp mode の場合だけ ac-source-symbols を追加したい場合は、 .emacs に以下のように記述します。
(add-hook 'emacs-lisp-mode-hook (lambda () (make-local-variable 'ac-sources) (add-to-list 'ac-sources 'ac-source-symbols)))
ac-sources はグローバル変数なので make-local-variable の呼び出しがないと他のバッファへも影響してしまうので注意してください。
オプションの追加
ac-auto-start というオプションを追加しました。この変数を t にしておくと、これまでと同じように文字をタイプすると自動的に補完が開始されます。この変数を nil にしておくと、文字をタイプしても自動的に補完が開始されません。 nil にする場合は以下のようなキーバインドを追加しておくとよいかもしれません。
(global-set-key "\M-/" 'ac-start)
ac-auto-start を数値にすると、補完対象の文字列の長さがその数値以上の場合のみに補完が開始されます。ちょっと文字を打つ場合は補完を開始したくないというときに便利かもしれません。
インターフェースの変更
前のバージョンではデフォルトのバインディングとして C-n と C-p を候補の選択に使っていましたが、使いにくいという声がきかれたため、デフォルトでは C-n と C-p は使わないようにしました。
C-n と C-p で候補を選択したいという人は、 .emacs に以下のコードを追加してください。
(define-key ac-complete-mode-map "\C-n" 'ac-next) (define-key ac-complete-mode-map "\C-p" 'ac-previous)
- Category(s)
- emacs
- The URL to Trackback this entry is:
- http://dev.ariel-networks.com/Members/matsuyama/auto-complete-0-1-0/tbping