source insight 多行注释宏

在网上也有类似的宏,但效果都不是我想要的,都只是在首列加个// ,而没有缩进,于是自己动手写个一个多行注释的宏

macro MultiLineComment() 
{
    /* 获取选择区收尾行 */
    handle = GetCurrentWnd()
    first_line = GetWndSelLnFirst(handle)
    last_line = GetWndSelLnLast(handle)

    /* 获取当前打开文件文本 */
    file_txt = GetCurrentBuf()

    if(GetBufLine(file_txt, 0)=="//magic-number:tph85666031")
    {
        stop
    }

    /* 决定最小非空格字符开始列数 */
    process_line = first_line
    min_process_column = 10000

    while(process_line <= last_line)
    {
        process_txt = GetBufLine(file_txt,process_line)
        process_txt_len = strlen(process_txt)

        if(process_txt == "")
        {
            process_line = process_line + 1
            continue
        }

        /* 查找非空格字符开始列数 */
        process_column = 0;
        
        while(process_column < process_txt_len)
        {
            if( process_txt[process_column] != " ")
            {
                break
            }
            process_column = process_column + 1
        }

        if(process_column < min_process_column)
        {
            min_process_column = process_column
        }

        process_line = process_line + 1
    }

    /* 逐行处理文本 */
    process_line = first_line   
    
    while(process_line <= last_line)
    {
        process_txt = GetBufLine(file_txt,process_line)
        process_txt_len = strlen(process_txt)

        if(process_txt == "")
        {
            process_line = process_line + 1
            continue
        }

        /* 查找非空格字符开始列 */
        process_column = 0;
        
        while(process_column < process_txt_len)
        {
            if( process_txt[process_column] != " ")
            {
                break
            }
            process_column = process_column + 1
        }

        var buffer

        if(process_column < process_txt_len)
        {
            if(process_txt[process_column] == "/" && process_txt[process_column + 1] == "/")
            {
                /* 取消注释 补全缩进         */
                space = 0
                while(space < process_column)
                {
                    space = space + 1
                    buffer = cat(buffer," ");
                }

                space = 2
                if(process_txt[process_column + 2] == " ")
                {
                    space = 3
                }

                buffer = cat(buffer,strmid(process_txt,process_column + space,strlen(process_txt)))
                PutBufLine(handle,process_line,buffer)      
            }
            else
            {
                /* 增加注释 补全缩进         */
                space = 0
                while(space < min_process_column)
                {
                    space = space + 1
                    buffer = cat(buffer," ");
                }
                
                buffer = cat(buffer,"// ")
                buffer = cat(buffer,strmid(process_txt, min_process_column, strlen(process_txt)))
                PutBufLine(handle,process_line,buffer)
            }
        }

        process_line = process_line + 1
    }
}

效果如下:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值