如何连接与VS2010的概述模型相关的事件

时间:2010-10-02 15:29:59

标签: visual-studio-2010

我正在为VS2010编写一个扩展,它通过重新排列代码段并插入#regions来重新排序代码页。

我希望能够在完成文本操作后调用“Edit.CollapseToDefinitions”命令。我可以通过在DTE2对象上调用ExecuteCommand来在Visual Studio模型中调用此命令。

但是,如果我在文档周围移动文本后立即调用该命令,则VS没有时间更新其大纲记录。因此,我希望能够在当前的“文本编辑器”窗口中连接到概述事件。有谁知道怎么做?

1 个答案:

答案 0 :(得分:0)

没有好办法。您可以在IOutliningManager上侦听概述区域更改事件(通过[导入] IOutliningManagerService检索),但不能保证第一个事件将是语言服务重新发送的事件。介绍它可以的所有概述区域。大多数语言在VS空闲循环中执行,但仍然有一些延迟,因此它不会中断慢速键入。

我会尝试使用类似的东西:

  1. 完成文字修改
  2. 调用合并到定义
  3. 订阅IOutliningManager.RegionsChanged
  4. 如果在接下来的5秒内提出下一个事件,请再次调用折叠到定义。