1. 程式人生 > >17.2 SourceInsight批量註釋

17.2 SourceInsight批量註釋

ins 需要 () pen 自己的 ifs bsp gic cal

將下面的代碼保存為codecomm.em並添加到工程,在Options->Menu Assignments中就可以看到這個宏macro CodeComments,給這個宏添加熱鍵.

執行一次Ctrl+q,就會把選中的代碼用//註釋掉,再執行一次,又會把//取消掉。

macro CodeComments(){//多行註釋
 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 ) }

在使用SourceInsight過程中,根據自己的使用習慣修改它的默認快捷鍵,並且在配置文件中添加了一些人性化功能:

修改快捷鍵:Options->Key Assignments...

1.main window:Esc 2.Hight light:Middle Mouse

3.Go Back:Alt+z 4.Go Forward:Alt+x

5.Caller:Alt+c 6.Reference:Alt+r

7.Previous Link:Alt+a 8.Next Link:Alt+s

9.First Link:Alt+d

10.Go Line:Alt+g 11.Select Line:Alt+l

12.Symbol Win:Alt+q 13.Activate SW:Alt+w

14.Projcet Win:Alt+[ 15.Activate PW:Alt+]

16.Contex Win:Alt+, 17.Activate CW:Alt+.

18.Relation Win:Alt+; 19.Activate RW:Alt+‘

20.Select All:Ctrl+a 21.Save All:Ctrl+Shift+a

22.Browse Project Symbols:Alt+b

添加一些配置文件宏,比如:註釋掉代碼:單行註釋、多行註釋,將選中內容註釋掉;在一行代碼的前、後添加註釋性文字等。

打開Projcet->Open project,選擇base,可以看到utils.em文件,將下列宏添加到該文件中,並在其他工程裏加入該文件,

在上面介紹的快捷鍵添加方式裏找到該宏並自定義快捷鍵。

單行、多行註釋:

[plain] view plaincopy
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)  }  

將上面的代碼保存到utils.em文件,打開source insight,將該文件添加到工程中,然後在Options->Key Assignments中你就可以看到這個宏了,宏的名字是MultiLineComments,然後我們為它分配快捷鍵“Ctrl + /”,然後就可以了。

這是一份添加“#ifdef 0”和“#endif”的宏代碼,定義快捷鍵為Ctrl+#:

[plain] view plaincopy
macro AddMacroComment()  
{  
    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 )  
}  

這份宏的代碼可以把光標所在的行註釋掉,定義快捷鍵為Ctrl+*:

[plain] view plaincopy
macro CommentSingleLine()  
{  
    hbuf = GetCurrentBuf()  
    ln = GetBufLnCur(hbuf)  
    str = GetBufLine (hbuf, ln)  
    str = cat("/*",str)  
    str = cat(str,"*/")  
    PutBufLine (hbuf, ln, str)  
}  
將一行中鼠標選中部分註釋掉,定義快捷鍵為Ctrl+shift+*:
[plain] view plaincopy
macro CommentSelStr()  
{  
    hbuf = GetCurrentBuf()  
    ln = GetBufLnCur(hbuf)  
    str = GetBufSelText(hbuf)  
    str = cat("/*",str)  
    str = cat(str,"*/")  
    SetBufSelText (hbuf, str)  
}  

在一行代碼前添加註釋性文字,定義快捷鍵為Alt+/:

在一行代碼前添加註釋性文字,定義快捷鍵為Alt+\:


17.2 SourceInsight批量註釋