source insight 宏 添加函数注释

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

无意中发现source insight有宏信息,具体的编码规则可以在 source insight下面按 F1,查看Macro Language Guide进行参考,查阅

此版本是基于source insight内部的base工程,也参考了网上的资料

主要就是解析字符串,使用了 strmid()  strtrunc()函数来裁剪字符串

在此记录一下...

/*-------------------------------------------------------------------------
I N S E R T   H E A D E R


Inserts a comment header block at the top of the current function. 
This actually works on any type of symbol, not just functions.


To use this, define an environment variable "MYNAME" and set it
to your email name.  eg. set MYNAME=raygr
-------------------------------------------------------------------------*/
macro AddFuncHeader()
{
    hSysBuf = OpenBuf( "system.ini" )   // 打开当前工程下面的配置文件,有版本号及作者的信息
    if( hSysBuf == hNil ){
        return 1
    }

    // 一行行读取配置文件信息
    szMyName  = GetBufLine( hSysBuf, 0 ) // 著者
    szVersion = GetBufLine( hSysBuf, 1 ) // 软件版本号

    SysTime = GetSysTime( 0 )
    year  = SysTime.Year
    month = SysTime.Month
    day   = SysTime.Day
    hour  = SysTime.Hour + 8
    minute= SysTime.Minute
    
// Get a handle to the current file buffer and the name
// and location of the current symbol where the cursor is.
hbuf = GetCurrentBuf()


if( hbuf == hNil ){
   return 1
}


ln = GetBufLnCur( hbuf )


    totalLine = 0
    tmpLine = ln +1
    
    i = 0;
    find_flag = 0  // 该表示用来表示是否找到 "{",从而判断是否可以开始解析字符


    /*
     * 分两步来添加函数的注释
     * 1. 获取函数名字
     * 2. 获取函数参数
    */


    funcContent = " "  // 初始化函数的所有注释信息为空
    
    while ( totalLine < 20 )  // 防止函数名跨越的行数太长
    {
        // 1. 逐行获取数据
tmpLineContent = GetBufLine( hbuf, tmpLine )
tmpLineLen = GetBufLineLength( hbuf, tmpLine)
tmpIndex = 0
// 遍历 该句来判断是否有 "{"存在,有则证明函数头已包含在缓冲数据中
while ( tmpIndex < tmpLineLen )
{
if ( "{" == tmpLineContent[tmpIndex] )
{
   find_flag = 1;
break;
}
tmpIndex = tmpIndex + 1
}
        // 说明该行函数仍未结束,添加改行信息到总的信息后面
funcContent = cat ( funcContent, tmpLineContent )


if ( find_flag == 1 )
{
break;
}


totalLine = totalLine + 1
tmpLine = tmpLine +1
    }
    // InsBufLine( hbuf, ln ++, "/**\@all      @funcContent@" )


    // 找到所有需要的字符信息之后,开始找出函数名出来,只需要从 "("处断开即可
    indexLeft = 0;
    while ( (funcContent[indexLeft]) != "(" )
    {
        indexLeft = indexLeft +1
    }
    funName =  strtrunc(funcContent, indexLeft)


    InsBufLine( hbuf, ln ++, "/* Function      @funName@()" )
    InsBufLine( hbuf, ln ++, " * Description    " )
    
    //InsBufLine( hbuf, ln ++, "/**\@param      @funcContent@" )
    
    // 再找到右括号 ")"的位置
    indexRight = 0
    while ( (funcContent[indexRight]) != ")" )
    {
        indexRight = indexRight + 1
    }


    // 接下去解析函数内部的参数
    index = 0
    paramEnd = 0
    paramStr = " "
    index = indexLeft + 1   // 跳过 左括号 "("
    while ( index <= indexRight )
    {
        paramEnd = index
        if ( (funcContent[index] == ",") || (funcContent[index] == ")") )  // 说明一个参数结束
        {
        
            
            // 再往前找到的字符为 空格" ","*" , "&",则说明是参数的起始位置
            index = index -1
            while ( index > indexLeft )
           {
           if ( ( funcContent[index] == " " ) 
                || ( funcContent[index] == "*" )
                || ( funcContent[index] == "&" ) 
                 )
           {
                paramStr = strmid(funcContent, index+1, paramEnd)
                         InsBufLine( hbuf, ln ++, " * param[in]      @paramStr@    :" )
                         break;
           }
                    else
                    {
                         index = index -1
                    }
            }
            
            
        }
        index = paramEnd + 1
    }


    InsBufLine( hbuf, ln++, " * return         " )
    InsBufLine( hbuf, ln++, " * modify         @szMyName@  @szVersion@  @year@-@month@-@day@ @hour@:@minute@       " )
        // 注释结束
    InsBufLine( hbuf, ln++, " */" )


// put the insertion point inside the header comment
SetBufIns( hbuf, ln, 10 )
CloseBuf( hSysBuf )

}


