source insight中cpp文件和h文件的切换(使用si的内置语言实现)[增加src/include目录切换]
2009-12-24 11:23
756 查看
注:更新后的脚本,支持原路径中是include或src的目录切换,而不再要求是在同一目录中的cpp和h文件切换, 相对第一版的修改部分的代码后面也用红色标注。 研究了si的编程语言,总算实现了cpp和h文件的切换,好爽(不知道网上的有没),自制的,希望对大家有帮助。 这里是此个函数的代码,只要将open_cpp_h函数绑定到一个快捷键就方便了哦 至于函数怎么使用,可以参见: 一个处理 source insight 中中文乱码问题的例子: http://www.sourceinsight.com.cn/tech2.htm Source insight 官方帮助文档中关于 macro 使用: http://www.sourceinsight.com/docs35/Macro%20Language.htm#Xag957533 代码如下:
/** cpp和h文件互换 */ macro open_cpp_h() { hwnd = GetCurrentWnd(); hbuf = GetCurrentBuf(); if (hbuf == 0) stop; // empty buffer fn = GetBufName(hbuf); fl = strlen(fn); strbuf = NewBuf("temp"); ClearBuf(strbuf); AppendBufLine(strbuf, ".h"); AppendBufLine(strbuf, ".hpp"); AppendBufLine(strbuf, ".c"); AppendBufLine(strbuf, ".cpp"); AppendBufLine(strbuf, ".cx"); AppendBufLine(strbuf, ".cxx"); idx_c = 2;//开始cpp的下标 idx_end = GetBufLineCount(strbuf); i = 0; dest_type=0;//0表示h,1表示cpp //for(i=0; i<idx_end; i++) while(i < idx_end) { rec = GetBufLine(strbuf, i); len = strlen(rec); last = strmid(fn, fl - len, fl); if(last == rec) { ext = ""; if(i<idx_c) //h { ext = ".cpp"; dest_type = 1; }else { ext = ".h"; dest_type = 0; } name = strmid(fn, 0, fl - len); fn = cat(name, ext); break; } i = i + 1; } CloseBuf(strbuf); //替代src、include的目录. 针对type,互换目录 orig = "//include//"; dest = "//src//"; if(dest_type == 0) //如果要变成h,则src变成include { temp = orig; orig = dest; dest = temp; } orig_len = strlen(orig); dest_len = strlen(dest); fl = strlen(fn); //从文件目录中查找并替换,从后向前找 i = strlen(fn) - orig_len - 1; while(i>=0) { cut = strmid(fn, i, i+orig_len); if(orig == cut) { head = strmid(fn, 0, i); tail_p = i+orig_len; tail = strmid(fn, tail_p, fl); fn = cat(head, dest); fn = cat(fn, tail); } i = i - 1; } hbuf = OpenBuf(fn); if(hbuf != 0) SetCurrentBuf(hbuf); }
相关文章推荐
- 使用.net FtpWebRequest 实现FTP常用功能 上传 下载 获取文件列表 移动 切换目录 改名 .
- .net 使用资源文件实现多语言切换
- 使用.net FtpWebRequest 实现FTP常用功能 上传 下载 获取文件列表 移动 切换目录 改名
- winfrom实现多语言切换:使用资源文件
- 使用JAVA实现比较两个文件夹下的文件新增和修改情况,并复制到新的目录(实现增量更新项目)
- 分别使用c、shell语言实现文件内容合并 -- 2014百度面试题目
- VC 使用mingw32编译ffmpeg静态库所需文件(二),mingwexsrc.cpp
- 习题13:编写程序,使用File类实现删除当前目录下的所有文件。
- 市面上所有号称"虚拟机","防火墙"的实时监控杀毒软件无一不是使用的IFSHOOK技术.但是同时也有一些朋友不断写MAIL给我打听如何实现读写的监控.下面给出用VTOOLSD写的代码.也就是所有实时杀毒软件的奥秘.同时,很多拦截文件操作的软件,例如对目录加
- ci文件缓存使用,可以用来实现多模板切换 改写URL辅助函数
- npm 安装jslist 实现 src目录下js文件在project.json批量配置
- si使用总结; Source Insight乱码的解决方案,SI不支持UTF-8字符编码乱码
- Linux下使用samba服务器实现与Windows的目录文件共享
- Python自动化运维笔记(五):使用filecmp模块实现文件以及文件目录差异对比
- Java编程___File各类方法使用(实现拷贝特定文件至特定目录下)
- 汇编语言: 在D盘根目录建立一个文件abc.txt,第1次向文件中写入“123456”六个字符,第2次 增加“abcdefg”几个字符。
- Springboot使用maven的profiles实现多环境配置文件切换
- 在Identity 增加自己的属性 部门,并且使用access mdb文件实现角色验证
- 使用API实现的一个增加系统桌面,并且可以任意切换的小程序.
- php的include功能实现:用于在内存合并文件而非读入替换再存盘再载入使用include