Personal tools
You are here: Home ブログ matsuyama
Document Actions

テキスト入力中に補完候補を自動的に表示してくれる auto-complete.el をリリースしました

テキスト入力中に補完候補を自動的に表示してくれる auto-complete.el をリリースしました。 Visual Studio とか Eclipse には昔から搭載されている一般的な補完機能なのですが、どういうわけか Emacs にはないようなので作ってしまいました [*]

[*]僕の知るかぎりだと company-mode が一番近い

テキストが入力されたら、そのテキストにマッチする単語あるいはシンボルらしきものをバッファから探してきてポップアップします。よくあるインターフェースなので、スクリーンショットを見ればどういうものか一発で分かると思います。

http://dev.ariel-networks.com/Members/matsuyama/images/ac.png/image

まだよく分からないという人はデモを見てください。

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

Re:テキスト入力中に補完候補を自動的に表示してくれる auto-complete.el をリリースしました

Posted by rubikitch at 2008-11-09 04:04
これはすごい。さっそく使ってみます。ブログで紹介しました。

Re:テキスト入力中に補完候補を自動的に表示してくれる auto-complete.el をリリースしました

Posted by Anonymous User at 2008-11-09 05:30
さっそく使ってみました。が、以下のようなエラーが出たあと、機能しなくなります。
"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) です。

Re:テキスト入力中に補完候補を自動的に表示してくれる auto-complete.el をリリースしました

Posted by matsuyama at 2008-11-09 10:38
> rubikitch さん
バッファの最後にいる場合は適当にスクロールするようにしておきました。

> Anonymous User さん
最新にすれば直ってると思います。

Re:テキスト入力中に補完候補を自動的に表示してくれる auto-complete.el をリリースしました

Posted by Anonymous User at 2008-11-09 14:25
日本語がおかしいと報告した者です。
日本語対応ありがとうございました。
早速、最新版を試してみたのですが、まだ同じような現象が続いています。
補完候補に日本語などのMBCSが含まれるとき、menuが崩れ、エラーとなる状況です。
で、ac-menuを生成するところが怪しいと思い、ac-candidate-widthの値25->80に変えたところ。
menuの崩れは解消できないものの、エラーは出ないです。

Re:テキスト入力中に補完候補を自動的に表示してくれる auto-complete.el をリリースしました

Posted by Designer at 2008-11-09 22:29
thanks..... nice article.

Re:テキスト入力中に補完候補を自動的に表示してくれる auto-complete.el をリリースしました

Posted by Anonymous User at 2008-11-10 13:52
これはすごい。早速つかわせていただきます(・∀・)

一応既存のものはあるっちゃあるみたいですねー。
http://cedet.sourceforge.net/intellisense.shtml
でもMeadowで動かないのでこっちはパス

Re:テキスト入力中に補完候補を自動的に表示してくれる auto-complete.el をリリースしました

Posted by matsuyama at 2008-11-11 11:43
> 早速、最新版を試してみたのですが、まだ同じような現象が続いています。
現在の最新ではどうでしょうか。

Re:テキスト入力中に補完候補を自動的に表示してくれる auto-complete.el をリリースしました

Posted by Anonymous User at 2008-11-11 14:36
> 現在の最新ではどうでしょうか。
最新版で試してみました。
menuの崩れもありませんし、ac-candidate-widthをデフォルト25のままでも問題なく動作しました。
ありがとうございました。愛用させてもらいます。

Re:テキスト入力中に補完候補を自動的に表示してくれる auto-complete.el をリリースしました

Posted by paella at 2008-11-11 18:19
すばらしいです!皆さん同様、私も早速使わせてもらっています。

ところで動作についての質問があります。
CarbonEmacs(GNU Emacs 22.2.50.1)で実行しているのですが、TABキーを入力しなくても補完一覧がイキナリ表示されてしまっています。
これは意図してのものでしょうか。説明文だと、TABキー入力をトリガにして補完リストが表示されるように読めたのですが…。
勘違いしていたらすみません。

もし可能でしたら、設定で切り替えられるようにしてもらえると嬉しいです。

Re:テキスト入力中に補完候補を自動的に表示してくれる auto-complete.el をリリースしました

Posted by matsuyama at 2008-11-12 22:32
> CarbonEmacs(GNU Emacs 22.2.50.1)で実行しているのですが、TABキーを入力しなくても補完一覧がイキナリ表示されてしまっています。
仕様です。が、いきなり補完されると邪魔という意見は聞いているので、次のバージョンでそのあたりを設定で切り替えられるようにします。しばしお待ちを。

Re:テキスト入力中に補完候補を自動的に表示してくれる auto-complete.el をリリースしました

Posted by tomo at 2008-11-14 04:56
素晴らしいelispをありがとうございます。

リリース当日に試させてもらったのですが、該当候補があった場合、いちいちC-n, C-p, C-mが食われちゃうとプログラムを書く速度が劇的に下がった為、一旦外しました。

該当候補があった場合、自動で候補表示というアイデアは良いと思うのですが、キーバインドをM-n, M-p, M-m等別の別のキーにバインドするというアイデアはどうでしょうか?

僕が試した場合、自動で候補が表示されてから、補完が不要な場合はいちいちC-gで補完中止する等しないといけなくて、実用的に利用できないように感じたのですが、皆さんどうされてらっしゃるんでしょうか。

ご参考までに。

Re:テキスト入力中に補完候補を自動的に表示してくれる auto-complete.el をリリースしました

Posted by rubikitch at 2008-11-18 06:34
ウィンドウ下部で補完をした場合、候補を上部に出すパッチを書いてみました。vimみたいに。
http://d.hatena.ne.jp/rubikitch/20081117/1226920228

Re:テキスト入力中に補完候補を自動的に表示してくれる auto-complete.el をリリースしました

Posted by Anonymous User at 2008-11-18 15:04
こんにちは。

ウィンドウ右側の方で候補を出るケースでは、オーバーレイが折りかえされて、見た目がおかしくなるようです。

Re:テキスト入力中に補完候補を自動的に表示してくれる auto-complete.el をリリースしました

Posted by matsuyama at 2008-11-19 00:36
> 該当候補があった場合、自動で候補表示というアイデアは良いと思うのですが、キーバインドをM-n, M-p, M-m等別の別のキーにバインドするというアイデアはどうでしょうか?
なるほど。非常に貴重な意見です。一応 ac-complete-mode-map を define-key で操作してやれば自分の好きなキーバインドに変更することができますが、何も考えずに今のようなキーバインドになっているので、もう一度一から考えなおしてみます。

> ウィンドウ下部で補完をした場合、候補を上部に出すパッチを書いてみました。vimみたいに。
ありがとうございます。早速取り込みました。

> ウィンドウ右側の方で候補を出るケースでは、オーバーレイが折りかえされて、見た目がおかしくなるようです。
次のバージョンで直ります。


もう少しで次のバージョンをリリースするのでもう少しお待ちを。

Re:テキスト入力中に補完候補を自動的に表示してくれる auto-complete.el をリリースしました

Posted by matsuyama at 2008-11-19 10:37
とりあえず次のリリース候補です。下のリンクから取得することができます。

http://www.emacswiki.org/emacs/AutoComplete

一応テストしてますが、 unstable な扱いなので気をつけてください。今までのコメントで指摘された問題はほぼ全て解決してます。

Copyright(C) 2001 - 2006 Ariel Networks, Inc. All rights reserved.