通过类似的方式还可以添加文件头,结构体等注释,提高代码的可读性...


SourceInsight自定义实现C/C++风格注释以及函数注释插入 SourceInsight自定义实现C/C++风格注释以及函数注释插入。 阅读详情

相关推荐

source insight添加、取消多行屏蔽

source insight添加、取消多行屏蔽

小菜的笔记 1万+

source insight 多行注释,取消注释函数注释模板

自己写的macro CodeCommentsEnter(),CodeCommentsCancel(),macro CodeHeadAdd(),和UE特殊编辑下面的添加注释、取消注释相同,最后一个是函数名的注释模板。 使用方法:直接覆盖BASE工程、安装路径下面的文件即可。 添加:选项--菜单分配--命令(选择相应的) 菜单(选择添加的位置) ,确定后就可以在菜单栏中使用了。

Source Insight添加TODO、FIXME等注释标签的高亮

在程序中加入TODO、FIXME等特殊的注释标签有助于提高代码编写效率,特别是多人协作的情况下。一般用法如下: TODO: + 说明: 如果代码中有该标识,说明在标识处有功能代码待编写,待实现的功能在说明中会简略说明。 FIXME: + 说明: 如果代码中有该标识,说明标识处代码需要修正,甚至代码是错误的,不能工作,需要修复,如何修正会在说明中简略说明。 XXX:

Azure的博客 5410

