#概要
これまでの記事でXtext Visual Studio Code Exampleを例に、DSL向けのプログラミング環境を提供する、VSCode向けの拡張機能について書いてきました。昨今のプログラミング環境は、概ね決まった機能を提供する雛形に基づいて作られています。ここでいったん、vscode、xtext、Xtext Visual Studio Code Exampleなど関係について整理し、独自DSLのプログラミング環境を拡張機能で提供する上で、必要なことがらについてまとめていきたいと思います。
#開発環境など
- Windows10 Pro 1909
- VSCode 1.47
- JDK 1.8
- Xtext 2.24
#整理
まずは星取表で整理してみました。
編集途中の項目が多いので、少しずつ足していきます。
機能 | vscode1.47(>LSP3.15) | xtext2.24 | Xtext Visual Studio Code Example | 一連の記事で実現したこと。なお、コードはこちら | 独自DSL化に必要なこと |
---|---|---|---|---|---|
コメント | クライアントとして対応済を✔ | LSP対応済を✔ | 筆者による対応確認済を✔ | ✔は、断りない限りXtext Visual Studio Code Exampleにならう | |
Syntax Coloring | ✔ | ✔ | ✔ | ✔ | (xtextによる文法定義とは非同期のため、mydsl.tmLanguage.jsonの手動更新が必要) |
Semantic Coloring | ✔ | ||||
Error Checking(通常の文法エラーに報知) | ✔(エラー箇所に赤い下線。1000個目以上のエラーには赤下線が引かれず) | ✔ | ✔ | ✔ | |
Validation | ✔ | ✔ | ✔ | ||
Auto-Completion | ✔ | ✔ | ✔ | ✔ | |
Formatting | ✔ | ✔ | ✔ | ✔ | |
Hover Information | ✔ | ✔ | ✔ | ✔ | |
Mark Occurrences | ✔ | ✔ | ✔ | ✔ | |
Go To Declaration | ✔ | ✔ | ✔ | ✔ | |
Rename Refactoring | ✔ | ✔ | ✔ | ✔ | |
Debugging | ✔ | ||||
Toggle Comments | ✔ | ✔ | ✔ | ✔ | |
Outline / Structure View | ✔ | ✔ | ✔ | ✔ | |
Find Reference | ✔ | ✔ | ✔ | ✔ | |
Call Hierarchy | ✔ | ||||
Type Hierarchy | |||||
Folding | ✔ | ✔(こちらで対応) | |||
保存時にファイル生成 | (vscodeの機能ではない) | (未対応。キー押下時にvalidationとファイル生成が連続実行される) | ✔(こちらでキー押下時にvalidationのみ、保存時に生成を実施するよう変更) | ||
進捗表示 | ✔ | ✔(こちらで準備、こちらで対応) | |||
コマンド実行 | ✔ | ✔ | ✔(MyDsl A、MyDsl Bが定義済) | ✔ |