首页 > 其他分享 >【Source Insight 快捷功能:多行注释和反注释、add、modify、delete、#if0_#endif】

【Source Insight 快捷功能:多行注释和反注释、add、modify、delete、#if0_#endif】

时间:2024-12-20 13:57:43浏览次数:6  
标签:lnLast if0 hwnd Insight 注释 lnFirst sel buf hbuf

Source Insight 快捷功能:多行注释和反注释、#if0_#endif、add、modify、delete

Source Insight (SI)快捷功能:

  1. 多行注释和反注释

  2. #if0_#endif

  3. add

  4. modify

  5. delete

第一步:

关闭所有SI project。然后点击 Project --> open project --> 选择Base,添加代码。
在这里插入图片描述

第二步

然后点击 Option --> Menu Assignments --> 找到新添加的名字,例Add_Comment,后点击选择Menu,如下图所示:
在这里插入图片描述

第三步:

最后再次选择打开项目,选择你之前建立的工程项目,添加完成如下图所示:在这里插入图片描述

下面是code源码

多行注释

在文件末尾添加如下代码

/*注释多行代码的函数*/
macro MultiLineComment()  
{  
    hwnd = GetCurrentWnd()  
    selection = GetWndSel(hwnd)  
    LnFirst = GetWndSelLnFirst(hwnd)      //取首行行号  
    LnLast = GetWndSelLnLast(hwnd)      //取末行行号  
    hbuf = GetCurrentBuf()  
   
    if(GetBufLine(hbuf, 0) == "//magic-number:tph85666031"){  
        stop  
    }  
   
    Ln = Lnfirst  
    buf = GetBufLine(hbuf, Ln)  
    len = strlen(buf)  
   
    while(Ln <= Lnlast) {  
        buf = GetBufLine(hbuf, Ln)  //取Ln对应的行  
        if(buf == ""){                    //跳过空行  
            Ln = Ln + 1  
            continue  
        }  
   
        if(StrMid(buf, 0, 1) == "/") {       //需要取消注释,防止只有单字符的行  
            if(StrMid(buf, 1, 2) == "/"){  
                PutBufLine(hbuf, Ln, StrMid(buf, 2, Strlen(buf)))  
            }  
        }  
   
        if(StrMid(buf,0,1) != "/"){          //需要添加注释  
            PutBufLine(hbuf, Ln, Cat("//", buf))  
        }  
        Ln = Ln + 1  
    }  
   
    SetWndSel(hwnd, selection)  
}  

#if0_#endif

//#if0_#endif
macro Add_if_0_endif_Comment()
{
    hwnd=GetCurrentWnd()  
    sel=GetWndSel(hwnd)  
    lnFirst=GetWndSelLnFirst(hwnd)  
    lnLast=GetWndSelLnLast(hwnd)  
    hbuf=GetCurrentBuf()  
    
    if(LnFirst == 0) {  
            szIfStart = ""  
    }else{  
            szIfStart = GetBufLine(hbuf, LnFirst - 1)  
    }  
    szIfEnd = GetBufLine(hbuf, lnLast + 1)  
    if(szIfStart == "#if 0" && szIfEnd == "#endif") {  
            DelBufLine(hbuf, lnLast + 1)  
            DelBufLine(hbuf, lnFirst - 1)  
            sel.lnFirst = sel.lnFirst - 1  
            sel.lnLast = sel.lnLast - 1
    }else{  
            InsBufLine(hbuf, lnFirst, "#if 0")  
            InsBufLine(hbuf, lnLast + 2, "#endif")  
            sel.lnFirst = sel.lnFirst + 1  
            sel.lnLast = sel.lnLast + 1  
    }  

    SetWndSel( hwnd, sel )  
}

add

