65.9K
CodeProject 正在变化。 阅读更多。
Home

为 Visual Studio 添加标签支持

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.20/5 (2投票s)

2001年3月6日

CPOL
viewsIcon

92866

downloadIcon

408

提供标签支持的 Visual Studio 宏。

这是什么呢?

在UNIX平台上使用vi编辑器编程,之后在PC上使用Lemmy,我一直想念在使用Visual Studio时使用标签的功能。这里发布的宏提供了标签支持。

要使用宏文件,只需将其放在Visual Studio安装目录下的Common\MSDev98\Macros目录中。宏文件公开了两个函数(如下所示)。这些函数可以映射到您选择的键。

函数如下所示

PushContext:调用此函数会拾取当前选定的文本,并在标签文件中查找其引用。如果在文件中找到它,则打开包含它的文件并跳转到正确的行或文本。当前光标位置(和文件)将添加到标签堆栈。

PopContext:此函数将从标签堆栈中取出顶部条目,并跳转到那里列出的文件和光标位置。这使您可以跳转到定义,然后返回到您之前工作的位置。无论跳转到的标签是在同一个文件还是不同的文件中,这都有效。

那么为什么不使用Visual Studio内置的浏览器功能呢?

我喜欢标签的一个方面是浏览器信息无法提供的:能够堆叠标签,以便我可以返回到我来的地方。

嗯,看起来很有用,但是如何生成我的标签呢?

为了生成我的标签,我使用Darren Hiebert的Exuberant Ctags。可以从http://ctags.sourceforge.net/免费下载。需要注意的是,如果您通过指定目录来创建标签文件,则文件路径将作为相对路径存储在标签文件中。这会导致问题,因为每次打开文件时,Visual Studio都可能会更改其当前目录。

工作原理

第一次执行PushContext函数时,将在当前文件所在的目录中搜索标签文件。如果找到,则逐行读取其内容,并将标签文本添加到字典中,以及标签信息(文件路径和行号或搜索文本)。(这意味着第一次读取标签文件时会有一点延迟,但之后速度很快。)

为每个读取的标签文件保留一个单独的字典,并使用字典的字典来获取正确的字典。这意味着不同的目录可以使用不同的标签文件。

在读取标签文件之前,会搜索主字典以查看是否已存在该文件的字典。如果存在,则将文件的时间戳与字典中保存的时间戳进行比较,以查看是否需要重新读取标签文件。这使您可以随时更新标签,并仍然能够正确使用它们。

限制

如果标签文本在文件中列出多次,则只使用第一次出现。为避免这导致问题,在创建标签文件时要小心,确保首先扫描更重要的文件,并生成一个未排序的标签文件。

© . All rights reserved.