码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-06-29 18:50:06      阅读:94      评论:0      收藏:0      [点我收藏+]

标签:添加   comm   put   sele   空白   als   ntb   comment   multi   

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+/,自动注释或者去掉注释

标签:添加   comm   put   sele   空白   als   ntb   comment   multi   

原文地址:https://www.cnblogs.com/AmosLee94/p/13209555.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!