sourceinsight注释快捷键

这个笔记写的比较好。
https://blog.csdn.net/ytmfdw/article/details/43487453
这个是sourceinsight里面设置快捷键的程序。

macro MultiLineComment()  //注释多行code,快捷键是ctrl /
{
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)
}


macro _tsGetTabSize()
{
	szTabSize = GetReg("TabSize");

	if (szTabSize != "")
	{
		tabSize = AsciiFromChar(szTabSize[0]) - AsciiFromChar("0");
	}
	else
	{
		tabSize = 4;
	}

	return tabSize;
}

macro CommentBlock_Joyce()
{
	hbuf = GetCurrentBuf();
	hwnd = GetCurrentWnd();

	sel = GetWndSel(hwnd);

	iLine = sel.lnFirst;
	
	// indicate the comment char according to the file type
	// for example, using "#" for perl file(.pl) and "/* */" for C/C++.
	filename = tolower(GetBufName(hbuf));
	suffix = "";
	len = strlen(filename);
	i = len - 1;
	while (i >= 0)
	{
		if (filename[i-1] == ".")
		{
			suffix = strmid(filename, i, len)
			break;
		}
		i = i -1;
	}
	if  ( suffix == "pl" )
	{
		filetype = 2; // PERL
	}
	else
	{
		filetype = 1; // C
	}

	szLine = GetBufLine(hbuf, iLine);
	if (filetype == 1) 	// C
	{
		szLine = cat("/*	", szLine);
	}
	else				// PERL
	{
		szLine = cat("#	", szLine);
	}
	PutBufLine(hbuf, iLine, szLine);
	iLine = sel.lnLast;
	szLine = GetBufLine(hbuf, iLine);
	if (filetype == 1) 	// C
	{
		szLine = cat(szLine, "*/	");
	}
	else				// PERL
	{
		szLine = cat("#	", szLine);
	}
	PutBufLine(hbuf, iLine, szLine);



	if (sel.lnFirst == sel.lnLast)
	{
		tabSize = _tsGetTabSize() - 1;
		sel.ichFirst = sel.ichFirst + tabSize;
		sel.ichLim = sel.ichLim + tabSize;
	}
	SetWndSel(hwnd, sel);
}




//
// Undo the CommentBlock for the selected text.
//
macro UnCommentBlock_Joyce()
{
	hbuf = GetCurrentBuf();
	hwnd = GetCurrentWnd();
	
	sel = GetWndSel(hwnd);

	iLine = sel.lnFirst;


	// indicate the comment char according to the file type
	// for example, using "#" for perl file(.pl) and "/* */" for C/C++.
	filename = tolower(GetBufName(hbuf));
	suffix = "";
	len = strlen(filename);
	i = len - 1;
	while (i >= 0)
	{
		if (filename[i-1] == ".")
		{
			suffix = strmid(filename, i, len)
			break;
		}
		i = i -1;
	}
	if  ( suffix == "pl" )
	{
		filetype = 2; // PERL
	}
	else
	{
		filetype = 1; // C
	}

	tabSize = 0;

	endLine = GetBufLine(hbuf, sel.lnLast);
	endLineLen = strlen(endLine);
	szLine = GetBufLine(hbuf, iLine);
	len = strlen(szLine);
	szNewLine = "";
	commentState = 1;

	if (szLine[0] == "/" && szLine[1] == "*")
	{
		if(endLine[endLineLen-2] == "/" && endLine[endLineLen-3] == "*")
		{
			if (filetype == 1) 	// C
			{
				if (len > 1)
				{
					if (szLine[0] == "/" && szLine[1] == "*")
					{
						if (len > 2)
						{
							if (AsciiFromChar(szLine[2]) == 9)
							{
								tabSize = _tsGetTabSize() - 1;
								szNewLine = strmid(szLine, 3, strlen(szLine));
							}
						}

						if (szNewLine == "")
						{
							szNewLine = strmid(szLine, 2, strlen(szLine));
							tabSize = 2;
						}
						
						PutBufLine(hbuf, iLine, szNewLine);
					}
				}
			}
			if (filetype == 2) 	// PERL
			{
				if (len > 0)
				{
					if (szLine[0] == "#")	
					{
						if (len > 1)
						{
							if (AsciiFromChar(szLine[1]) == 9)
							{
								tabSize = _tsGetTabSize() - 1;
								szNewLine = strmid(szLine, 2, strlen(szLine));
							}
						}

						if (szNewLine == "")
						{
							szNewLine = strmid(szLine, 1, strlen(szLine));
							tabSize = 2;
						}
						
						PutBufLine(hbuf, iLine, szNewLine);
					}
				}
			}

			iLine = sel.lnLast;
			szLine = GetBufLine(hbuf, iLine);
			len = strlen(szLine);
			szNewLine = "";
			if (filetype == 1) 	// C
			{
				if (len > 1)
				{
					if (szLine[strlen(szLine)-2] == "/" && szLine[strlen(szLine)-3] == "*")
					{
						if (len > 2)
						{
							if (AsciiFromChar(szLine[2]) == 9)
							{
								tabSize = _tsGetTabSize() - 1;
								szNewLine = strmid(szLine, 0, strlen(szLine)-2);
							}
						}

						if (szNewLine == "")
						{
							szNewLine = strmid(szLine, 0, strlen(szLine)-3);
							tabSize = 2;
						}
						
						PutBufLine(hbuf, iLine, szNewLine);
					}
				}
			}
			if (filetype == 2) 	// PERL
			{
				if (len > 0)
				{
					if (szLine[0] == "#")	
					{
						if (len > 1)
						{
							if (AsciiFromChar(szLine[1]) == 9)
							{
								tabSize = _tsGetTabSize() - 1;
								szNewLine = strmid(szLine, 2, strlen(szLine));
							}
						}

						if (szNewLine == "")
						{
							szNewLine = strmid(szLine, 1, strlen(szLine));
							tabSize = 2;
						}
						
						PutBufLine(hbuf, iLine, szNewLine);
					}
				}
			}
		}

	}
	

	if (sel.lnFirst == sel.lnLast)
	{
		sel.ichFirst = sel.ichFirst - tabSize;
		sel.ichLim = sel.ichLim - tabSize;
	}

	SetWndSel(hwnd, sel);
}





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值