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

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


本文纯属转载,原文地址:http://blog.csdn.net/lizhongkan/article/details/7081412

猜你喜欢

转载自blog.csdn.net/fzu_dianzi/article/details/7245967