Source Insight 快捷功能:多行注释和反注释、#if0_#endif、add、modify、delete
Source Insight (SI)快捷功能:
第一步:
关闭所有SI project。然后点击 Project --> open project --> 选择Base,添加代码。
第二步
然后点击 Option --> Menu Assignments --> 找到新添加的名字,例Add_Comment,后点击选择Menu,如下图所示:
第三步:
最后再次选择打开项目,选择你之前建立的工程项目,添加完成如下图所示:
下面是code源码
多行注释
在文件末尾添加如下代码
/*注释多行代码的函数*/
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)
}
#if0_#endif
//#if0_#endif
macro Add_if_0_endif_Comment()
{
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 )
}
add
//add
macro Add_Comment()
{
hwnd=GetCurrentWnd()
sel=GetWndSel(hwnd)
lnFirst=GetWndSelLnFirst(hwnd)
lnLast=GetWndSelLnLast(hwnd)
hbuf=GetCurrentBuf()
if(lnFirst != lnLast ) //多行add
{
if(LnFirst == 0)
{
szIfStart = ""
}
else
{
szIfStart = GetBufLine(hbuf, LnFirst - 1)
}
szIfEnd = GetBufLine(hbuf, lnLast + 1)
if(szIfStart == "//add_start_msw_000" && szIfEnd == "//add_end_msw_000")
{
DelBufLine(hbuf, lnLast + 1)
DelBufLine(hbuf, lnFirst - 1)
sel.lnFirst = sel.lnFirst - 1
sel.lnLast = sel.lnLast - 1
}
else
{
InsBufLine(hbuf, lnFirst, "//add_start_msw_000")
InsBufLine(hbuf, lnLast + 2, "//add_end_msw_000")
sel.lnFirst = sel.lnFirst + 1
sel.lnLast = sel.lnLast + 1
}
}
else //单行add
{
buf = GetBufLine(hbuf, lnFirst)
if(StrMid(buf,0,1) != "/") //需要添加注释
{
PutBufLine(hbuf, lnFirst, Cat(buf,"//add_msw_000")) //单行add
}
}
SetWndSel( hwnd, sel )
}
modify
//modify
macro Modify_Comment()
{
hwnd=GetCurrentWnd()
sel=GetWndSel(hwnd)
lnFirst=GetWndSelLnFirst(hwnd)
lnLast=GetWndSelLnLast(hwnd)
hbuf=GetCurrentBuf()
if(lnFirst != lnLast ) //多行修改
{
if(LnFirst == 0)
{
szIfStart = ""
}
else
{
szIfStart = GetBufLine(hbuf, LnFirst - 1)
}
szIfEnd = GetBufLine(hbuf, lnLast + 1)
if(szIfStart == "//modify_start_msw_000" && szIfEnd == "//modify_end_msw_000")
{
DelBufLine(hbuf, lnLast + 1)
DelBufLine(hbuf, lnFirst - 1)
sel.lnFirst = sel.lnFirst - 1
sel.lnLast = sel.lnLast - 1
flag = 1
}
else
{
InsBufLine(hbuf, lnFirst, "//modify_start_msw_000")
InsBufLine(hbuf, lnLast + 2, "//modify_end_msw_000")
sel.lnFirst = sel.lnFirst + 1
sel.lnLast = sel.lnLast + 1
flag = 0
}
}
else //单行修改
{
buf = GetBufLine(hbuf, lnFirst)
if(StrMid(buf,0,1) != "/") //需要添加注释
{
PutBufLine(hbuf, lnFirst, Cat(buf,"//modify_msw_000")) //单行修改
}
}
SetWndSel( hwnd, sel )
}
delete
//Delete
macro Delete_Comment()
{
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 == "//delete_start_msw_000" && szIfEnd == "//delete_end_msw_000")
{
DelBufLine(hbuf, lnLast + 1)
DelBufLine(hbuf, lnFirst - 1)
sel.lnFirst = sel.lnFirst - 1
sel.lnLast = sel.lnLast - 1
flag = 1
}
else
{
InsBufLine(hbuf, lnFirst, "//delete_start_msw_000")
InsBufLine(hbuf, lnLast + 2, "//delete_end_msw_000")
sel.lnFirst = sel.lnFirst + 1
sel.lnLast = sel.lnLast + 1
flag = 0
}
Ln = lnFirst
buf = GetBufLine(hbuf, Ln)
len = strlen(buf)
while(Ln <= (lnLast+1) )
{
buf = GetBufLine(hbuf, Ln) //取Ln对应的行
if(buf == ""){ //跳过空行
Ln = Ln + 1
continue
}
if(StrMid(buf,0,1) != "/") //需要添加注释
{
if(flag == 0) PutBufLine(hbuf, Ln, Cat("//",buf)) //delete_code
}
Ln = Ln + 1
}
SetWndSel( hwnd, sel )
}
有更好的功能欢迎留言。
标签:lnLast,if0,hwnd,Insight,注释,lnFirst,sel,buf,hbuf From: https://blog.csdn.net/eric43019/article/details/136257857