ESS on Emacsで快適に補完できるauto-complete-acr.el0.2リリースしました


前にちょこっと書いてみたauto-complete-acr.elなるelisp。

Rを書くに、がんがんauto-completeできるのでかなり便利。でもう手放せない感じだったのですが、いろいろと不満もあったので書き直してみました。

前のバージョンのいけてなかったところ

前のバージョンについては、この辺を読んでもらうといきさつがわかるかもです。

emacsのpython-modeでもauto-complete.elを使う
auto-complete.elを拡張するR用のelispをさらに拡張してみた。

要は、auto-completeするときの補完候補は自前で作る必要があったわけです。それでも結構補完できたりするのですが、例えばパッケージで定義されている関数は、パッケージがインストールされた段階で補完候補リストを作ったりしないといけなかったのでかなりめんどう。新しくパッケージインストールしたりするとまた補完候補を作らないといけなかったりします。それと自分で作った関数を使うときは、これも自分で補完候補を編集しないといけないのでさらに面倒。できれば何もかんも自動でやってくれたらなー。

今回改良されたところ

ESSの内部で定義されている関数を使ってiESSバッファで読み込まれたパッケージやソースファイルを読んで動的に補完候補が生成されるようになりました。例えば、下のスクリーンショットはlibrary(“R2WinBUGS”)してパッケージを読み込んだ状態ですが、”as.”と打ち込んだ段階で、R2WinBUGSパッケージ内で定義されている関数、”as.mcmc”とかが補完候補にでてきてます。
acr
さらには、source(“hogehoge.r”)とかして、読み込んでしまえばhogehoge.rで定義していた自前関数も補完候補にリストされるようになります。つまり、たいていの関数なりオブジェクトなりが補完できるようになります。

使い方

まずは、auto-complete.el。githubからとってきましよう。trunkのやつで動くと思います。
m2ym’s auto-complete at master – GitHub
次は、auto-complete-acr.el。同じくgithubに置いてるので一番新しいやつをとってきます。久しぶりにgitコマンド使おうと思ったら、なんかかなり忘れててあせりました。
myuhe’s auto-complete-acr.el at master – GitHub

後は、.emacsに書くだけ。auto-complete自体の挙動をどうにかしたいときは、てきとーにごにょごにょしてください。yasnippet.elも入れておくと、さらに快適になります。
[cpp]
(require ‘auto-complete)
(require ‘auto-complete-yasnippet)
(require ‘auto-complete-acr)
[/cpp]
そしたら、まずはおもむろにM-x R。後は、パッケージとかソースファイルとか読み込ませた後でESSモードで開いたファイルにがんがん書いて実行します。実行した時にlibrary()などでパッケージを読み込めば、そのパッケージで定義されている関数が動的に補完候補になります。最初に補完するときだけは補完候補を作るのに時間がかかりますが、その後は結構サクサク動くと思います。

その他もろもろ

新しいやつでは補完できる関数がかなり増えたのですが、そのせいかスペックが低いPCで動かすとかなりもっさりします。その時は前のバージョンを使ってもらった方がいいかもしれません。
ubuntuとWinでは動作確認してます。多分Macでも動くと思います。動かねーとかあったら教えてください。