//add
macro Add_Comment()  
{  
 	hwnd=GetCurrentWnd()  
    sel=GetWndSel(hwnd)  
    lnFirst=GetWndSelLnFirst(hwnd)  
    lnLast=GetWndSelLnLast(hwnd)  
    hbuf=GetCurrentBuf()  
    
	if(lnFirst != lnLast ) //多行add
	{
	    if(LnFirst == 0) 
	    {  
	            szIfStart = ""  
	    }
	    else
	    {  
	            szIfStart = GetBufLine(hbuf, LnFirst - 1)  
	    }  
	    szIfEnd = GetBufLine(hbuf, lnLast + 1)  
	    if(szIfStart == "//add_start_msw_000" && szIfEnd == "//add_end_msw_000")
	    {  
	            DelBufLine(hbuf, lnLast + 1)  
	            DelBufLine(hbuf, lnFirst - 1)  
	            sel.lnFirst = sel.lnFirst - 1  
	            sel.lnLast = sel.lnLast - 1
	    }
	    else
	    {  
	            InsBufLine(hbuf, lnFirst, "//add_start_msw_000")  
	            InsBufLine(hbuf, lnLast + 2, "//add_end_msw_000")  
	            sel.lnFirst = sel.lnFirst + 1  
	            sel.lnLast = sel.lnLast + 1  
	    }  
	}
	else  //单行add
	{
	    buf = GetBufLine(hbuf, lnFirst)  
	              
        if(StrMid(buf,0,1) != "/")         //需要添加注释  
        { 
			PutBufLine(hbuf, lnFirst, Cat(buf,"//add_msw_000")) //单行add
        }  
	}
	
    SetWndSel( hwnd, sel )  

}  

modify

//modify 
macro Modify_Comment()
{
    hwnd=GetCurrentWnd()  
    sel=GetWndSel(hwnd)  
    lnFirst=GetWndSelLnFirst(hwnd)  
    lnLast=GetWndSelLnLast(hwnd)  
    hbuf=GetCurrentBuf()  
    
	if(lnFirst != lnLast ) //多行修改
	{
	    if(LnFirst == 0) 
	    {  
	            szIfStart = ""  
	    }
	    else
	    {  
	            szIfStart = GetBufLine(hbuf, LnFirst - 1)  
	    }  
	    szIfEnd = GetBufLine(hbuf, lnLast + 1)  
	    if(szIfStart == "//modify_start_msw_000" && szIfEnd == "//modify_end_msw_000")
	    {  
	            DelBufLine(hbuf, lnLast + 1)  
	            DelBufLine(hbuf, lnFirst - 1)  
	            sel.lnFirst = sel.lnFirst - 1  
	            sel.lnLast = sel.lnLast - 1
	            flag = 1
	    }
	    else
	    {  
	            InsBufLine(hbuf, lnFirst, "//modify_start_msw_000")              
	            InsBufLine(hbuf, lnLast + 2, "//modify_end_msw_000")  
	            sel.lnFirst = sel.lnFirst + 1  
	            sel.lnLast = sel.lnLast + 1  
	            flag = 0

	    }  
	}
	else  									//单行修改
	{
	    buf = GetBufLine(hbuf, lnFirst)  
	              
        if(StrMid(buf,0,1) != "/")         //需要添加注释  
        { 
			PutBufLine(hbuf, lnFirst, Cat(buf,"//modify_msw_000")) //单行修改 
        }  
	}
	
    SetWndSel( hwnd, sel )   
}

delete

//Delete
macro Delete_Comment()
{
    hwnd=GetCurrentWnd()  
    sel=GetWndSel(hwnd)  
    lnFirst=GetWndSelLnFirst(hwnd)  
    lnLast=GetWndSelLnLast(hwnd)  
    hbuf=GetCurrentBuf()  

    if(LnFirst == 0) 
    {  
            szIfStart = ""  
    }
    else
    {  
            szIfStart = GetBufLine(hbuf, LnFirst - 1)  
    }  
    szIfEnd = GetBufLine(hbuf, lnLast + 1)  
    if(szIfStart == "//delete_start_msw_000" && szIfEnd == "//delete_end_msw_000")
    {  
            DelBufLine(hbuf, lnLast + 1)  
            DelBufLine(hbuf, lnFirst - 1)  
            sel.lnFirst = sel.lnFirst - 1  
            sel.lnLast = sel.lnLast - 1
            flag = 1
    }
    else
    {  
            InsBufLine(hbuf, lnFirst, "//delete_start_msw_000")  
            
            InsBufLine(hbuf, lnLast + 2, "//delete_end_msw_000")  
            sel.lnFirst = sel.lnFirst + 1  
            sel.lnLast = sel.lnLast + 1  
            flag = 0

    }  

	Ln = lnFirst  
    buf = GetBufLine(hbuf, Ln)  
    len = strlen(buf)  
   
    while(Ln <=  (lnLast+1) )
    {  
        buf = GetBufLine(hbuf, Ln)  //取Ln对应的行  
        if(buf == ""){                    //跳过空行  
            Ln = Ln + 1  
            continue  
        }  
        
        if(StrMid(buf,0,1) != "/")         //需要添加注释  
        { 
			if(flag == 0) PutBufLine(hbuf, Ln, Cat("//",buf)) //delete_code 
        }  
        Ln = Ln + 1  
    }  

    SetWndSel( hwnd, sel )  
}

