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、再打开一个项目,试试你刚刚设定的快捷键吧!!!
阅读(14760) | 评论(0) | 转发(0) |