2009. 12. 7. 16:58

소스인사이트 팁5 : 오래된 창을 닫아주는 매크로

이매크로는 아래의 코드중에 4라고 세팅된 수만큼의 코드윈도우를 제외하고 모두 닫아 버리는 기능을 합니다.

수천개의 소스를 탐색하고 돌아다니다 보면 자신도 모르게 많은 창을 띄우게 되는데 이중에 가장 최근에 보았던
창을 제외 하고 모두 닫아 버리는 센스 입니다.


/*
// Closes all but the most recently visited windows and files.
// Any dirty files are kept open.
*/
macro CloseOldWindows()
{
var hwnd
var cWnd

// This is the number of recent windows to keep open. You may change
// this constant to suit your needs.
var NumberOfWindowsToKeep; NumberOfWindowsToKeep = 4

hwnd = GetCurrentWnd()
cWnd = 0

// skip the most recently visited windows in the z-order
while (hwnd != hNil && cWnd < NumberOfWindowsToKeep)
{
cWnd = cWnd + 1
hwnd = GetNextWnd(hwnd)
}

// close the remaining windows
while (hwnd != hNil)
{
var hwndNext

hwndNext = GetNextWnd(hwnd)

// only close the window if the file is not edited
if (!IsBufDirty(GetWndBuf(hwnd)))
CloseWnd(hwnd)

hwnd = hwndNext
}

// close all files that are not visible in a window anymore
var cBuf
cBuf = BufListCount()
while (cBuf > 0)
{
var hbuf
cBuf = cBuf - 1
hbuf = BufListItem(cBuf)
if (GetWndHandle(hbuf) == hNil)
CloseBuf(hbuf)
}
}