【问题标题】:Detecting outlining sections within EnvDTE.Document检测 EnvDTE.Document 中的大纲部分
【发布时间】:2014-12-17 17:14:47
【问题描述】:

我编写了一个扩展程序来逐行梳理代码文件以检测某些模式。我看到的问题是在使用 TextSelection.LineDown() 或类似内容时会跳过折叠部分中的行。 我知道 TextSelection.OutlineSection() 存在创建此类部分,但有没有办法检测并可能展开或折叠它们?

【问题讨论】:

  • 听起来您对文档的文本比对文档的大纲区域更感兴趣。如果这是一个正确的陈述,那么您可能根本不想操纵轮廓区域(这会分散用户的注意力),而应该询问有关您要解决的潜在真正问题的问题。
  • @SamHarwell 你说得对,我不太关心大纲区域,但我遇到的问题是TextSelection 确实很糟糕。潜在的问题是如果TextSelection.LineDown() 可以从TextSelection 的第4 行移动到第13 行,如果它在第5-13 行遇到折叠的轮廓选择,如何清晰地逐行读取文本文档。
  • TextSelection 不是您想要使用的。您应该提出一个关于获取文档文本的新问题。如果您可以将我们指向您的代码,或者提供有关您想要支持的 Visual Studio 版本以及您计划如何分发生成的扩展的详细信息,这将非常有帮助。

标签: c# envdte vs-extensibility


【解决方案1】:

在您的场景中,您不必使用 TextSelection,因为这与...文本选择有关。要遍历代码文件的行,给定一个 EnvDTE.TextDocument,您可以使用 TextDocument.StartPoint 属性来获取一个 EnvDTE.TextPoint,然后使用 TextPoint.CreateEditPoint() 创建一个 EnvDTE.EditPoint。使用 EnvDTE.EditPoint,您可以 GetText(...)、MoveToXXX(...) 等。EditPoints 不受折叠文本的影响。

【讨论】:

  • 这成功了,感谢您指出 EditPoint,因为它正是我所需要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-09
  • 2018-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-18
相关资源
最近更新 更多