最近、こちらでauto-complete.elなるものが開発された事を知り早速試してみました。
リンク先のスクリーンショットにもある通り、非常にグラフィカルにVisualStudioのインテリセンスみたいな感じで補完の候補が表示されるので「こりゃ便利かも〜[E:happy02]」と思い使ってみると、確かに動作も軽快やし直感的やから使いやすいのだけど、一つだけ問題が…。
文字の入力直後から補完候補を表示してしまうために、cc-modeの自動インデントが効かないみたいなのです。
どういう事かと言うと、例えばクラス定義を書いた時に、クラス名の後(中括弧の後)ではブロックが開くのでtopmost-introのルールが適用されて、以下のように1レベルインデントされるのだけど
class TestClass {
public
いつもならpublicの後のコロン":"を入力する事で自動的にaccess-labelルールで再インデントされて先頭に戻るわけです。で、結局
class TestClass {
public:
となって、意図通りに表示されます。
でも、auto-completeが有効だとpublicを入力した時点でpublicの補完候補が表示されており、その後の":"を入力すると public: 補完候補表示が非表示されるだけでaccess-labelルールでの再インデントがされないのですわ。もちろん、その状態でもう一度TABを押せば再インデントされるのだけど、そりゃ不便やなぁ。
という事で、残念ながらしばらくcc-modeでは補完候補を表示しないようにしておく事にしました。auto-complete.elの中を見て簡単に修正できそうならやってみるのだけど・・・。上記、作者様のサイトでも、文字入力と同時に補完候補が表示されてしまう事について指摘がされてて、将来的にはキーバインドを見直す可能性もあるみたい。補完候補の表示が自動でなければ、この問題はおきないと思うのやけどね。
もうちょっと調べてみよう。