2017-11-02 20 views
0

「GoTo Definition」をサポートしているVisual Studio 2017にカスタム言語拡張(テキストDSL)を実装する例がありますか? VisualStudioWorkspaceには汎用シンボルテーブル(C#やVBではなく)をサポートするのに十分な柔軟性がないようです。カスタム言語のVisual Studio "GoTo Definition"の例?

Visual Studio Codeにカスタム言語のGoTo定義がサポートされています。

JavaIntellisenseController.GoToSourceImpl()のVisual StudioのJavaの "GoTo Definition"のサポートは、実際にはJavaシンボルを解決していないようです。

Roslynは抽象メソッドMicrosoft.VisualStudio.LanguageServices.VisualStudioWorkspace.TryGoToDefinition()を実装しますが、このAPIではMicrosoft.CodeAnalysis.ISymbolなどの.NET言語固有の型を使用します。

別の方法がありますか?カスタムWorkspaceクラスを使用していますか?

+0

@HansPassantワークスペースは、複数のドキュメントやプロジェクトにまたがるシンボルテーブルを保持する自然な場所ですが、Workspaceクラスへのフック方法はわかりません。私は事例を見つけることを望んでいた。 –

答えて

0

language serverをビルドすることは、まもなくVisual Studioで独自の言語サポートを最初から構築するのに便利な選択肢になるようです。 Visual Studioは、プレビューhereで利用可能な、言語サーバー用の新しい実験的な機能を提供しています。 C#で構築された言語サーバーの例は、MicrosoftOmniSharpから入手できます。後者は、C#で言語サーバーを構築するための一般的な足場のように見えます。

この回答は、「GoTo Definition」のサポートを備えたVisual Studioのカスタム言語実装の動作中のオープンソースの例を示していませんが、より実行可能な選択肢を提供します。 VisualStudioWorkspaceを再利用することに関する疑問は疑問です。言語サーバーは独自のワークスペース状態を維持します。

言語サーバーは構文の強調表示を実装していません。 VSコードは構文の強調表示にTextMate grammarを使用します。しかし、hintsがあり、より洗練された構文の強調表示が今後language server protocolから利用できるようになります。

+0

[LSP wiki](https://github.com/Microsoft/language-server-protocol/wiki)は、実装とSDKを指しています。 –

関連する問題