9

お気に入りのエディターで適切なコード補完を設定しようとしています。インターネットにあふれているプログラム固有の回答を避けるために、それを AnEditor と呼びましょう。(言語は ALanguage です。) このエディターには、私が気に入っている 2 つの機能があります。コンソールでも GUI でも同様に機能するため、ネットワーク経由で使用でき、非常に拡張可能です。そのため、本格的な IDE を使用するのは気が進まないのです。しかし、適切な解決策が見つかった場合はプラグインできますが、エディターにはしっかりしたコード補完機能がありません。

「 [エディタ/IDE Y]での[言語 X]の補完」について、たくさんの質問と解決策をググってみました。すべての新しい IDE は、すべての言語のコード補完をゼロから、パーサーなどから実装しているようです。そして、すべての単純なエディター (AnEditor を含む) は、次のいずれかを実行します。

  • 標準ライブラリ関数名のみを完成させ、
  • または、遅延した正規表現ベースの「解析」(非 C プログラム用) を提供する ctags を使用し、今入力した変数の型を伝えることを想定していないため、実際のコード補完にはあまり役に立ちません。
  • エディターがプラグインで拡張可能な場合は他の方法もありますが、通常は、大量のカスタム正規表現を使用して、上記の多かれ少なかれ変則的な組み合わせになります。

さて、問題は、私が AnEditor にプラグインし、他の誰かが ABigIDE にプラグインできるサウンド コード補完ライブラリがなぜないのかということです。私が知る限り (C ポインター ジャングルの解読は私の目的ではありません)、答えは次のようになります。

  • yacc/lex/bison (または静的アナライザー) のスタイルの汎用パーサーであり、作成中のコードを許容するように緩和され、JavaDoc スタイルのコメントを理解することができます。そして、できれば高速で、その場で使用できるようにします
  • クラスのメンバー、メソッドのシグネチャ、およびファイル内での位置 (現在は ctags がこれを行っています)、戻り値、および JavaDoc コメントからのその他のドキュメントを示すことができるインデックス
  • 変数の型を知っている別のインデックスと、現在書かれているファイルまたはコード内の位置に基づいて型を伝える関数

したがって、一部の言語の動作を完了するには、その言語のパーサー ルールを作成し、標準ライブラリとプロジェクトにインデックスを作成し、型通知関数を呼び出し、クラスのメンバーとドキュメントを検索します。または、オブジェクトの構築または静的呼び出しを扱っている場合は、クラスとメンバーをリストするだけです。

Eclipse、Netbeans、および JetBrains が Java でそれを成功させた場合 (そのため、私はEclipse を AnEditor にプラグインすることになっています)、なぜ誰も肥大化を抑えてより普遍的な方法でそれを行うことができないのでしょうか? それとも、何かが欠けていて、未来はすでにどこかに潜んでいるのでしょうか?

4

1 に答える 1