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);
}