source insight并没有提供这样的快捷键,有时候用着比较烦人。终于找到了方法:使用宏命令,并设置快捷键与之绑定。
1、打开source insight,Project -> Open Project,打开Base项目,注:Base项目是source insight默认已经创建的。
2、打开Utils.em文件,在该文件的末尾加入如下内容:
- /*
- cpp和hpp文件互换(当前只支持同一目录下的文件互换)
- */
- macro switch_cpp_hpp()
- {
- hwnd = GetCurrentWnd()
- hCurOpenBuf = GetCurrentBuf()
- if (hCurOpenBuf == 0)
- stop
- curOpenFileName = GetBufName(hCurOpenBuf)
- curOpenFileNameLen = strlen(curOpenFileName)
-
- // 文件类型临时缓冲区
- strFileExt = NewBuf("strFileExtBuf")
- ClearBuf(strFileExt)
-
- // 头文件类型
- index_hpp_begin = 0 // 头文件开始索引
- AppendBufLine(strFileExt, ".h")
- AppendBufLine(strFileExt, ".hpp")
- index_hpp_end = GetBufLineCount(strFileExt) // 头文件结束索引
-
- // 源文件类型
- index_cpp_begin = index_hpp_end // 源文件开始索引
- AppendBufLine(strFileExt, ".c")
- AppendBufLine(strFileExt, ".cpp")
- AppendBufLine(strFileExt, ".cc")
- AppendBufLine(strFileExt, ".cx")
- AppendBufLine(strFileExt, ".cxx")
- index_cpp_end = GetBufLineCount(strFileExt) // 源文件结束索引
-
- isCppFile = 0 // 0:未知 1:头文件 2:源文件,默认未知扩展名
- curOpenFileExt = "" // 当前打开文件的扩展名
- index = index_hpp_begin
- // 遍历头文件,判断是否当前打开文件是头文件类型
- while(index < index_cpp_end)
- {
- curExt = GetBufLine(strFileExt, index)
- curExtLen = strlen(curExt)
- curOpenFileExt = strmid(curOpenFileName, curOpenFileNameLen-curExtLen, curOpenFileNameLen) // 当前打开文件的扩展名
-
- // 调试
- // AppendBufLine(debugBuf, curExt)
- // AppendBufLine(debugBuf, curOpenFileExt)
-
-
- if(curOpenFileExt == curExt) // 匹配成功
- {
- if (index < index_hpp_end)
- isCppFile = 1 // 当前打开文件是头文件
- else
- isCppFile = 2 // 源文件
- break
- }
- index = index + 1
- }// while(index < index_cpp_end)
-
- // 调试
- // AppendBufLine(debugBuf, isCppFile)
-
- index_replace_begin = index_hpp_begin
- index_replace_end = index_hpp_end
-
- if (isCppFile == 1) // 当前打开文件是头文件
- {
- index_replace_begin = index_cpp_begin
- index_replace_end = index_cpp_end
- }
- else if(isCppFile == 2) // 当前打开文件是源文件
- {
- index_replace_begin = index_hpp_begin
- index_replace_end = index_hpp_end
-
- // 调试
- // AppendBufLine(debugBuf, "cpp")
- }
- else // 未知类型
- {
- //CloseBuf(strFileExt) // 关闭缓冲区
-
- //stop
-
- index_replace_begin = 9999
- index_replace_end = index_replace_begin // 下面循环不会执行
- }
-
- index = index_replace_begin
- while(index < index_replace_end)
- {
- destExt = GetBufLine(strFileExt, index)
- destFileName = strmid(curOpenFileName, 0, curOpenFileNameLen-strlen(curOpenFileExt)) // 不包括扩展名,绝对路径
-
- // 尝试当前目标扩展名是否能够打开
- destFilePath = cat(destFileName, destExt) // 文件名(包括扩展名)
-
- hCurOpenBuf = OpenBuf(destFilePath)
- if(hCurOpenBuf != 0)
- {
- SetCurrentBuf(hCurOpenBuf)
- break
- }
-
- // 尝试进行目录替换,看能否打开文件(如何设计:支持多个目录)
- // ...(赞不支持)
-
-
- index = index + 1
- }
- CloseBuf(strFileExt) // 关闭缓冲区
- // 调试
- // AppendBufLine(debugBuf, "finished")
-
- }
3、关闭Base项目,重新打开Source Insight。
4、打开Option -> Key Assignments。在Command栏选中“Macro: switch_cpp_hpp”;点击Assign New Key按钮设置快捷键(Ctrl+·),点击OK,就设定好了。
5、再打开一个项目,试试你刚刚设定的快捷键吧!!!
Source Insight Program Editor遇到问题需要关闭。我们对此引起的不便表示抱歉。 ?
解决:
刚刚安装了source insert之后就如上做法,之后将以前的工程中pro下面全部删除,之后重新建立工程即可。