source insight一键添加注释

本文列举说明了在source insight中如何快捷地给我们的代码添加注释,包括文件头注释、函数定义注释、函数声明注释。

  • 首先在source insight安装目录下的C:\Source Insight 4.0\Projects\Base文件夹新建一个custom.em文件,用来编写我们自定义的函数。
    在这里插入图片描述

  • 然后将custom.em文件添加到工程目录中
    1.点击Project->Add and Remove Project Files…
    在这里插入图片描述
    2.在“File Name:”中将文件的路径粘贴然后回车,这样就进入到了Base文件夹,选中custom.em文件后点击Add,然后关闭窗口,至此就将custom.em文件添加到了我们的工程中了在这里插入图片描述

  • 接着就是开始编写函数代码
    1. 添加文件头注释

/*获取文件名称*/
macro GetFileName(pathName)
{
	nlength = strlen(pathName)
	i = nlength - 1
	name = ""
	while (i + 1)
	{
		ch = pathName[i]
		if ("\\" == "@ch@")
			break
		i = i - 1
	}
	i = i + 1
	while (i < nlength)
	{
		name = cat(name, pathName[i])
		i = i + 1
	}

	return name
}

macro CustomInsertFileHeader()
{
 	//get crrunt time
 	szTime = GetSysTime(1)
 	
    Day = ""
	len = strlen(szTime.Day)	
	if("@len@" == "1")
	{
		Day = cat(Day, 0)
	}
	Day = cat(Day, szTime.Day)
	
	Month = ""
	len = strlen(szTime.Month)
	if("@len@" == "1")
	{
		Month = cat(Month, 0)
	}
	Month = cat(Month, szTime.Month)

 	Year = szTime.Year
 	hbuf = GetCurrentBuf()//申请变量空间,Get a handle to the current file buffer and the name
 	PathName = GetBufName(hBuf)
 	FileName = GetFileName(PathName)
	FileNameLen = strlen(FileName)


 	hbuf = GetCurrentBuf()
	InsBufLine(hbuf, 0, "/********************************************************************************")
	InsBufLine(hbuf, 1, "  * Copyright (C), XXX Tech. Co., Ltd.")
 	InsBufLine(hbuf, 2, "********************************************************************************")
	InsBufLine(hbuf, 3, "  * DESCRIPTION")
	InsBufLine(hbuf, 4, "  * ")
 	InsBufLine(hbuf, 5, "********************************************************************************")
 	InsBufLine(hbuf, 6, "  * \@file        @FileName@")
 	InsBufLine(hbuf, 7, "  * \@version     v1.0.0")
 	InsBufLine(hbuf, 8, "  * \@author      wqc")
 	InsBufLine(hbuf, 9, "  * \@date        @Year@/@Month@/@Day@")
	InsBufLine(hbuf, 10, "********************************************************************************")
 	InsBufLine(hbuf, 11, "  * Modification History")
 	InsBufLine(hbuf, 12, "  * @Year@-@Month@-@Day@  WQC Created")
 	InsBufLine(hbuf, 13,"********************************************************************************/")
	InsBufLine(hbuf, 14,"")
	InsBufLine(hbuf, 15,"/********************************************************************************")
	InsBufLine(hbuf, 16,"//include")
	InsBufLine(hbuf, 17,"********************************************************************************/")

	FileName[FileNameLen-1] = h;
	InsBufLine(hbuf, 18,"#include \"@FileName@\"")
	InsBufLine(hbuf, 19,"")
	InsBufLine(hbuf, 20,"")
	InsBufLine(hbuf, 21,"")
}

效果图
在这里插入图片描述

2. 添加函数定义注释

