VS2017 -使用Marcos for Visual Studio插件快速为函数添加注释
从VS2010微软就不再支持Macros功能后,想要自己编写宏完成一些重复度极高的垃圾操作变得很不方便。例如为函数添加注释头,我们知道添加注释很重要,不管是自己维护还是给别人读,函数头带个注释都会使工作变得轻松起来。
而最近再编写代码的时候被添加注释的重复工作搞得很烦,很怀念VS2010的Macro功能,上网查了一查找到了一个VS插件:Marcos for Visual Studio。成功把Macros功能带回来了。
但是一进去插件却发现居然用的是Javascript,菜鸡没学过JS只能对着VB脚本慢慢改,参考了网上的大部分代码。最终改出一个能用的脚本。
请各路大神不要嘲笑。
VS版本:VS 2017 社区版
Marcos for Visual Studio下载链接:
Marcos for Visual Studio.
或者直接在扩展中搜索:Marcos
Macros for Visual Studio基本操作很简单,重复动作可以录制脚本然后分配快捷键播放。
下面直接上代码。
代码实现
/*获取系统时间*/
var date = new Date();
var year = date.getYear();
var month = date.getMonth() + 1;
var day = date.getDate();
var hours = date.getHours();
var minutes = date.getMinutes();
var funct;
var fName;
var fPara;
var Params = [];
var fretrun;
var flag1;
var flag2;
var flag3;
month = month < 10 ? ("0" + month) : ("" + month);
day = day < 10 ? ("0" + day) : ("" + day);
hours = hours < 10 ? ("0" + hours) : ("" + hours);
minutes = minutes < 10 ? ("0" + minutes) : ("" + minutes);
var doc = dte.ActiveDocument;
/*全选光标所在行*/
doc.Selection.SelectLine();
/*获取光标所在行的字符数据*/
funct = doc.Selection.Text;
flag1 = funct.indexOf("(");
flag2 = funct.indexOf(")");
flag3 = funct.indexOf(" ");
/*获取函数返回类型*/
fretrun = funct.substr(0, flag3);
/*获取函数参数内容*/
fpara = funct.substr(flag1 + 1, flag2-flag1-1 );
/*对参数内容进行分割,获得每个参数名 */
Params = fpara.split(',');
/*获得代码段的函数名*/
var codeElement = doc.Selection.ActivePoint.CodeElement(2);
if (codeElement != null)
{
fName = codeElement.Name;
}
/*在光标上一行输出内容*/
doc.Selection.LineUp();
/*第一项*/
doc.Selection.NewLine();
doc.Selection.Text = "//*******************************************************************";
/*第二项:函数名*/
doc.Selection.NewLine();
doc.Selection.Text = "//Fuction Name:" + fName;
/*第三项:函数描述*/
doc.Selection.NewLine();
doc.Selection.Text = "//Summary:";
/*第四项:参数表*/
doc.Selection.NewLine();
if (Params.length != 0) {
doc.Selection.Text = "//Params: " + Params[0]+"-";
for (var i = 1; i < Params.length; i++) {
doc.Selection.NewLine();
doc.Selection.Text = "// " + Params[i].replace(/^\s*/g, '')+"-";
}
}
else {
doc.Selection.Text = "//Params: None" ;
}
/*第五项:返回类型*/
doc.Selection.NewLine();
if (fretrun == "void") {
doc.Selection.Text = "//retrun:None";
}
else {
doc.Selection.Text = "//retrun type:" + fretrun;
}
/*第六项:作者*/
doc.Selection.NewLine();
doc.Selection.Text = "//Author:Name";
/*第七项:时间*/
doc.Selection.NewLine();
doc.Selection.Text = "//Date:" + year + "-" + month + "-" + day + " " + hours + ":" + minutes;
/*第八项*/
doc.Selection.NewLine();
doc.Selection.Text = "//********************************************************************"
doc.Selection.EndOfLine();
效果
给脚本分配快捷键之后,将光标停留在函数者定义所在行,按下快捷键即可快速创建注释模板,函数参数和函数名以及建立时间自动导入,只需手动输入函数描述和各个参数说明即可。