Source Insight实现Ctrl+/,自动注释或者去掉注释

Posted amoslee94

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Source Insight实现Ctrl+/,自动注释或者去掉注释相关的知识,希望对你有一定的参考价值。

macro MultiLineComment()
{
hwnd = GetCurrentWnd()
selection = GetWndSel(hwnd)
LnFirst = GetWndSelLnFirst(hwnd) //取首行行号
LnLast = GetWndSelLnLast(hwnd) //取末行行号
hbuf = GetCurrentBuf()

// 判断是否需要注释,条件:只要有一行没有注释就需要全部添加一次注释
Ln = Lnfirst
flagAddComment = false
spaceCnt = 256
while(Ln <= Lnlast) {
buf = GetBufLine(hbuf, Ln) //取Ln对应的行
//跳过空行
if(buf ==""){
Ln = Ln + 1
continue
}
// 统计前置空白数
len = strlen(buf)
q = 0
while(q < len) {
if(StrMid(buf,q,q+1) !=" ")
break
q = q + 1
}
if(q == len)
break
if(q < spaceCnt){
spaceCnt = q
spaces = StrMid(buf,0,q)
}
// 判断是否需要添加注释
if(StrMid(buf,q,q+1) !="/"){
// todo 这里可能会有问题
flagAddComment = true
}
Ln = Ln + 1
}
Comment = Cat(spaces, "// ")
Ln = Lnfirst
buf = GetBufLine(hbuf, Ln)
len =strlen(buf)
while(Ln <= Lnlast) {
buf = GetBufLine(hbuf, Ln) //取Ln对应的行
if(buf ==""){ //跳过空行
Ln = Ln + 1
continue
}
if(flagAddComment){
len = strlen(buf)
buf = StrMid(buf,spaceCnt,len)
PutBufLine(hbuf, Ln, Cat(Comment, buf))
}else{
// 统计前置空白数
len = strlen(buf)
p = 0
while(p < len) {
if(StrMid(buf,p,p+1) !=" ")
break
p = p + 1
}
if(StrMid(buf, p, p+3) =="// ") {
PutBufLine(hbuf, Ln, Cat(spaces, StrMid(buf, p+3, Strlen(buf))))
}else if(StrMid(buf, p, p+2) =="//") {
PutBufLine(hbuf, Ln, Cat(spaces, StrMid(buf, p+2, Strlen(buf))))
}
}
Ln = Ln + 1
}
SetWndSel(hwnd, selection)
}







































































以上是关于Source Insight实现Ctrl+/,自动注释或者去掉注释的主要内容,如果未能解决你的问题,请参考以下文章

Source Insight中的多行注释

[SI]source insight使用

source_insight快捷键列表

source insight搭建python环境

source insight使用教程

source insight怎么看android源代码