开发环境 之十六 SourceInsight 4.0 常用使用、编辑、修改详解(附最新完善版本的

简介   SourceInsight 作为一款经典的代码查看工具,小巧、强大,各种代码通吃!从2018年开始,更新到了4.x版本。相对于之前死都不更新的3.5版本,4.x的添加了许多更为好用的功能!以下文章均是以最新版本的 SourceInsight 4 为例来说明的。   SourceInsight 3.5也好,还是最新的4.x版本,都支持强大的编制。官网给出了不少例子:https://w...

技术干货 1万+

Source Insight快捷键设置,功能函数添加

Source Insight快捷键设置

qiushui984620的博客 3997

[SourceInsight].SI自动添加函数注释

FYI 转载于:https://www.cnblogs.com/aaronLinux/p/11109235.html

anxuan3201的博客 926

source insight 添加函数注释

source insight 的工程文件中,即以em为后缀的文件中增加如下: macro InsertHeader() { /* 获取光标所在行 */ handle = GetCurrentWnd() process_line = GetWndSelLnFirst(handle) /* 获取函数所在行文本 */ file_txt = GetCurrentBuf() process_txt = GetBufLine(file_txt,proce.

Timor_2的专栏 1008

Source Insight 4.0 使用添加文件头信息、函数头信息、注释代码块

/* * 文件名:flinger.em * * 步骤: * 1. 复制到Base项目文件夹,如;C:\Users\xxx\Documents\Source Insight 4.0\Projects\Base * 2. Project -> Open Project,打开Base项目; * 3. 将复制过去的flinger.em添加入Base项目; * 4. 重启SourceI...

cfl927096306的博客 4582

使用source insight 来插入doxygen可处理的注释

文件如下。 设置快捷键后,双击高亮要注释的内容,使用快捷键触发即可。 可自动识别 普通:在头部添加 :在末尾添加注释 变量:在末尾添加 函数:在头部添加,并自动识别函数个数 类:在头部添加 代码如下:保存为m.em即可加入source insight macro insert_func_header_...

mypyg的专栏 560

source insight 4 utils.em 工具

因为不是提交到工作库上面的代码,只是作为工具自己用的,平时用的时候没什么影响,所以代码格式上不是很好看,效率也没有优化,不过亲测可用,分享一下 // 插入函数注释头,格式如下 /****************************************************************************** 函 数 名: FuncName 功能描述: 输入参数: arg1 [description] arg2 [description]

weixin_41920994的博客 796

source insight添加doxygen注释风格

目前项目组对于注释的要求比较高,导致我添加注释的时候非常烦,大量的重复劳动确实很烦人,自己也一直打算给source insight添加类似的功能,可能是本人比较懒,一直不想做这样的工作。不过,既然可以一劳永逸,何乐而不为呢。     后来发现有个叫doxygen的工具,看了介绍,觉得还比较实用,所以就在网上找了些资料,不过他们给SI添加的那些方法好像不能满足我的要求,所以还是自己动手吧。以下是我

dayong419的专栏 6162

Source Insight的应用技巧、功能【转】

目录版本记录... 2目录... 31 简介... 52 搭建我们的SI环境... 52.1 搭建步骤... 52.2 说明... 63 应用技巧... 63.1 初级应用技巧... 63.1.1 解决字体不等宽与对齐的问题... 63.1.2 把TAB变成4个空格... 73.1.3 更改背景色... 73.1.4 自动对齐设置: 73.1.5 显示坐标... 73.1.6 创建快捷键快乐工作.

ywxiao66的专栏 837

利用Source Insight语言脚本添加注释

利用Source Insight语言脚本添加注释 一,前言     总所周知,在Windows开发环境中,一个几百兆C语言工程代码中,最好用的编辑工具当然就是Source Insight了。Source Insight(目前大多使用的版本为3.5)的Macro Language提供的API非常强大,其实我们可以利用这些API编写一些脚本,通过映射快捷键来达到高效而规范开发的目的。

7532

source insight4.0多行注释

source insight4.0多行注释 在使用source insight编辑代码时,对于多行注释特么麻烦,今天对此百度搜索source insight多行注释方法,如下。 实现多行注释通过source insigh添加与快捷键实现,一般快捷键为ctrl+/实现设置。 首先打开source insight 工程中base工程 打开utils.em 在代码最后添加如下代码(百度搜索,已测试...

qq_38240926的博客 5769

Source Insight 注释快捷键的添加

 在使用SI过程中,我根据自己的使用习惯修改了它的默认快捷键,并且在配置文件中添加了一些人性化功能,下面一一介绍:  修改快捷键:Options->Key Assignments... 1.main window:Esc       2.Hight light:Middle Mouse 3.Go Back:Alt+z              4.Go Forward:Alt+x  

wyq393562305的专栏 780

Source Insight中Quicker.em的使用方法

1、安装方法 Source Insight有很多可以用,这里介绍的是quicker.em这个,它是华为的一个员工写的,很实用。 1、安装quicker.em 一、打开base这个工程Project->Open Project,选择base工程,即可打开; 二、将文件quicker.em添加到该base工程中; 三、设置的快捷方式:Options->Key Assignments,找到Marco:AutoExpand,添加快捷键即可,一般推介用Ctrl+Enter组合键。 .

LeeAmySnail----专栏 3384

source insight 多行注释

在网上也有类似的,但效果都不是我想要的,都只是在首列加个// ,而没有缩进,于是自己动手写个一个多行注释 macro MultiLineComment() { /* 获取选择区收尾行 */ handle = GetCurrentWnd() first_line = GetWndSelLnFirst(handle) last_line = GetWn

fanyusen的博客 575

Source insight 批量注释方法

在使用Source insight进行开发时,有时需要多行注释功能。但source insight并没有这样的功能,需要额外的来实现。

Dzp1994的博客 1193
上一篇: ls -l 文件/目录
下一篇: 初步认识ceph文件系统d
vanpire110
博客等级 码龄17年 20粉丝 15原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值