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

Visual Studio 的 Linkify 插件

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.59/5 (22投票s)

2006 年 8 月 15 日

CPOL

9分钟阅读

viewsIcon

198538

downloadIcon

481

将源代码注释链接到您的错误跟踪器、MSDN、开发 Wiki 等。

Sample Image - linkify.gif

新功能: 版本 1.3 (2008 年 8 月)

引言

Linkify 是一个 Visual Studio 插件,它将您的源代码注释链接到您的错误跟踪器、开发 Wiki、MSDN、Google 或任何其他网站或实用程序。它支持 Visual Studio 2005 和 2008。

您不是插入 URL,而是插入以已知前缀开头的文本,例如:

// this code fixes bugz:666 - don't remove!
// for more info, see msdn:MakeSureDirectoryPathExists and wiki:ThatUglySaveBug

要跟踪其中一个链接,将光标放在链接文本上,然后从“工具”菜单中选择“Linkify”。为它创建一个工具栏按钮和/或键盘快捷键会很有帮助!

上面的示例(如果这样配置)使用 bugz: 协议链接到您的错误跟踪器,立即打开案例 666。msdn: 是一个预配置协议,它通过 Google 在 MSDN 中搜索 MakeSureDirectoryPathExistswiki: 可能会链接到您的开发 Wiki。

为什么不直接粘贴 URL?

当然,您也可以粘贴 URL,但 Linkify 具有一些优势

  • 源代码保持更高的可读性。
  • Linkify 允许创意 ShellExecute 调用可以做的所有事情:打开 URL、打开文档、运行程序。
  • 如果您的错误跟踪器迁移到新的 URL,只需重新配置 Linkify 协议即可,所有链接都将更新。

安装

本文现在包含一个安装程序,它会将其放置在 Visual Studio 2005 和 2008 默认搜索插件的五个文件夹之一中。但是,如果您更改了插件搜索文件夹或遇到其他奇怪问题,这里是如何手动安装的方法

要手动安装 Visual Studio 2005,请将 LinkifyAddin.zip 中的两个文件解压到您的 Visual Studio Addins 文件夹,例如 \Documents and Settings\<用户>\My Documents\Visual Studio 2005\Addins,其中 <用户> 是您的用户名或“所有用户”。当您再次启动 Visual Studio 时,Linkify 会出现在“工具”菜单中。您也可以从那里将其放在工具栏按钮上和/或为其分配热键。

Visual Studio 2008 注意事项

Visual Studio 2008 的安装类似。插件二进制文件对于两个版本的 Visual Studio 都是相同的,并且包含两个 .AddIn 文件——每个 Visual Studio 版本一个。我没有发现将两个插件文件都放在一个 Studio 实例的搜索路径中会产生不良副作用(除了我的插件管理器会识别它两次)。

我还没有在 VS2008 上测试安装和最新的二进制文件,请报告您发现的任何错误。

如何配置

在点击 Linkify 或在未识别文本上启动它时按住 Shift 会打开配置对话框。在那里您可以管理已识别协议的列表,并将它们与 URL 和其他命令关联起来。

settings3.png

示例

  • 前缀=bugz:
  • EXE/URL=http://companyserver/bugtracker/showbug.asp?id=*
  • 当光标位于 bugz:666 上时单击 Linkify 会打开 http://companyserver/bugtracker/showbug.asp?id=666

星号(*)会被源代码中的链接文本替换。

配置

前缀 协议前缀。您可以在此处使用任何字符序列,但建议以冒号结尾。
链接结束 配置在协议被识别后如何检测链接的结束
  • 空格 扫描直到遇到空格
  • 默认 使用一些启发式选择的字符,并且应该(大部分)等同于以前版本中使用的算法
  • 行其余部分 使用行中所有后续内容,不提问
  • 正则表达式 允许指定一个正则表达式,从行的其余部分中选择链接

请注意,您的链接文本可以在协议前缀后直接使用单引号或双引号来覆盖 空格默认

正则表达式

(仅当“链接结束”设置为“正则表达式”时可用)
用于从行中其余部分提取链接的正则表达式。

描述 只是为了让您知道这本来是要做什么的。
URL 转义 根据 URL 规则转义链接文本,这通常在目标是 URL 时是必需的。
确认执行 在运行命令前显示确认框。如果您正在做不可逆或危险的事情,或希望被询问,则建议使用。
展开环境变量 如果选中,URL/exe 参数中的环境变量将在调用 ShellExecute 之前展开。这允许泛型引用,例如 %PROGRAMFILES%\SomeTool\SomeTool.exe,以及其他技巧。
URL/EXE
参数
ShellExecute / ProcessStartInfo文件名参数 参数。第一个参数可以是可执行文件、URL 或文档路径。如果指定可执行文件,您可能还需要为其指定命令行参数。
实用程序 URL

指向有关前缀的更多信息/安装说明的链接。当发生错误或您启用测试模式时,会显示此链接。

如果前缀调用自定义工具,您可以在此处链接到安装说明。此外,您还可以在此处提供包含更多详细信息的页面。

更多/导出... 将您的设置导出到文件,以便您可以将其移动到另一台电脑。
更多/导入... 从文件导入设置。您可以替换所有现有协议,添加或合并它们。
更多/添加默认值... 将默认(示例)协议添加到列表中,以防您删除了它们但希望它们回来。
更多/Shift 强制配置... 启用/禁用在单击 Linkify 时按住 Shift 键直接进入配置对话框的功能。(默认启用
更多/测试模式... 启用/禁用所有协议的扩展确认对话框(覆盖 确认执行 选项)。此对话框包含有关该行上识别到的额外信息,并用于测试。
更多/关于... 将 Linkify 置于省电模式以防止全球变暖。(待实现)

链接文本是如何被识别的

链接文本解析器完全是手动扫描特定字符的丑陋过程。我对结果很满意,但效果可能因人而异。

  • 为了找到前缀,Linkify 从插入符号位置向左扫描,直到找到空白符或行首。
  • 在此位置检查文本是否与已知协议前缀匹配。比较是区分大小写的。我将前缀以冒号结尾,但您不必这样做。
  • 如果没有,但第一个字符是开括号,则跳过并再次检查。(hack)

“链接结束”设置现在决定如何识别链接。

  • 行其余部分 使用该行的其余部分。
  • 正则表达式 使用设置中指定的正则表达式。
    如果正则表达式包含名为“link”的命名组,则使用此值。否则,如果它包含任何组,则使用遇到的第一个组。否则,使用整个匹配项。
    如果这一切对您来说都是胡言乱语,请尝试 Jim Hollenhorst 的30 分钟正则表达式教程和他的Expresso
  • 空格 扫描到下一个空白符(或行尾)。
  • 默认 扫描到下一个终止字符:) .;

设置“空格”和“默认”允许使用单引号或双引号将包含终止字符的表达式括起来

  • google:"Visual Studio 2005" 搜索 Visual Studio 2005(无引号)。
  • google:'"Visual Studio 2005"' 搜索 "Visual Studio 2005"(带引号)。

源代码

源代码随此插件一起提供,尽管不建议阅读(FxCop 可能会给我戴上手铐)。使用一系列对当前选择的操作来提取光标下的文本有点棘手。我现在已将其更改为提取整行和选择位置,然后从那里开始工作。

Visual Studio 允许插件将设置保存在 Globals 对象中,但我发现这只适用于字符串。由于 settings 类是可序列化的,我将其序列化到内存流中,然后将内容转换为 base-64 字符串。我知道这很奇怪,但我想避免任何 Unicode 问题。可以通过配置对话框将设置导入和导出到文件中。其余代码(配置表单等)都非常简单。大部分初始化代码都是由插件向导创建的。如果您好奇,可以将我的代码与默认的插件向导生成的项目进行比较。

示例:Linkify CodeProject

要搜索 Code Project 上的文章,您可以添加以下设置

  • 按关键词搜索文章
    • 前缀:cp:
    • 网址:https://codeproject.org.cn/info/search.aspx?artkw=*&sbo=kw
  • 按作者搜索文章(目前不可用)
    • 前缀:cpian:
    • 网址:https://codeproject.org.cn/info/search.aspx?st=au&target=*
  • cp:Linkify 将搜索包含 Linkify 的文章
  • cpian:shog9 将搜索 shog9 撰写的文章

这没什么意义;只是一个小小的致敬...

许可证

此插件的二进制形式可免费用于任何用途(包括商业应用程序的开发),并可免费重新分发,只要其保持未修改且版权声明完整。插件本身的源代码可免费用于非商业用途。请在此处分享错误修复和改进。商业插件的包含需另行请求。

尽情享用!

历史

  • 2006 年 8 月 15 日:首次发布
  • 2006 年 8 月 20 日
    • 修复
      • 安装后首次启动不再出现错误消息(真是!)
      • 文件导入/导出的一些改进
      • 默认设置中添加了链接到 CP
  • 2006 年 8 月 27 日(版本 1.1)
    • 修复
      • 首次启动时出现错误消息(抱歉各位...现在应该真的解决了)
      • 正确的父级设置
      • 对话框的键盘快捷键
    • 新功能
      • 独立的程序/参数设置
  • 2007 年 12 月(版本 1.2)
    • 新功能
      • 支持构造函数重载
      • 更灵活的解析器。现在 // (bugz:765) 可以工作了,这曾让我抓狂!
      • 链接结束检测可单独配置为每个协议的“空格”/“默认”/“行其余部分”*
      • 对于每个协议,您可以设置“确认执行”以显示一个消息框,该消息框将在实际执行操作之前运行。如果您的操作会进行不可逆的更改(例如删除文件,哦!)建议使用此功能。
      • Shift-Click 跳过解析器,直接显示配置对话框
      • 一些用户界面小技巧和整体更好的外观
  • 2008 年 8 月(版本 1.3)
    • 修复
      • 修正了在使用链接表达式周围的引号时出现的 Obi Wan 错误
    • 特点
      • 允许使用正则表达式匹配链接表达式
      • 在运行链接(或失败)时添加了更好的诊断
      • 启用/禁用单个前缀的复选框
      • 展开 URL/可执行文件中的环境变量
      • 添加了“实用链接”
      • 对话框进行了一些改版
      • 支持 VS 2008(半测试...)

* 注意: 如果我不小心破坏了您现有的链接,请首先尝试更改该协议的配置。如果不起作用,请留言并提供协议前缀和相关注释行。

© . All rights reserved.