在命令处理程序的光标处获取Roslyn SyntaxNode



虽然很容易在DiagnosticAnalyzer中获得所需的语法节点(因为它会传递给您),但不清楚如何在其他上下文中获得Roslyn中的语法节点。例如,Roslyn语法可视化器(其源似乎不可用)如何获得光标下的语法节点?

我想做的是实现一个命令,该命令可以利用Roslyn语法树来确定调用命令时光标的位置。我还没有找到这样使用Roslyn的方法

这里是Sytax Visualizer的github源代码链接

首先,需要获取当前文本缓冲区。它有点复杂,我个人使用了Mads Kristensen在他的开源WebEssentials中编写的代码。参见ProjectHelpers.cs.

中的GetCurentTextBuffer()

第二,检索适当的Roslyn结构(例如Document),你可以使用Roslyn中的扩展方法之一(参见Microsoft.CodeAnalysis.Text.Extensions)。这篇文章的灵感来自Josh Varty的一篇博客文章。

从那里,很容易获得Roslyn文档的SyntaxTree并找到插入符号位置的节点。

最新更新