카테고리 없음

소스 인사이트 매크로 - 해당 영역을 주석으로 변경

Alex군 2007. 8. 21. 15:24
Utils.em 파일에 아래 macro 함수를 추가하고 단축키를 지정하면 된다.

//
// Comment the selected block of text using single line comments and indent it
//
macro CommentBlock()
{
    var stime;

   
hbuf
= GetCurrentBuf();
   
hwnd
= GetCurrentWnd();
   
sel = GetWndSel
(hwnd);

   
stime
= GetSysTime(true);
   
iLine = sel
.lnFirst;
   
szLine = "///    alex [" # stime.year # "/" # stime.month # "/" # stime.day
# "] ";
   
InsBufLine(hbuf, iLine
, szLine);
   
iLine = iLine
+1;
    while (
iLine <= sel.lnLast
+1)
    {
       
szLine = GetBufLine(hbuf
, iLine);
       
szLine = cat("//    "
, szLine);
       
PutBufLine(hbuf, iLine
, szLine);
       
iLine = iLine
+ 1;
    }

    if (
sel.lnFirst == sel
.lnLast)
    {
       
tabSize = _tsGetTabSize
() - 1;
       
sel.ichFirst = sel.ichFirst
+ tabSize;
       
sel.ichLim = sel.ichLim
+ tabSize;
    }
   
SetWndSel(hwnd
, sel);
}


//
// Undo the CommentBlock for the selected text.
//
macro UnCommentBlock()
{
   
hbuf
= GetCurrentBuf();
   
hwnd
= GetCurrentWnd();

   
sel = GetWndSel
(hwnd);

   
iLine = sel
.lnFirst;


   
tabSize
= 0;
    while (
iLine <= sel
.lnLast)
    {
       
szLine = GetBufLine(hbuf
, iLine);
       
len = strlen
(szLine);
       
szNewLine
= "";
        if (
len
> 1)
        {
            if (
szLine[0] == "/" && szLine[1
] == "/")
            {
                if (
len
> 2)
                {
                    if (
AsciiFromChar(szLine[2
]) == 9)
                    {
                       
tabSize = _tsGetTabSize
() - 1;
                       
szNewLine = strmid(szLine, 3, strlen
(szLine));
                    }
                }

                if (
szNewLine
== "")
                {
                   
szNewLine = strmid(szLine, 2, strlen
(szLine));
                   
tabSize
= 2;
                }
               
               
PutBufLine(hbuf, iLine
, szNewLine);
            }
        }
       
iLine = iLine
+ 1;
    }

    if (
sel.lnFirst == sel
.lnLast)
    {
       
sel.ichFirst = sel.ichFirst
- tabSize;
       
sel.ichLim = sel.ichLim
- tabSize;
    }

   
SetWndSel(hwnd
, sel);
}