让Source Insight的头文件和实现文件快捷键打开的方式

来源:互联网 发布:linux mount作用 编辑:程序博客网 时间:2024/05/16 08:08

    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、再打开一个项目,试试你刚刚设定的快捷键吧!!!