有更好的功能欢迎留言。

标签:lnLast,if0,hwnd,Insight,注释,lnFirst,sel,buf,hbuf
From: https://blog.csdn.net/eric43019/article/details/136257857

相关文章

  • matlab中绘制多坐标轴、多个y轴的全部代码以及详细注释
    在matlab中绘制多坐标轴、多个y轴,详细注释以需要绘制4个y轴为例,其中一条为主坐标系左边界、一条为主坐标系右边界,剩余两条在最右侧按一定间隔摆放。绘制这种形式的坐标系实际上是绘制了四个坐标系,只是右侧三个y轴的坐标系除了y轴以外的其他部分,都变成了透明。下面是原始......
  • 【用Rust写CAD】第三章 第一个Rust程序 第二节 Rust注释
    注释用于解释代码的作用和目的,帮助开发者理解代码的行为,编译器在编译时会忽略它们。通过编写清晰和详细的文档注释,可以使代码更易于理解,并帮助其他开发者更好地利用你的代码或库。Rust提供了三种主要的注释方式:单行注释、多行注释和文档注释。‌文章目录1、单行注释2、......
  • Maven 项目管理:附录与注释详解
    好的,以下是附录部分的完整内容,并附上详细的注释说明:附一:完整的pom.xml配置<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"......
  • HarmonyOS Next 如何优雅的编写注释
    HarmonyOSNext如何优雅的编写注释程序员箴言我最讨厌世界上的两种人:第一种是不写注释的人第二种是让我写注释的人前言随着HarmonyOSNEXT的发展加快,不少的公司已经陆续加大了资源来开发软件项目。那么伴随项目的发展,项目团队也需要按照一定的规范来编写项目注释或者......
  • Ruby 注释
    注释是在运行时会被忽略的Ruby代码内的注释行。单行注释以#字符开始,直到该行结束,如下所示:实例#!/usr/bin/ruby-w#这是一个单行注释。puts"Hello,Ruby!"当执行时,上面的程序会产生以下结果:Hello,Ruby!Ruby多行注释您可以使用 =begin 和 =end 语法注释多行......
  • Java 文档注释
    Java支持三种注释方式:单行注释多行注释文档注释前两种分别是 // 和 /**/,第三种被称作文档注释,它以 /** 开始,以 */ 结束。前两种注释内容可以参考:Java注释文档注释允许你在程序中嵌入关于程序的信息。你可以使用javadoc工具软件来生成信息,并输出到HTML文件中......
  • matplotlib注释指南
    本笔记参考:matplotlibPlottingCookbookbyAlexandreDevertPlottypes—Matplotlib3.9.3documentation(尝试记录并不断完善matplotlib的使用方法笔记,为后面使用提供参考。)标题标题可以使用plt.title()实现,标题支持latex公式,不过需要安装late(完整的latex安装超过7......
  • Sass的注释和css注释之间有什么区别?
    在前端开发中,Sass(SyntacticallyAwesomeStylesheets)是一种CSS预处理器,它扩展了CSS的功能,提供了更多的特性和灵活性。关于Sass的注释和CSS注释之间的区别,可以从以下几个方面进行阐述:一、Sass注释Sass支持两种类型的注释:单行或多行静默注释:这些注释在Sass编译成CSS时不会被包含......
  • idea继承代码注释翻译插件
    在读开源代码时,英文注释看起来比较吃力,于是安装一个翻译插件第一步:安装TranslateHelper插件配置IDEA->Preferences->Plugins,安装TranslateHelper这个插件 第二步:在百度翻译平台申请appId和secretKey地址https://fanyi-api.baidu.com/manage/developer可以免费申请第......
  • 线索二叉树——c语言详细注释版
        线索二叉树是一种特殊的二叉树,主要用于高效地实现树的遍历。与普通的二叉树相比,线索二叉树通过在节点中增加“线索”指针来简化遍历过程。值得注意的是,线索化二叉树的过程仍然需要使用递归,而后续遍历效率才会提高,适合一次构造,多次调用的场景。前言一般的二叉树在......