1. 程式人生 > >source insight筆記___批量註釋,去掉中文註釋文字間的空格

source insight筆記___批量註釋,去掉中文註釋文字間的空格

--------------------------------------------------------------------------------------------------------------------------

Source Insight  增加對pc檔案的識別,source insight其他型別檔案語法高亮

Options--->Preferences-->C Language-->Doc Types-->File Filter  增加一個 .pc

-------------------------------------------------------------------------------------------------------------------------

source insight拷貝中文的時候出現亂碼,複製中文出現亂碼:

解決方法:拷貝的時候把輸入法切換到中文

-------------------------------------------------------------------------------------------------------------------------

(1)、去掉中文註釋文字間的空格

中文註釋字與字之間有空格

options->style properties

comment
...
comment To Do

裡面的font->font name設定為“楷體”或其它中文字型就可以了!

(2)source insight批量註釋

在用source insight的時候,發現竟然沒有這樣的功能。於是在網上搜了一下,source insight裡面的多行註釋可以用巨集來實現。

以下是實現多行註釋的巨集程式碼(在別的網站copy過來的,經過測試,還是很好用的):

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)
}

將上面的程式碼另存為xxx.em檔案,開啟source insight,將該檔案新增到工程中,然後在Options->Key Assignments中你就可以看到這個巨集了,巨集的名字是MultiLineComments,然後我們為它分配快捷鍵“Ctrl + /”,然後就可以了。

這裡還有一份新增“#ifdef 0”和“#endif”的巨集程式碼:

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 )
}
這份巨集的程式碼可以把游標顯示的行註釋掉:

1
2
3
4
5
6
7
8
9
macro CommentSingleLine()
{
    hbuf = GetCurrentBuf()
    ln = GetBufLnCur(hbuf)
    str = GetBufLine (hbuf, ln)
    str = cat("/*",str)
    str = cat(str,"*/")
    PutBufLine (hbuf, ln, str)
}
將一行中滑鼠選中部分註釋掉:

1
2
3
4
5
6
7
8
9
macro CommentSelStr()
{
    hbuf = GetCurrentBuf()
    ln = GetBufLnCur(hbuf)
    str = GetBufSelText(hbuf)
    str = cat("/*",str)
    str = cat(str,"*/")
    SetBufSelText (hbuf, str)
}