2009. 12. 7. 16:50

소스인사이트 팁2 : 소스와 같은 이름의 헤더파일을 여는 매크로

아래의 매크로는 C/ C++ 소스를 보는 중 같은 이름의 헤더 파일을 열도록 하는 매크로 입니다.

C++빌더 의 경우 F6키와 같은 동작을 합니다.
이러한 매크로를 작성 하기 위해서는 도움말의 매크로 랭귀지를 살작 참조해가면서 작성하고
매크로 .em파일을 base프로젝트에 추가하여 작성한다음

Option -> Preference -> Symbol Lookups 페이지에 Project symbol path에 base프로젝트를 추가해주고
Menu나 Key Assign으로 해두면 이용 할수 있습니다.

/*====================================================================
Create by sparrow 2005.09.30

Open C Source or Header file.

===================================================================*/
macro OpenSourceHeader()
{
hbuf = GetCurrentBuf()

bufFileName = tolower(GetBufName(hbuf))
pos = strlen(bufFileName)-1
while(bufFileName[pos] != ".")
pos = pos -1

szFileNameOnly = strmid(bufFileName,0,pos)

szFileExt = strmid(bufFileName, pos + 1, strlen(bufFileName))

if (szFileExt =="c" || szFileExt=="cpp" || szFileExt=="cxx" )
{
openbufFileName = cat(szFileNameOnly , ".h")

hopenbuf = OpenBuf(openbufFileName)
if (hopenbuf == hNil)
{
openbufFileName = cat(szFileNameOnly , ".hpp")
hopenbuf = OpenBuf(openbufFileName)
}

if (hopenbuf == hNil)
{
openbufFileName = cat(szFileNameOnly , ".hxx")
hopenbuf = OpenBuf(openbufFileName)
}

if (hopenbuf == hNil)
{
Msg("Cannot Open header file!")
return
}

SetCurrentBuf (hopenbuf)

}
else if (szFileExt=="h" || szFileExt=="hpp" || szFileExt=="hxx")
{

openbufFileName = cat(szFileNameOnly , ".c")

hopenbuf = OpenBuf(openbufFileName)
if (hopenbuf == hNil)
{
openbufFileName = cat(szFileNameOnly , ".cpp")
hopenbuf = OpenBuf(openbufFileName)
}

if (hopenbuf == hNil)
{
openbufFileName = cat(szFileNameOnly , ".cxxx")
hopenbuf = OpenBuf(openbufFileName)
}


if (hopenbuf == hNil)
{
Msg("Cannot Open source file!")
return
}

SetCurrentBuf (hopenbuf)


}

}