Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What are the problem?

posted at

updated at

Delphi LSP を Visual Studio Code から使う

はじめに

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:


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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
1
Help us understand the problem. What are the problem?