2008/11/09
テキスト入力中に補完候補を自動的に表示してくれる auto-complete.el をリリースしました
テキスト入力中に補完候補を自動的に表示してくれる auto-complete.el をリリースしました。 Visual Studio とか Eclipse には昔から搭載されている一般的な補完機能なのですが、どういうわけか Emacs にはないようなので作ってしまいました [*] 。
| [*] | 僕の知るかぎりだと company-mode が一番近い |
テキストが入力されたら、そのテキストにマッチする単語あるいはシンボルらしきものをバッファから探してきてポップアップします。よくあるインターフェースなので、スクリーンショットを見ればどういうものか一発で分かると思います。

まだよく分からないという人はデモを見てください。
http://www.cx4a.org/pub/ac-demo/ac-demo.html
情報は EmacsWiki のページに集約する予定です。
http://www.emacswiki.org/emacs/AutoComplete
auto-complete.el を使うには、 EmacsWiki のページあるいは下記の URL から auto-complete.el をダウンロードしてきて、
http://www.cx4a.org/pub/auto-complete.el
load-path の通ったディレクトリにコピーします。
後は、以下のコードを .emacs に書いておけば OK です。
(require 'auto-complete) (global-auto-complete-mode t)
動作確認するには、適当なバッファ(例えば .emacs のバッファ)に移動して、適当な文字列を入力します。その文字列にマッチするバッファ内の文字列が候補されたら OK です。動作しなかったら M-x auto-complete-mode して auto-complete-mode が有効なことを確認してください。
使い方は、
- TAB:
- 補完を実行する。すでに実行されていたら次の候補を選択する。
- C-n/<down>:
- 次の候補を選択する。
- C-p/<up>:
- 前の候補を選択する。
- C-m/RET:
- 補完を実行して終了する。
です。
Enjoy.
- Category(s)
- emacs
- The URL to Trackback this entry is:
- http://dev.ariel-networks.com/Members/matsuyama/auto-complete/tbping
"Error in post-command-hook: (wrong-type-argument wholenump -16)"
原因はわかっていません。補完候補に日本語が含まれているときに出やすいようです。
環境は、Mac OS X 10.5 GNU Emacs 22.2.1 (i386-apple-darwin8.11.1, Carbon Version 1.6.0) です。
バッファの最後にいる場合は適当にスクロールするようにしておきました。
> Anonymous User さん
最新にすれば直ってると思います。
日本語対応ありがとうございました。
早速、最新版を試してみたのですが、まだ同じような現象が続いています。
補完候補に日本語などのMBCSが含まれるとき、menuが崩れ、エラーとなる状況です。
で、ac-menuを生成するところが怪しいと思い、ac-candidate-widthの値25->80に変えたところ。
menuの崩れは解消できないものの、エラーは出ないです。
一応既存のものはあるっちゃあるみたいですねー。
http://cedet.sourceforge.net/intellisense.shtml
でもMeadowで動かないのでこっちはパス
現在の最新ではどうでしょうか。
最新版で試してみました。
menuの崩れもありませんし、ac-candidate-widthをデフォルト25のままでも問題なく動作しました。
ありがとうございました。愛用させてもらいます。
ところで動作についての質問があります。
CarbonEmacs(GNU Emacs 22.2.50.1)で実行しているのですが、TABキーを入力しなくても補完一覧がイキナリ表示されてしまっています。
これは意図してのものでしょうか。説明文だと、TABキー入力をトリガにして補完リストが表示されるように読めたのですが…。
勘違いしていたらすみません。
もし可能でしたら、設定で切り替えられるようにしてもらえると嬉しいです。
仕様です。が、いきなり補完されると邪魔という意見は聞いているので、次のバージョンでそのあたりを設定で切り替えられるようにします。しばしお待ちを。
リリース当日に試させてもらったのですが、該当候補があった場合、いちいちC-n, C-p, C-mが食われちゃうとプログラムを書く速度が劇的に下がった為、一旦外しました。
該当候補があった場合、自動で候補表示というアイデアは良いと思うのですが、キーバインドをM-n, M-p, M-m等別の別のキーにバインドするというアイデアはどうでしょうか?
僕が試した場合、自動で候補が表示されてから、補完が不要な場合はいちいちC-gで補完中止する等しないといけなくて、実用的に利用できないように感じたのですが、皆さんどうされてらっしゃるんでしょうか。
ご参考までに。
http://d.hatena.ne.jp/rubikitch/20081117/1226920228
ウィンドウ右側の方で候補を出るケースでは、オーバーレイが折りかえされて、見た目がおかしくなるようです。
なるほど。非常に貴重な意見です。一応 ac-complete-mode-map を define-key で操作してやれば自分の好きなキーバインドに変更することができますが、何も考えずに今のようなキーバインドになっているので、もう一度一から考えなおしてみます。
> ウィンドウ下部で補完をした場合、候補を上部に出すパッチを書いてみました。vimみたいに。
ありがとうございます。早速取り込みました。
> ウィンドウ右側の方で候補を出るケースでは、オーバーレイが折りかえされて、見た目がおかしくなるようです。
次のバージョンで直ります。
もう少しで次のバージョンをリリースするのでもう少しお待ちを。
http://www.emacswiki.org/emacs/AutoComplete
一応テストしてますが、 unstable な扱いなので気をつけてください。今までのコメントで指摘された問題はほぼ全て解決してます。