source insight增加注释宏
打开base项目,下main.c文件里加入以下代码
对于在一行内的局部注释, 没有找到解除注释的宏,
macro Comments_orUn_gx()
{ //用杠星注释多行,或取消杠星注释 ,不选中多行时,只处理当前行
hwnd = GetCurrentWnd()
hbuf = GetCurrentBuf()
)
stop
// debugBuf只是为了调试
// debugBuf = NewBuf("debugBuf")
// ClearBuf(debugBuf)
lnSelFirst = GetWndSelLnFirst(hwnd) // 获得选中内容的第一行
lnSelLast = GetWndSelLnLast(hwnd) // 获得选中内容的最后一行
const_space = " " // 空格
const_comments_begin = "/*" // 多行注释符号-开始
const_comments_end = "*/" // 多行注释符号-结束
isCancelComments =
// 跳过开始的空行,否则下面报错
line_index = lnSelFirst
orig_text = GetBufLine(hbuf, line_index) // 获得第一行的text
)
{
line_index = line_index +
orig_text = GetBufLine(hbuf, line_index) // 获得下一行的text
}
// 根据第一行选中文本,确定是“注释”,还是“取消注释”
// 判断是否以“//”开始,如果是则认为是“取消注释”,首先需要去掉空格
subIndex =
) == const_space)
subIndex = subIndex +
) == const_comments_begin) // 以“/*”开头,取消注释
{
isCancelComments =
dest_text = strmid(orig_text, subIndex+, strlen(orig_text))
)
{
DelBufLine(hbuf, line_index) // 本行只有“/*”时,删除
}
else
{
PutBufLine (hbuf, line_index, dest_text) // 替换以前的text
}
line_index = line_index +
}
else // 进行注释
{
InsBufLine(hbuf, lnSelFirst, "/*")
InsBufLine(hbuf, lnSelLast+, "*/")
stop
}
// 遍历所有选中的行
// line_index = lnSelFirst // 前面已经跳过开头的空行
// while(line_index <= lnSelLast) // 对选中的内容进行操作
while(line_index < GetBufLineCount(hbuf)) //or 从当前行开始,查找到第一个“*/”为止或到结尾
{
orig_text = GetBufLine(hbuf, line_index) // 获得以前的text
) // 如果是空行或只有一个字符,则跳过
{
dest_text = ""
) // 取消注释
{
// 查找注释符“*/”
subIndex =
&& strmid(orig_text, subIndex, subIndex+) != const_comments_end)
subIndex = subIndex +
) == const_comments_end) // 找到“*/”,进行处理
{
prefixText = strmid(orig_text, , subIndex) // 前面的text
lastText = strmid(orig_text, subIndex+, strlen(orig_text)) // 后面的text
dest_text = cat(prefixText, lastText)
)
{
DelBufLine(hbuf, line_index) // 本行只有“*/”时,删除
}
else
{
PutBufLine (hbuf, line_index, dest_text) // 替换以前的text
}
break // 退出
}
}
}
line_index = line_index +
}
}
macro CommentSelecte_inOneLine()
{ //注释选中,只在单行中有效,不选中任何字符的话就在光标处插入一对杠星注释符
hbuf = GetCurrentBuf()
ln = GetBufLnCur(hbuf)
str = GetBufSelText(hbuf)
str = cat("/*",str)
str = cat(str,"*/")
SetBufSelText (hbuf, str)
}
macro _tsGetTabSize()
{ //只被Comment_gx() 宏调用
szTabSize = GetReg("TabSize");
if (szTabSize != "")
{
tabSize = AsciiFromChar(szTabSize[]) - AsciiFromChar(");
}
else
{
tabSize = ;
}
return tabSize;
}
macro Comment_gx()
{ //用杠星注释,不换行,至少注释一行,不推荐使用
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 - ;
)
{
] == ".")
{
suffix = strmid(filename, i, len)
break;
}
i = i -;
}
if ( suffix == "pl" )
{
filetype = ; // PERL
}
else
{
filetype = ; // C
}
szLine = GetBufLine(hbuf, iLine);
) // C
{
szLine = cat("/*", szLine);
}
else // PERL
{
szLine = cat("# ", szLine);
}
PutBufLine(hbuf, iLine, szLine);
iLine = sel.lnLast;
szLine = GetBufLine(hbuf, iLine);
) // C
{
szLine = cat(szLine, "*/");
}
else // PERL
{
szLine = cat("# ", szLine);
}
PutBufLine(hbuf, iLine, szLine);
if (sel.lnFirst == sel.lnLast)
{
tabSize = _tsGetTabSize() - ;
sel.ichFirst = sel.ichFirst + tabSize;
sel.ichLim = sel.ichLim + tabSize;
}
SetWndSel(hwnd, sel);
}
macro Comment_gg()
{ //用杠杠注释,不选中多行的话,注释当前行
hwnd = GetCurrentWnd()
selection = GetWndSel( hwnd )
lnFirst = GetWndSelLnFirst( hwnd )
lnLast = GetWndSelLnLast( hwnd )
hbuf = GetCurrentBuf()
ln = lnFirst
buf = GetBufLine( hbuf, ln )
len = strlen( buf )
firststart = len
while( ln <= lnLast )
{
buf = GetBufLine( hbuf, ln )
len = strlen( buf )
start =
while( start < len )
{
) == CharFromAscii() || strmid( buf, start, start + ) == CharFromAscii() )
{
start = start +
if( start > len )
break
}
else
break
}
if( start < len && start < firststart )
{
firststart = start
}
ln = ln +
}
ln = lnFirst
while( ln <= lnLast )
{
buf = GetBufLine( hbuf, ln )
len = strlen( buf )
)
{
buf2 = cat( cat( strmid( buf, , firststart ), "//" ), strmid( buf, firststart, len ) )
PutBufLine ( hbuf, ln, buf2 )
}
ln = ln +
}
SetWndSel( hwnd, selection )
}
macro unComment_gg()
{ //取消杠杠注释,不选中多行的话,默认只处理当前行
hwnd = GetCurrentWnd()
selection = GetWndSel( hwnd )
lnFirst = GetWndSelLnFirst( hwnd )
lnLast = GetWndSelLnLast( hwnd )
hbuf = GetCurrentBuf()
ln = lnFirst
while( ln <= lnLast )
{
buf = GetBufLine( hbuf, ln )
len = strlen( buf )
)
{
start =
) == CharFromAscii() || strmid( buf, start, start + ) == CharFromAscii() )
{
start = start +
if( start >= len )
break
}
)
{
) == "//" )
{
buf2 = cat( strmid( buf, , start ), strmid( buf, start + , len ) )
PutBufLine( hbuf, ln, buf2 )
}
}
}
ln = ln +
}
SetWndSel( hwnd, selection )
}
增加后,通过在键分配中分配宏命令的按键
source insight增加注释宏的更多相关文章
- source insight 中文注释为乱码解决
1. source insight 中文注释为乱码解决 http://blog.csdn.net/bingfeng1210/article/details/7527059 2. Source Insi ...
- Source Insight中文注释乱码、字体大小、等宽解决方法
中文注释乱码解决方法: 用记事本打开源文件,然后,选择文件->另存为,编码选为”ANSI“ 字体的调整: Source Insight 菜单栏选择Options->Document O ...
- Source Insight 中文注释为乱码解决办法(完美解决,一键搞定)
我从网上查了一堆解决办法,但是都是2017年以前的解决方案,并且都是针对于source insight 3.5及以下版本的,目前SI软件版本都到4.0了,应该有新方法出现了. ------------ ...
- utf-8转换为ansi和修改文件名的批处理(可解决source insight中文注释乱码问题)
source insight中文乱码有两个原因,一个是source insight的设置不正确.另外一个原因是源文件是utf-8格式的. 最近在工作中用source insight 查看jsp文件.j ...
- 【转】Source Insight中文注释为乱码的解决办法
我网上查了一堆解决办法,但是都是2017年以前的,并且都是针对于source insight 3.5及以下版本的解决方案,软件版本都到4.0了,应该有新方法出现. 干货:Source Insight ...
- source insight增加tab标签页的方法之sihook
1.效果如下 2.方法见如下博客 http://www.cnblogs.com/Red_angelX/archive/2013/01/23/2873603.html
- Source Insight常用快捷键及注释快捷键设置
转:http://blog.csdn.net/tlaff/article/details/6536610 在使用SI过程中,我根据自己的使用习惯修改了它的默认快捷键,并且在配置文件中添加了一些人性化功 ...
- source insight之quicker.em宏的使用
source insight有很多宏可以用,这里介绍的宏是quicker.em这个宏,它是华为的一个员工写的,很实用. 1.安装quicker.em宏 一.打开base这个工程Project-> ...
- source insight 编程风格(持续更新)
1.字体Source Code Pro 出身于豪门Adobe,从名字上来看就知道是转为编码而生的.基本上也是拥有前面所提的编程字体的所有要素的.这个字体基本上具有编程字体所需的所有要素:等宽.支持Cl ...
随机推荐
- java 深入技术五 (泛型)
1.泛型概述 泛型的本质:参数化类型 定义 Object obj=new Object();//并不是所有类都可以使用泛型 List <String> list=new ArrayList ...
- ABAP 上传文件到内表
http://www.cnblogs.com/jiangzhengjun/p/4265642.html http://www.xuebuyuan.com/1233478.html
- C#导出涉及行列合并的复杂的Excel数据
一.导出数据格式 二.实现代码 /// <summary> /// 导出经费统计excel表格 /// </summary> /// <param name=" ...
- CSS 魔法系列:纯 CSS 绘制三角形(各种角度)
我们的网页因为 CSS 而呈现千变万化的风格.这一看似简单的样式语言在使用中非常灵活,只要你发挥创意就能实现很多比人想象不到的效果.特别是随着 CSS3 的广泛使用,更多新奇的 CSS 作品涌现出来. ...
- Linux之CentOS 常用命令
软件安装:安装软件:yum install <名称>移除软件:yum remove <名称>安装软件包:rpm -ivh <包全名>安装ifconfig: yum ...
- 协同过滤和简单SVD优化
协同过滤(collaborative filtering) 推荐系统: 百度百科的定义是:它是利用电子商务网站向客户提供商品信息和建议,帮助用户决定应该购买什么产品,模拟销售人员帮助客户完成购买过程主 ...
- Linux安装搜狗拼音输入法
环境:Ubuntu1604 英文版 1.下载搜狗安装包 2.双击deb文件进行安装 3.在终端执行如下命令 im-config 弹出对话框,点击OK,然后又弹出一个对话框,点击YES.如果弹出的对话框 ...
- 如何自定义jupyter notebook的主题
临时性的改变一个jupyter的主题 参考这个实现,只要在notebook里运行这段代码就行了,能让所有的cell都能够显示黑色背景 一个更为完备的工具 参考这个方案: 安装jupyter-theme ...
- JAVA基础中的注意点(二)
1.数组 a.特点:同种数据类型:数组类型一旦确定就不能改变. 连续空间存放:数据空间是连续的. 空间长度:数组有自己的长度,初始化的时候需要定义. 数组的下标:从0开始,第一个数组元素下标为0,最后 ...
- Quartz 之Quartz Cron表达式
说到这个Quartz了,必不可少的就要说到我们的Triggger触发器,相信大家也都知道,我们在之前也说过了,Trigger又有两个子类,也就是两种方式,分别是:SimpleTrigger和CronT ...