macro CustomInsertFuncHeader()
{
    /* 获取光标所在行 */
    handle = GetCurrentWnd()
    process_line = GetWndSelLnFirst(handle)
		
    /* 获取函数所在行文本 */
    file_txt = GetCurrentBuf()
    process_txt = GetBufLine(file_txt,process_line + 1)
    process_txt_len = strlen(process_txt)

    if(process_txt == "")
    {
        stop
    }

    /* 获取函数名 */
    symbol_rec = GetSymbolLocationFromLn (handle, process_line + 1)
    if(symbol_rec == "")
    {
        stop
    }

    fuction_name = symbol_rec.Symbol

    /* 获取参数个数及参数名           */
    param_num = 0
    param_list = SymListNew()

    i=0,j=0
    while(i < process_txt_len)
    {
        if(process_txt[i] == "," || process_txt[i] == ")")
        {
            j = i
            while(j > 0)
            {
                if(process_txt[j] == " " || process_txt[j] == "*" || process_txt[j] == "&" ||
                   process_txt[j] == "(")
                {
                    symbol_rec.Symbol = strmid(process_txt,j+1,i)
                    SymListInsert(param_list,param_num,symbol_rec)
                    param_num = param_num + 1
                    break;
                }
                j = j - 1
            }
        }

        i = i + 1
    }

    /* 输出注释 */
    PutBufLine(handle,process_line + 0,"")
    InsBufLine(handle,process_line + 1,"/*******************************************************************************")

    var temp_buffer
    temp_buffer = cat("  * \@FunctionName: ",fuction_name)
    InsBufLine(handle,process_line + 2,temp_buffer)

    InsBufLine(handle,process_line + 3,"  * \@Author:       wqc")
    InsBufLine(handle,process_line + 4,"  * \@Description:  ")
    
    sys_time = GetSysTime(1)
    temp_buffer = "  * \@Date:\t\t   "
    temp_buffer = cat(temp_buffer,sys_time.Year)
    temp_buffer = cat(temp_buffer,"/")
    
    /* 月份和日期转为2位占位符 */
    len = strlen(sys_time.Month)
    if("@len@" == 1)
    {
	   temp_buffer = cat(temp_buffer,0)
    }
 	temp_buffer = cat(temp_buffer,sys_time.Month)
    temp_buffer = cat(temp_buffer,"/")
    
    len = strlen(sys_time.Day)
    if("@len@" == 1)
    {
	   temp_buffer = cat(temp_buffer,0)
    }
    temp_buffer = cat(temp_buffer,sys_time.Day)

    InsBufLine(handle,process_line + 5,temp_buffer)
    
    param_line = process_line + 6
    InsBufLine(handle,param_line,"*******************************************************************************/")


	temp_buffer = "  * \@ReturnVal:    "
    if(strmid(process_txt,0,6) == "static")
    {
	    if(strmid(process_txt,7,11) != "void")
	    {
			/* 定位返回值类型的位置并输出 */
			i = 7
			j = strlen(fuction_name)
	        while(i < process_txt_len)
	        {
				if(strmid(process_txt,i,i + j) == "@fuction_name@")
				{
					i = i - 1
					j = 7
					while(j < i)
					{
					  temp_buffer = cat(temp_buffer,process_txt[j])
					  j = j + 1
					}
					break
				}
				i = i + 1
	        }

			temp_buffer = cat(temp_buffer,"    [description]")

	        InsBufLine(handle,param_line,"  * !-->Value1     [description]")
	        InsBufLine(handle,param_line,"  * !-->Value2     [description]")
	    }
	    else
	    {
			temp_buffer = cat(temp_buffer,None)
	    }
	  }
	  else if(strmid(process_txt,0,4) != "void")
	  {
			/* 定位返回值类型的位置并输出 */
			i = 0
			j = strlen(fuction_name)
	        while(i < process_txt_len)
	        {
				if(strmid(process_txt,i,i + j) == "@fuction_name@")
				{
					i = i - 1
					j = 0
					while(j < i)
					{
					  temp_buffer = cat(temp_buffer,process_txt[j])
					  j = j + 1
					}
					break
				}
				i = i + 1
	        }
		  temp_buffer = cat(temp_buffer,"    [description]")

	        InsBufLine(handle,param_line,"  * !-->Value1     [description]")
	        InsBufLine(handle,param_line,"  * !-->Value2     [description]")
	  }
	  else
	  {
			temp_buffer = cat(temp_buffer,None)
	  }
	  InsBufLine(handle,param_line, temp_buffer)
	  
    while(param_num > 0)
    {
        param_num = param_num - 1
        symbol_rec = SymListItem(param_list,param_num)

        temp_buffer = "  * \@Param:        "
        
        if(symbol_rec.Symbol == "void")
        {
	        temp_buffer = cat(temp_buffer,None)
        }
        else
        {
	        temp_buffer = cat(temp_buffer,symbol_rec.Symbol)
	        temp_buffer = cat(temp_buffer,"             [description]")
        }

        temp_buffer_len = strlen(temp_buffer)
        temp_buffer_len = 38 - temp_buffer_len
        while(temp_buffer_len > 0)
        {
            temp_buffer_len = temp_buffer_len - 1
            temp_buffer = cat(temp_buffer," ")
        }

        InsBufLine(handle,param_line,temp_buffer)
    }

    SymListFree(param_list)
}

效果图
函数有形参有返回值

在这里插入图片描述
函数有形参无返回值
在这里插入图片描述
函数无形参有返回值在这里插入图片描述
函数无形参无返回值在这里插入图片描述
3. 添加函数声明注释

