Source Insight 宏-单行注释

 

   以前用VS2005或是VS2008写代码,习惯了它的注释功能,使用Source Insight后发现没有提供相应的功能,只能自己写宏来实现,下面就是插入单行注释的宏脚本。

   功能:对选中的内容进行单行注释(//)

   使用:将下面宏脚本写到Source Insight的utils.em文件(Source Insight\Projects\Base下)或是新建一个*.em文件,并加入到Base项目中,通过Key Assignments指定快捷键或是Menu Assignments指定菜单项。

 

  目的:宏的编写纯粹是为了开发的便利,多行注释(/**/)宏,后续会继续做出来。

 

  写的比较乱,但是功能很好用,希望对大家有用,欢迎大家拍!

    

// 插入单行注释
macro Comments_UnComments()
{
	hwnd = GetCurrentWnd()
	hbuf = GetCurrentBuf()
	if(hbuf ==0)
		stop 
		
	// debugBuf只是为了调试
	// debugBuf = NewBuf("debugBuf") 
	// ClearBuf(debugBuf) 

	lnSelFirst = GetWndSelLnFirst(hwnd)		// 获得选中内容的第一行
	lnSelLast = GetWndSelLnLast(hwnd) 		// 获得选中内容的最后一行
		
	const_space = " "			// 空格
	const_comments = "//" 		// 单行注释符号
	isCancelComments = 0 
	
	// 跳过开始的空行,否则下面报错
	line_index = lnSelFirst 
	orig_text = GetBufLine(hbuf, line_index)	// 获得第一行的text
	while(strlen(orig_text) == 0)
	{
		line_index = line_index + 1
		orig_text = GetBufLine(hbuf, line_index)	// 获得第一行的text
	}
	
	// 根据第一行选中文本,确定是“注释”,还是“取消注释”
	// 判断是否以“//”开始,如果是则认为是“取消注释”,首先需要去掉空格
	subIndex = 0 		
	while(strmid(orig_text, subIndex, subIndex+1) == const_space) 
			subIndex = subIndex + 1 
	
	if (strmid(orig_text, subIndex, subIndex+2) == const_comments)	// 以“//”开头,取消注释
	{
		isCancelComments = 1 
	}

	// 遍历所有选中的行
	// line_index = lnSelFirst 	// 前面已经跳过开头的空行
	while(line_index <= lnSelLast)
	{
		orig_text = GetBufLine(hbuf, line_index)	// 获得以前的text
		if (strlen(orig_text) > 0)					// 如果是空行,则跳过
		{
			dest_text = "" 
			if(isCancelComments == 1)					// 取消注释
			{
				// 查找注释符“//”
				subIndex = 0 		
				while(strmid(orig_text, subIndex, subIndex+1) == const_space) 
						subIndex = subIndex + 1 
				
				if (strmid(orig_text, subIndex, subIndex+2) == const_comments)	// 以“//”开头,取消注释
				{
					dest_text = strmid(orig_text, subIndex+2, strlen(orig_text)) 
				}
			}
			else
			{
				dest_text = cat("//", orig_text) 			// 添加注释字符 “//”
			}

			PutBufLine (hbuf, line_index, dest_text)  	// 替换以前的text
		}
		
		line_index = line_index + 1  
	}
}

你可能感兴趣的:(Source Insight 宏-单行注释)