【Emacs】 auto-completeと自動インデント

最近、こちらで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の中を見て簡単に修正できそうならやってみるのだけど・・・。上記、作者様のサイトでも、文字入力と同時に補完候補が表示されてしまう事について指摘がされてて、将来的にはキーバインドを見直す可能性もあるみたい。補完候補の表示が自動でなければ、この問題はおきないと思うのやけどね。

もうちょっと調べてみよう。

Author: kan
初めてプログラムらしきものを作ったのは幼稚園の時。それから約40年経ち、現在はデジタル回路設計から信号処理、機械学習まで幅広い経験を活かしてシステムアーキテクトとして活動中。超並列処理、デジタル回路とソフトウェアのバランス設計が得意分野。 Linux/Mac/Windows使い。 C/C++を主要言語として、Unity、Qtなどのフレームワーク興味あり。UI/UXデザイン、STL拡張など。 音声処理、画像処理、技術コンサルは仕事でも請け負います。 一般ソフトウェア開発プロセス、医療機器ソフトウェア開発プロセス作成も進行中。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください