Source Insight中的多行註釋

我們經常要對一整段代碼進行註釋,很多代碼編輯器都提供了這樣的功能:用快捷鍵“Ctrl + /”來實現“//”的多行註釋。

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

以下是實現多行註釋的宏代碼(在別的網站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->KeyAssignments中你就可以看到這個宏了,宏的名字是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 )

}


這份宏的代碼可以把光標顯示的行註釋掉:

macro CommentSingleLine()

{

    hbuf = GetCurrentBuf()

    ln = GetBufLnCur(hbuf)

str = GetBufLine (hbuf, ln)

    str = cat("/*",str)

    str = cat(str,"*/")

    PutBufLine (hbuf, ln, str)

}

將一行中鼠標選中部分註釋掉:

macro CommentSelStr()

{

    hbuf = GetCurrentBuf()

    ln = GetBufLnCur(hbuf)

    str = GetBufSelText(hbuf)

    str = cat("/*",str)

    str = cat(str,"*/")

    SetBufSelText (hbuf, str)

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章