LoginSignup
16
3

More than 1 year has passed since last update.

Delphi LSP を Visual Studio Code から使う

Last updated at Posted at 2021-09-10

はじめに

2021/09/10 に Delphi 11.0 Alexandria がリリースされました。Delphi 11.0 では Visual Studio Code との LSP (Language Server Protocol) による連携が可能となっているので、これを試してみる事にしました。

何ができるようになるかと言えば、Visual Studio Code で開いた Delphi のソースコードに対してコード補完等のコード入力支援が使えるようになります 1

導入

Visual Studio Code で Delphi LSP を使えるようにする手順を以下に示します。

1. LSP 設定ファイルの出力

プロジェクトフォルダに Delphi LSP の設定ファイルを出力するように設定を行います。

  1. Delphi IDE から [ツール | オプション]オプションダイアログを開き、
  2. 左側のツリーで [ユーザーインターフェース > エディタ > 言語] と辿ります。
  3. 言語ページの [言語] を Delphi にします。
  4. [支援機能タブ] を開きます。
  5. LSP 設定の生成 にチェックを入れます。
    image.png

2. Visual Studio Code に Delphi LSP 拡張機能を導入

Visual Studio Code に Delphi LSP 拡張機能を導入します。

  1. マーケットプレース (〔Ctrl〕+〔Shift〕+〔X〕) で DelphiLSP を検索し、インストールします。
    image.png
  2. 設定 (〔Ctrl〕+〔,〕) に移動し、[ユーザー] タブで [拡張機能 > DelphiLSP] と辿ります。
    image.png
  3. [Executable] に DelphiLSP.exe へのフルパスを指定します。デフォルトのインストールパスなら C:\Program Files (x86)\Embarcadero\Studio\22.0\bin\DelphiLSP.exe となります。
  4. 必要なら [Log Modes] に 255 を指定します。ログが %temp%\DelphiLSP に格納されるようになります。
設定項目 説明
Agent Count
[ユーザー] タブ
2 Server Type が controller の時は 2。
Executable
[ユーザー] タブ
DelphiLSP.exe へのフルパス。設定しなくても動作する。
Log Modes
[ユーザー] タブ
0 255 を設定するとログを出力する。
Server Type
[ユーザー] タブ
controller agent は Code Insight のみ。linter は Error Insight のみ。controller は両方。
Settings File
[ワークスペース] タブ
*.delphilsp.json へのフルパス。設定しなくても動作する。

3. Delphi でプロジェクトを開く

Delphi IDE でプロジェクトを開きます。
image.png
既存のプロジェクトを開くだけでプロジェクトフォルダに JSON 形式の Delphi LSP 設定ファイルが生成されます。

4. Visual Studio Code でプロジェクトフォルダを開く

Visual Studio Code で [ファイル | フォルダーを開く] (〔Ctrl〕+〔K〕,〔O〕) から Delphi のプロジェクトフォルダを開きます。
image.png
左側のファイルリストから *.pas*.dpr を開くと DelphiLSP が有効な状態になります。

おわりに

プロジェクトフォルダを移動またはコピーした場合には、プロジェクトフォルダ内にある .vscode サブフォルダを削除し、Delphi IDE でそのプロジェクトを単に開いてください。*.delphilsp.json が再生成されます。

私の環境 (RAD Studio 11 Alexandria Professional) ではエラーメッセージ (Error Insight 相当) は正しく表示されるものの、残念ながらコード補完 (Code Insight 相当) が正しく動作しませんでした。

No license found
有効なライセンスが見つかりません。Embarcadero のサポートにお問合せください。

この件に関してはエンバカさんに問合せ中です。
image.png
「Professional 版だから動かない」という事はないハズです。
image.png
設定で Server Typelinter にすれば、頭の悪いコード補完になりますが、Error Insight は有効なのでそれなりに使えます。

See also:

追記 (2022/09/27):

やっとこの問題が解決しました。

問題が発生している場合には、ライセンスマネージャ ([ヘルプ | ライセンスマネージャ]) でライセンスに含まれる有効なプロダクトを調べます。以下は当方の RAD Studio Professional の情報です。

ライセンスの詳細:
タイトル:  RAD Studio XE8 Professional Named User Upgrade from XE4 or later 

...

このライセンスで有効になるもの:

Delphi XE8 Professional with Mobile 
Delphi 10 Seattle Professional with Mobile 
Delphi 10.1 Berlin Professional with Mobile 
Delphi 10.2 Tokyo Professional with Mobile 
Delphi 10.3 Rio Professional with Mobile 
Delphi 10.4 Sydney Professional with Mobile 
Delphi 11.0 Alexandria Professional with Mobile 
DelphiLSP
HTML5 Builder 
C++Builder XE8 Professional with Mobile 
C++Builder 10 Seattle Professional with Mobile 
C++Builder 10.1 Berlin Professional with Mobile 
C++Builder 10.2 Tokyo Professional with Mobile 
C++Builder 10.3 Rio Professional with Mobile 
C++Builder 10.4 Sydney Professional with Mobile 
C++Builder 11.0 Alexandria Professional with Mobile 
InterBase XE7 Developer IDE 
InterBase XE7 ToGo Edition 1 User 
InterBase 2017 Developer IDE 
InterBase 2017 ToGo Edition 1 User 
InterBase 2020 Developer IDE 
InterBase 2020 ToGo Edition 1 User 
RAD Studio 10 Seattle Professional 
RAD Studio 10.1 Berlin Professional 
RAD Studio 10.2 Tokyo Professional 
RAD Studio 10.3 Rio Professional 
RAD Studio 10.4 Sydney Professional 
RAD Studio 11.0 Alexandria Professional 

このライセンスで有効になるもの: の中に DelphiLSP が含まれない場合、件の問題が発生するようです。[ライセンスの操作]: でライセンスを [削除] した後に再度 [登録] を行ってみましょう。
image.png
この操作を行っても このライセンスで有効になるもの:DelphiLSP が出てこない場合にはエンバカさんのサポートに本記事か RSP-35388 の URL を添えて問い合わせるとよいかと思います。

結局の所、ライセンスに混乱があるとどれだけ [削除][登録] を行ってもリストに DelphiLSP が出てこないようです。
image.png
やっと使えるようになりました!

See also:

  1. Delphi IDE コードエディタのフリーカーソル移動が苦手な方が、傍らで Visual Studio Code を開いてコード編集...なんて事ができます。

16
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
3