macro CustomInsertFuncHeaderDeclaration()
{
    var temp_buffer

    /* 获取光标所在行 */
    handle = GetCurrentWnd()
    process_line = GetWndSelLnFirst(handle)

    /* 获取函数所在行文本 */
    file_txt = GetCurrentBuf()
    process_txt = GetBufLine(file_txt,process_line + 1)
    process_txt_len = strlen(process_txt)

    if(process_txt == "")
    {
        stop
    }

    /* 获取函数名 */
    symbol_rec = GetSymbolLocationFromLn (handle, process_line + 1)
    if(symbol_rec == "")
    {
        stop
    }

    fuction_name = symbol_rec.Symbol

    /* 获取参数个数及参数名           */
    param_num = 0
    param_list = SymListNew()

    i=0,j=0
    while(i < process_txt_len)
    {
        if(process_txt[i] == "," || process_txt[i] == ")")
        {
            j = i
            while(j > 0)
            {
                if(process_txt[j] == " " || process_txt[j] == "*" || process_txt[j] == "&" ||
                   process_txt[j] == "(")
                {
                    symbol_rec.Symbol = strmid(process_txt,j+1,i)
                    SymListInsert(param_list,param_num,symbol_rec)
                    param_num = param_num + 1
                    break;
                }
                j = j - 1
            }
        }

        i = i + 1
    }

    /* 输出注释 */
    PutBufLine(handle,process_line++,"")
    InsBufLine(handle,process_line++,"/***")
    InsBufLine(handle,process_line++," * \@Brief  description")
    InsBufLine(handle,process_line++," * \@Param")
    
    while(param_num > 0)
    {
        param_num = param_num - 1
        symbol_rec = SymListItem(param_list,param_num)

        if(symbol_rec.Symbol == "void")
        {
		    PutBufLine(handle,process_line - 1," * \@Param     None")
		    break
        }
        else
        {
	        temp_buffer = " * !-->"
	        temp_buffer = cat(temp_buffer,symbol_rec.Symbol)
	        temp_buffer = cat(temp_buffer,"    [description]")
        }

        temp_buffer_len = strlen(temp_buffer)
        temp_buffer_len = 38 - temp_buffer_len
        while(temp_buffer_len > 0)
        {
            temp_buffer_len = temp_buffer_len - 1
            temp_buffer = cat(temp_buffer," ")
        }

        InsBufLine(handle,process_line++,temp_buffer)
    }
    SymListFree(param_list)

    if(strmid(process_txt,0,4) != "void")
    {
    	temp_buffer = " * \@ReturnVal "
    	i = 0
        while(i < process_txt_len)
        {
        	if(process_txt[i] != " ")
        	{
		       temp_buffer = cat(temp_buffer, process_txt[i++])
        	}
        	else
        	{
				break
        	}
        }

		InsBufLine(handle,process_line++, temp_buffer)
        InsBufLine(handle,process_line++," * !-->value1    [description]")
        InsBufLine(handle,process_line++," * !-->value2    [description]")
    }
    else
    {
		InsBufLine(handle,process_line++," * \@ReturnVal None")
    }

    sys_time = GetSysTime(1)
    temp_buffer = " * "
    temp_buffer = cat(temp_buffer,sys_time.Year)
    temp_buffer = cat(temp_buffer,"-")
    
    /* 月份和日期转为2位占位符 */
    len = strlen(sys_time.Month)
    if("@len@" == 1)
    {
	   temp_buffer = cat(temp_buffer,0)
    }
 	temp_buffer = cat(temp_buffer,sys_time.Month)
    temp_buffer = cat(temp_buffer,"-")
    
    len = strlen(sys_time.Day)
    if("@len@" == 1)
    {
	   temp_buffer = cat(temp_buffer,0)
    }
    temp_buffer = cat(temp_buffer,sys_time.Day)
    temp_buffer = cat(temp_buffer," WQC [初版作成]")

	InsBufLine(handle,process_line++," * \@History")
    InsBufLine(handle,process_line++,temp_buffer)
    InsBufLine(handle,process_line++," */")    
}

效果图
有形参有返回值
在这里插入图片描述
有形参无返回值在这里插入图片描述
无形参有返回值
在这里插入图片描述

无形参无返回值在这里插入图片描述

  • 最后为我们添加的自定义宏函数定义快捷键
    1.点击Options->Key Assignments…在这里插入图片描述
    2.在Command的文本框中输入macro,找到我们自定义的宏函数,点击Assign New Key…,然后键入你想设置的快捷键方式即可
    在这里插入图片描述
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值