2

标题就差不多了。我需要能够解析文档的语法以找出用户右键单击的内容以执行我的操作。我不是在操作文档,所以我真的只需要一些可以让我获得语法节点或等效的东西。我已经使用 C# 和 VB 进行了这项工作,但无法弄清楚 VSSDK 或 Roslyn SDK 的任何部分可以为我提供任何类型的打字稿语法树。

我如何使用 Roslyn 使用其他语言的示例,我有其他代码可以与 FileCodeModels 一起使用,所以如果我能得到它,我也可以使用它。

我实际上在想我需要利用安装到 VS 中的 TypeScript 扩展(创建扩展依赖),但我不太确定。

Microsoft.VisualStudio.Text.Editor.IWpfTextView textView = GetTextView();
if (textView != null)
{
                SnapshotPoint caretPosition = textView.Caret.Position.BufferPosition;
                Document document = caretPosition.Snapshot.GetOpenDocumentInCurrentContextWithChanges();
                if (document != null)
                {
                    SyntaxToken? token = document.GetSyntaxRootAsync().Result?.FindToken(caretPosition);                        
    }
}
4

2 回答 2

3

既没有 RoslynSyntaxTree也没有FileCodeModelfor TypeScript 代码,部分原因是 TypeScript 引擎本身是用 TypeScript 编写的,所以没有可管理的表示。TypeScript 的 IDE 体验在内部使用了一些 Roslyn,这就是为什么您会看到有一个 Document 可供您抓取,但那里没有可供使用的语法树。

于 2016-06-10T17:02:03.913 回答
1

正如@Jason Malinowski所说,您无法检索 Roslyn SyntaxTree 或 FileCodeModel,但您可以使用Javascript.NET运行typescriptServices并通过 JavaScriptContext 与其通信。如果您有兴趣,可以查看SharpDevelop的实现。

于 2016-06-11T08:17:41.573 回答