Delphi 10.4.1は品質に重点を置いたリリースであり、この改善はコード補完にも該当します。10.4.1では従来のコード補完の動作を模倣するだけでなく、多くの修正および調整をしました。
RAD Studio 10.4のリリース時にCode Insightを再設計しました。従来のCode Insightは引き続き設定として利用可能ですが、デフォルトでは、Delphiのコード補完と関連機能のために非同期でノンブロッキングな技術を使用するように変更されています。この新しいアルゴリズムによって従来のコード補完よりもパフォーマンスは向上し、コード入力中でもIDEが一時停止せず、デバッグ中にコード補完が使用可能となり、コード補完の結果の表示速度も大幅に改善されました。この機能の詳細は、こちらをご覧ください。
10.4.1では、新機能はそれほど多くはなく、品質向上に重点を置いたリリースとなっており、その内容の大部分は不具合の修正と動作の調整です。10.4.1でCode Insightも更なるブラッシュアップが行われており、新しい設定も追加されています。
このブログでは、Code Insightの新しいオプション設定、主要な修正、および非常に大規模なプロジェクトに関する特別な注意事項など、何点か知っておくべき内容について説明していきます。
Table of Contents
新しいコード補完の設定
一致した文字の下線表示
10.4 の新しいコード補完では、入力した内容(フィルターされたテキスト)で始まるだけでなく、入力した内容を含む項目も一覧表示されるため、10.3よりも前の従来の補完よりも多くの結果が表示されます。 (10.4.1では、これらの追加項目を含めて制御するオプション設定があります。詳しくは次節を参照してください。)
入力することで補完リストを探索したり検索したりできるので便利です。ただ特定の結果がリストに含まれている理由がわかりにくい場合があるので、10.4.1では一致した文字に下線が引かれるように変更されました。
上図の例では、”ScaleFactor”には”act”が含まれているため、actの箇所に下線が引かれています。
IDEのツールオプションで”下線表示”の設定はオフにできます。新しいオプション設定については、次節を参照してください。
従来のコード補完の挙動の取得
デフォルトでは、10.4からの新しいコード補完は、古い従来のコード補完の動作と全く同じではなく、従来とは別のアルゴリズムを使用し、リスト内の最適なアイテムが自動選択し、より多くの補完結果を表示します。
10.4.1では、4つの設定が新しく追加され、これらの設定を組み合わせることで、従来のコード補完と全く同じ動作を設定できます。
4つの設定は、IDEのツールオプションの[ユーザーインターフェース] – [エディタ] – [ソース]ページの新しい[Insight Options]タブにあります。
‘Filter text is underlined’のオプションは、上述した一致した文字に下線を引く新機能を制御します。
従来のコード補完を模倣するには、次のように設定を変更します。
- ‘List all symbols that start with the filter first’: チェックオン
- ‘Select shortest matching symbol’: チェックオフ(代わりに最も近いスコープを選択)
- ‘Filter text is underlined’: チェックオフ
- ‘Show symbols that contain filter’: チェックオフ (このオプションは、より多くの有用な補完結果が表示されるので、そのままオンにしておくことを推奨)
主要な品質の修正
10.4.1の新機能のページには、Delphi LSP/ コード補完における多くの変更点が掲載されていますので、このリストを参照いただくことをお勧めします。特に今回注目すべき項目は、以下のとおりです。
- メモリ使用量とパフォーマンスの両方が改善されており、Delphi LSPプロセスのメモリ使用量も少なく、より高速な実行が可能。
- ベータテストに参加された方のご協力により、非常に大規模なプロジェクトを対象とした問題がいくつか改善されています。
- パッケージ処理の向上(詳細は新機能ページのドキュメントを参照ください)
- エラーインサイト(赤い波線)のエラーが表示される遅延時間や「赤い波線」の長さが違う2つの問題が解決されました。
- Delphi LSP/ コード補完に関する修正点は他にも多くありますので、詳しくは新機能のページのリストを参照ください。
大規模プロジェクトでの支援機能
次の修正が、大規模プロジェクトで特に顕著に効果が表れます。上記のメモリ使用とパフォーマンスにおける修正は、大規模プロジェクトにおいて特に顕著に表れます。
- コンパイラで、過去の致命的なエラーを解析するよう改善されました。
- IDE 側に変更があった際のサーバーへの通知が改善されました。これにより、重複処理が減少し、補完の制度が向上します。
以下は、10.4.1に関するお客様からのコメントの引用です。
Congratulations to the LSP team!
I have now managed to open&run our flagship app on 10.4.1. And – magic! – code completion finally works in our IFDEF-ridden main unit. I think last time code completion worked there was somewhere around D5 times …
It takes about 15 sec to work for the first time (it probably feeds enormous amount of units to the LSP) but after that it is a pure bliss to use!
Thank you!
このお客様のアプリは300万行弱のコードで、Code InsightがDelphi 5以来、ようやく10.4.1で動作したというコメントです。
エンバカデロでは、新しいバージョンのリリースでDelphiとC++Builderの改善を続けています。10.4.1は、特に品質向上にフォーカスしたアップデートでした。
今後も新しいバージョンを出荷するたびに、IDEの改善と変更を続けます。
またCode Insightの修正だけでなく、800以上ものバグ修正が行われ、10.4.1がインストールする価値のあるバージョンになることを期待しています。