Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2010 如何连接到与VS2010';s大纲模型_Visual Studio 2010 - Fatal编程技术网

Visual studio 2010 如何连接到与VS2010';s大纲模型

Visual studio 2010 如何连接到与VS2010';s大纲模型,visual-studio-2010,Visual Studio 2010,我正在为VS2010编写一个扩展,它通过重新排列代码部分和插入#区域来重新排列代码页 我希望能够在完成文本操作后编写对“Edit.CollapseToDefinitions”命令的调用代码。我可以在VisualStudio模型中通过调用DTE2对象上的ExecuteCommand来调用此命令 但是,如果在文档中移动文本后立即调用该命令,VS将没有时间更新其大纲记录。因此,我希望能够连接到当前文本编辑器窗口上的事件大纲。有人知道怎么做吗?没有什么好办法。您可以在上侦听大纲区域更改事件(由[Impo

我正在为VS2010编写一个扩展,它通过重新排列代码部分和插入#区域来重新排列代码页

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


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

没有什么好办法。您可以在上侦听大纲区域更改事件(由[Import]ing an检索),但无法保证第一个事件将是语言服务重新引入所有大纲区域的事件。大多数语言都是在VS idle循环中进行的,但仍有一定的延迟,这样就不会中断慢速键入

我会尝试玩一些类似的东西:

  • 完成文本编辑
  • 对定义的调用
  • 订阅
    IOutliningManager.RegionChanged
  • 如果在(比如)接下来的5秒内引发下一个事件,请再次调用collapse to definitions

  • 谢谢你,诺亚。这听起来很混乱,不是吗?这是语言使用的异步模型的缺点。我希望在未来版本的VS中引入一些东西,让消费者以这样一种方式要求标签(包括概述区域),这意味着“继续并阻止,直到你准备好”。