Source Insight 各种好用,功能繁多, 但是没有注释的快捷键或菜单,要手动加宏实现
代码都是网上copy的, 但有的不能用,稍作修改了下,可以用了,都贴出来
美中不足,
对于在一行内的局部注释, 没有解除注释的宏,
不过这个也没关系了, 手动就可以,
macro Comments_orUn_gx() { //用杠星注释多行,或取消杠星注释 ,不选中多行时,只处理当前行 hwnd = GetCurrentWnd() hbuf = GetCurrentBuf() if(hbuf ==0) stop // debugBuf只是为了调试 // debugBuf = NewBuf("debugBuf") // ClearBuf(debugBuf) lnSelFirst = GetWndSelLnFirst(hwnd) // 获得选中内容的第一行 lnSelLast = GetWndSelLnLast(hwnd) // 获得选中内容的最后一行 const_space = " " // 空格 const_comments_begin = "/*" // 多行注释符号-开始 const_comments_end = "*/" // 多行注释符号-结束 isCancelComments = 0 // 跳过开始的空行,否则下面报错 line_index = lnSelFirst orig_text = GetBufLine(hbuf, line_index) // 获得第一行的text while(strlen(orig_text) == 0) { line_index = line_index + 1 orig_text = GetBufLine(hbuf, line_index) // 获得下一行的text } // 根据第一行选中文本,确定是“注释”,还是“取消注释” // 判断是否以“//”开始,如果是则认为是“取消注释”,首先需要去掉空格 subIndex = 0 while(strmid(orig_text, subIndex, subIndex+1) == const_space) subIndex = subIndex + 1 if (strmid(orig_text, subIndex, subIndex+2) == const_comments_begin) // 以“/*”开头,取消注释 { isCancelComments = 1 dest_text = strmid(orig_text, subIndex+2, strlen(orig_text)) if(strlen(dest_text) == 0) { DelBufLine(hbuf, line_index) // 本行只有“/*”时,删除 } else { PutBufLine (hbuf, line_index, dest_text) // 替换以前的text } line_index = line_index + 1 } else // 进行注释 { InsBufLine(hbuf, lnSelFirst, "/*") InsBufLine(hbuf, lnSelLast+2, "*/") stop } // 遍历所有选中的行 // line_index = lnSelFirst // 前面已经跳过开头的空行 // while(line_index <= lnSelLast) // 对选中的内容进行操作 while(line_index < GetBufLineCount(hbuf)) //or 从当前行开始,查找到第一个“*/”为止或到结尾 { orig_text = GetBufLine(hbuf, line_index) // 获得以前的text if (strlen(orig_text) > 1) // 如果是空行或只有一个字符,则跳过 { dest_text = "" if(isCancelComments == 1) // 取消注释 { // 查找注释符“*/” subIndex = 0 while(subIndex < strlen(orig_text)-2 && strmid(orig_text, subIndex, subIndex+2) != const_comments_end) subIndex = subIndex + 1 if (strmid(orig_text, subIndex, subIndex+2) == const_comments_end) // 找到“*/”,进行处理 { prefixText = strmid(orig_text, 0, subIndex) // 前面的text lastText = strmid(orig_text, subIndex+2, strlen(orig_text)) // 后面的text dest_text = cat(prefixText, lastText) if(strlen(dest_text) == 0) { DelBufLine(hbuf, line_index) // 本行只有“*/”时,删除 } else { PutBufLine (hbuf, line_index, dest_text) // 替换以前的text } break // 退出 } } } line_index = line_index + 1 } } 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[0]) - AsciiFromChar("0"); } else { tabSize = 4; } 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 - 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); } 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 = 0 while( start < len ) { if( strmid( buf, start, start + 1 ) == CharFromAscii(32) || strmid( buf, start, start + 1 ) == CharFromAscii(9) ) { start = start + 1 if( start > len ) break } else break } if( start < len && start < firststart ) { firststart = start } ln = ln + 1 } ln = lnFirst while( ln <= lnLast ) { buf = GetBufLine( hbuf, ln ) len = strlen( buf ) if( len > 0 ) { buf2 = cat( cat( strmid( buf, 0, firststart ), "//" ), strmid( buf, firststart, len ) ) PutBufLine ( hbuf, ln, buf2 ) } ln = ln + 1 } 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 ) if( len >= 2 ) { start = 0 while( strmid( buf, start, start + 1 ) == CharFromAscii(32) || strmid( buf, start, start + 1 ) == CharFromAscii(9) ) { start = start + 1 if( start >= len ) break } if( start < len - 2 ) { if( strmid( buf, start, start + 2 ) == "//" ) { buf2 = cat( strmid( buf, 0, start ), strmid( buf, start + 2, len ) ) PutBufLine( hbuf, ln, buf2 ) } } } ln = ln + 1 } SetWndSel( hwnd, selection ) }
代码加到utils.em中,或者新建个em文件,添加到base项目, 汉化版的加到"基础"项目
参考文章
http://download.csdn.net/download/ueiia/1587238
http://blog.csdn.net/tankles/article/details/6949409
相关推荐
总之,Source Insight提供了高效便捷的注释和反注释工具,无论是对单行还是多行,甚至整个代码块,都能轻松处理。熟练掌握这些操作,将大大提高你的编程效率和代码维护性。记得定期更新和查阅相关文档,以充分利用...
自己写的宏macro CodeCommentsEnter(),CodeCommentsCancel(),macro CodeHeadAdd(),和UE特殊编辑下面的添加注释、取消注释相同,最后一个是函数名的注释模板。 使用方法:直接覆盖BASE工程、安装路径下面的文件...
自己写的source insight注释宏,实现类似VC IDE的多行注释及反注释功能。使用方法:打开source insight的Base工程,选择Add and Remove Project Files,将Comments.em文件添加进Base工程,保存即可退出。打开其他...
总的来说,"sourceinsight 代码行注释,去注释代码插件"是一个实用的工具,它利用Source Insight的宏功能,简化了代码注释和去注释的过程,提高了开发者的生产力。配合详细的使用说明文档,用户可以轻松上手,享受更...
把之前的脚本优化了下,增加代码对齐的宏。...测试环境:source insight 3。 后缀为em的文件添加到base项目,options -> menu assignments 中添加宏定义。 CodeHeadAdd / CodeCommentsChange / CodeAlignment
Ver1.0宏的升级版 解决在一行内全是空格情况下的小BUG
当然,Source Insight 3.5的功能也非常的强大,但有些我们很需要的功能(比如同时注释多行;代码自动格式化为标准C、C++格式;中文注释乱码情况;想进入资源管理器查看当前文件等等),SI3.5还不支持,好在SI支持很多宏...
本资源提供了SourceInsight的汉化、多标签设置、汉字删除无问号、多行注释、Tab键设置、智能排版以及全选全保存等关键功能的优化配置,旨在提升开发者的使用体验和工作效率。 1. **SourceInsight汉化**:对于中文...
source insight一键添加文件头注释、函数头注释、函数声明注释,将文件放入si安装目录下的Base文件夹,然后把文件添加到任意工程中,调出快捷键设置窗口,找到对应的宏函数并为它们添加快捷键即可。 更详细的操作...
《SourceInsight便捷插件与Doxygen注释标准详解》 在软件开发过程中,文档的编写和维护是一项不可或缺的工作,而Doxygen作为一种流行的开源文档生成工具,能够自动生成项目的API文档,大大减轻了程序员的负担。同时...
只需在代码行尾部输入`//`(单行注释)或`/* */`(多行注释)即可开始编写注释。 2. **注释模板**:用户可以自定义注释模板,例如函数注释、类注释等,通过快捷键快速插入,提高工作效率。 3. **智能感知**:...
《SourceInsight 4.0:打造舒适编程环境与高效多行注释操作》 SourceInsight是一款广受程序员喜爱的源代码查看和编辑工具,以其强大的语法高亮、智能提示和高效的代码导航功能著称。本文将详细介绍如何在Source...
本文将详细介绍如何在Source Insight 3.X版本中彻底解决中文注释显示乱码的问题。 首先,我们需要了解乱码产生的原因。通常,源代码编辑器需要正确识别文件的编码格式,以及支持用于显示特定语言的字体。如果编辑器...
sourceInsight 宏定义文件 sourceInsight 宏定义文件 sourceInsight 宏定义文件 sourceInsight 宏定义文件
本文将深入探讨如何解决Source Insight中的日文注释乱码问题。 首先,我们需要了解乱码问题的根源。通常,乱码是由于字符编码不匹配导致的。在计算机系统中,不同的编码方式对应着不同的字符集,例如ASCII、GBK、...
**Source Insight 宏定义详解** Source Insight是一款广受程序员喜爱的源代码查看和编辑工具,以其强大的代码导航、语法高亮和自定义功能而闻名。宏定义是Source Insight中的一个重要特性,它允许用户通过自定义...
source insight 块注释宏,博客中记录了使用方法,整理和总结下
《Source Insight 4 自定义主题与多行注释宏实现:仿VSCode风格与护眼设计》 Source Insight 4 是一款广泛使用的源代码阅读和编辑工具,它以其强大的代码智能分析功能深受程序员喜爱。然而,为了提升用户体验,个性...
《Source Insight插件解决中文注释显示乱码详解》 在编程过程中,代码注释是不可或缺的一部分,尤其对于中文开发者来说,使用中文注释能够更直观地表达代码含义。然而,许多开发者在使用Source Insight这款强大的源...
1. **Quicker.em**:这可能是用于增强Source Insight默认快捷键或宏的脚本。通过自定义快捷方式,开发者可以更快地执行常见的代码操作,比如查找、替换、跳转到定义等,从而提高编程效率。 2. **Code Review 使用...