【发布时间】:2021-05-03 06:34:02
【问题描述】:
我在自己的 IDE 中使用 Roslyn,它使用自定义项目系统(不是 VS 系统)。我目前使用 AdHocWorkspace 作为 Roslyn 工作区。
我通过 Roslyn 程序集中包含的 CodeFixProvider 支持我的 IDE 中的代码修复。修复在我的工作区上应用操作很好,但我想知道在应用修复后是否有可能获得新的插入符号位置?
例如,如果用户在我的编辑器中键入 HttpClient,然后使用代码修复添加 System.Net.Http 命名空间,HttpClient 标记的位置会发生变化(因为文件),但我想将插入符号保留在与该标记相关的位置。
对于这种特殊情况,我使用ProjectSymbolReferenceCodeAction 操作,并且此操作从GetOperationsAsync 返回的唯一操作是ApplyChangesOperation 操作。我期待它可能还会返回另一个移动插入符号的操作,但它没有。
我假设这可能与 AdHocWorkspace 并不暗示 IDE 并因此不支持插入符号位置的概念有关,但我不知道是不是这样,如果是这样,如何创建自己的工作区来支持这一点。
TLDR:您能否指出我在应用代码修复后如何处理移动插入符号的正确方向?
【问题讨论】: