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

Visual C++ 6 的自定义自动完成

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.68/5 (17投票s)

2004年3月12日

5分钟阅读

viewsIcon

72687

downloadIcon

1352

一个可以为 Developer Studio IDE 中的代码/注释块启用自定义自动完成功能的插件。

Sample Image - AutoComplete.jpg

左键单击 gadget 并拖动以移动它。左键单击 gadget 的右下角并拖动以调整其大小。右键单击 gadget 以访问其属性。

这个插件背后的理念是,作为程序员,我们一遍又一遍地做着相同的事情,比如编写“if else”或“try catch”块。

这个插件的主要目标是让我们从这些繁琐的任务中解脱出来,专注于真正的编程挑战。使用这个插件,您将能够自己决定想要快速创建哪种代码块,以及激活每个块的快捷方式。

描述

插件的工作方式非常简单

您所要做的就是决定您希望快速创建的代码块,例如:

if()

{

}

然后,决定需要输入什么代码才能在屏幕上显示该代码块,我决定使用“if”(不出所料)。输入特定代码后,您只需点击指定的工具栏按钮,或者您为其选择的用户键盘快捷键(首选方式)。

代码块写入屏幕后,您仍然需要使用鼠标导航到要修改的第一个位置——在本例中是“()”区域。为了节省这项“繁重”的工作,该插件提供了选项,让我们决定光标将在代码块之后去往何处。

只需在指定区域写下:““@SELECTION@” ”,当代码生成时,该区域将被选中。您只需写下您的代码。

模板将如下所示:

if(@SELECTION@)

{

}

它是如何工作的?

模板保存在一个名为 AutoCompleteINI.xml 的 XML 文件中。该文件存在于 binary.zip 和 Custom_Auto_Complete_src.zip 中。它包含以下元素:

CurrentUser

此标签将包含当前正在处理代码的用户——您可以使用插件中包含的配置表单来编辑用户名。

CodeTemplateTags

可以插入到代码块中的标签,插件将在代码生成过程中自动更改它们,例如:[VAR:USERNAME] 标签将被替换为 CurrentUser\UserName

CodeTemplates

此标签将包含当前机器上存在的所有代码块(称为模板)。

Template – 此标签包含特定代码块的信息。每个代码块(模板)都有一个唯一标识该代码块的 TName 属性,以及本身分为几行的代码块。

注意:为了从 XML 文件读取信息,我添加了一个自定义的 ActiveX DLL 来封装标准的 XML 库。此 ActiveX 的代码未在此处添加,也不是必需的。我相信很多人都能比我更好地读取 XML,但它仍然完成了工作。

这是此插件中 XML 读取的代码示例:

' Loads all application 

information from XML file

Public Function intialize() As Boolean

    Dim sIniFile As String

    Dim xmlFile As New CXMLParser

    Dim xmlElem As CXMLElement



    sIniFile = gApp.Path & "\AutoCompleteINI.xml"

    Call xmlFile.Init(sIniFile)

    ' Extract the username from the XML

    m_sUserName = xmlFile.getElementPropertyValue("CPPAddIn\CurrentUser", 
cUserNameProp)

    ' Initialize the code templates (the custom blocks for auto completion)

    Call initCodeTemplates(xmlFile)

    ' Initialize the Tags

    Call initTags(xmlFile)

    logIt "intialize", "Initialization Complete Successfuly"

End Function

当我们为特定模板编写关键字时,代码会提取我们输入的最后一个单词,并在集合中搜索该模板。

我们不必输入要生成的模板的完整名称,我们可以输入单词的开头,插件将打开另一个窗口显示所有现有模板,并选择最接近的匹配项。现在我们只需按 Enter 键或双击所需的模板。

添加您自己的代码/注释块

在我发布文章时,我忘了添加这个重要部分,现在是时候了。

要添加您自己的模板,您可以自己编辑 AutoCompleteINI.xml 文件。这很简单,但不是这个插件的目标。

为了编辑和添加新代码块(模板),您可以使用插件的第二个按钮。您可以在文章顶部看到配置屏幕的截图。要添加新的代码块以便快速访问,只需右键单击左侧的树,然后选择“添加模板”。您将收到提示输入快捷键,在按下 OK 后,您将在树的底部看到新条目,只需左键单击它,然后在右下角的文本区域中编写您的代码块。

您也可以通过相同的上下文菜单删除您的模板。

使用加载项

要打开 VB 项目,您需要注册 XMLParser.dll 文件。我包含了一个 reg.bat 文件来帮助您无需输入即可完成此操作。

要安装二进制文件并将其用于 Visual C++ 6,请阅读两个 zip 文件中添加的 Readme.txt 文件。

该代码仅在 Windows2000/XP 下进行了测试,它可能在 Windows 98 下运行,但谁知道呢……

目前的最后的话

这个插件是 MSDev 大型套件的一部分。我为我的公司编写了它,并得到了一些好评。

我决定发布这部分,因为这是我提交的第一篇文章,我希望在收到有关我在这小部分中遇到的所有错误以及改进建议的电子邮件后,我将能够发布其余代码供大家使用。

我使用 VB,尽管我是一名 C++ 程序员,因为用它编写简单的插件非常容易。在 C++ 中,对于这类应用程序来说,开销太大了。

即将发布

  • 包含成员、方法、基类、命名空间、运算符等的类向导。
  • 一个捕获所有 //TODO 并允许用户将其作为任务发送到 Outlook 的工具。
© . All rights reserved.