ºí·Ï µé¿©¾²±â´Â ÀÌ¹Ì ÀÔ·ÂµÈ ¹®ÀåÀÇ µé¿©¾²±â¸¦ ÀÏ°ýÀûÀ¸·Î Á¶Á¤ÇÏ´Â ¹æ¹ýÀÌ´Ù. Á¶Á¤ÇÏ°íÀÚ ÇÏ´Â ¹®´ÜÀ» ºí·ÏÀ¸·Î ¼±ÅÃÇسõ°í <Tab>Å°¸¦ ´©¸£¸é ºí·Ï ³»ÀÇ ¸ðµç ¹®´ÜµéÀ» ÇÑ Ä ´õ µé¿©¾²°í <Shift+Tab>À» ´©¸£¸é ÇÑ Ä ³»¾î¾²´Â ±â´ÉÀÌ´Ù. ÆíÁý¿¡ ÀÇÇØ ºí·ÏÀÇ ±¸Á¶°¡ ¹Ù²î¾ú´Ù°Å³ª ÇÒ °æ¿ì ÀÌ ±â´ÉÀ¸·Î ºí·ÏÀ» Á¶Á¤ÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î ´ÙÀ½ ¿ÞÂÊ ¹®ÀåÀ» ¿À¸¥ÂÊó·³ º¯°æÇѴٰųª ¹Ý´ë·Î ¿À¸¥ÂÊ ¹®ÀåÀ» ¿ÞÂÊó·³ º¯°æÇÏ°íÀÚ ÇÒ ¶§ ÀÌ ±â´ÉÀ» »ç¿ëÇÑ´Ù.
if (Á¶°Ç1) { if (Á¶°Ç2) { ¸í·É1; ¸í·É2; ¸í·É3; } } |
if (Á¶°Ç1 && Á¶°Ç2) { ¸í·É1; ¸í·É2; ¸í·É3; } |
º¸´Ù½ÃÇÇ µÎ ¹®ÀåÀº ¿ÏÀüÈ÷ °°Àº ¹®ÀåÀε¥ ¸í·ÉµéÀÌ ¼ÓÇÑ ºí·ÏÀÇ µé¿©¾²±â°¡ ÀÏ°ýÀûÀ¸·Î Á¶Á¤µÇ¾î¾ß ÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. ÀÌ·² ¶§ ¸í·É1~¸í·É3±îÁö ¼±ÅÃÇسõ°í <Tab>À̳ª <Shift+Tab>À» ´©¸£¸é µÈ´Ù. ºñÁÖ¾ó ½ºÆ©µð¿À°¡ ÀÌ ±â´ÉÀ» Áö¿øÇÏ°í ÀÖ°í ¿©·¯ºÐµéµµ ÀÌ¹Ì »ç¿ëÇØ º» ÀûÀÌ ÀÖÀ¸¹Ç·Î ±â´É ÀÚü´Â ½±°Ô ÀÌÇØ°¡ °¥ °ÍÀÌ´Ù.
ÀÌ ±â´ÉÀº ¼Ò½º¿Í °°ÀÌ µé¿©¾²±â·Î ±¸Á¶¸¦ Ç¥ÇöÇÏ´Â ¹®¼¿¡ ƯÈ÷ À¯¿ëÇÏ´Ù. ÇÏÁö¸¸ ¼ø¼öÇÑ ÅؽºÆ®ÀÇ °æ¿ì´Â ¿ÀÈ÷·Á ÀÌ ±â´ÉÀÌ ºÎÀÚ¿¬½º·¯¿ï ¼öµµ ÀÖ´Ù. ¼±Åÿµ¿ªÀÌ ÀÖ´Â »óÅ¿¡¼ ¹®ÀÚ¸¦ ÀÔ·ÂÇÏ´Â µ¿ÀÛÀº ¼±Åÿµ¿ªÀ» ´ëüÇÏ´Â °ÍÀ¸·Î Á¤ÀǵǾî Àִµ¥ <Tab>Å°¿¡ ´ëÇؼ¸¸ Ư¼öÇÑ ¿¹¿Ü¸¦ ÀÎÁ¤ÇÏ´Â °ÍÀ̹ǷΠ¼±Åÿµ¿ªÀ» Áö¿ì°í TabÀ» ÀÔ·ÂÇÒ ¼ö´Â ¾ø°Ô µÈ´Ù. ±×·¡¼ ÀÌ ±â´ÉÀÇ »ç¿ë ¿©ºÎ´Â bBlockIndentWithTab ¿É¼ÇÀ¸·Î ¼±ÅÃÇÒ ¼ö ÀÖµµ·Ï Ç쵂 µðÆúÆ®°ªÀº TRUEÀÌ´Ù.
ºí·Ï µé¿©¾²±â¸¦ ÇÒ ½ÃÁ¡Àº ¼±Åÿµ¿ªÀÌ ÀÖ´Â »óÅ¿¡¼ <Tab>Å°¸¦ ´·¶À» ¶§ÀÌ´Ù. <Tab>Å°¸¦ ÀԷ¹޴ ½ÃÁ¡Àº OnCharÀ̹ǷΠÀÌ ÇÔ¼ö¿¡¼ ºí·Ï µé¿©¾²±â¸¦ ó¸®Ç쵂 Äڵ差ÀÌ ¸¹±â ¶§¹®¿¡ Á÷Á¢ ó¸®ÇÏÁö ¾Ê°í µû·Î ÇÔ¼ö¸¦ ¸¸µé°í OnChar¿¡¼´Â ÀÌ ÇÔ¼ö¸¸ È£ÃâÇÑ´Ù. ÅÇÅ°ÀÔ·Â ºÎºÐ¿¡ ´ÙÀ½ Äڵ带 Ãß°¡ÇÑ´Ù.
void CApiEdit::OnChar(HWND hWnd, TCHAR ch, int cRepeat)
{
....
if (ch==¡®\t¡¯) {
if (bSpaceForTab) {
for (i=0;i<TabWidth;i++) {
szChar[i]=¡® ¡®;
}
szChar[i]=0;
}
if (bBlockIndentWithTab && SelStart != SelEnd) {
BlockIndent((GetKeyState(VK_SHIFT) & 0x8000) != 0);
return;
}
}
BlockIndent ÇÔ¼ö´Â ¼±ÅÃµÈ ºí·ÏÀÇ µé¿©¾²±â¸¦ Á¶Á¤Ç쵂 Àμö·Î Àü´ÞµÈ bUnindent°¡ TRUEÀÌ¸é ³»¾î¾²±â¸¦ ÇÏ°í FALSEÀÌ¸é µé¿©¾²±â¸¦ ÇÑ´Ù. ÀÌ ÀμöÀÇ °ªÀº <Shift>Å°°¡ ´·¯Á® Àִ°¡ ¾Æ´Ñ°¡·Î ½±°Ô °áÁ¤ÇÒ ¼ö ÀÖ´Ù. <Tab>Å°ÀԷ¿¡ ÀÇÇØ ºí·Ï µé¿©¾²±â¸¦ ÇßÀ¸¸é OnChar´Â ´õ ÀÌ»ó <Tab>Å°ÀÔ·ÂÀ» ´Ù·ê ÇÊ¿ä°¡ ¾øÀ¸¹Ç·Î ¸®ÅÏÇØ¾ß ÇÑ´Ù.
BlockIndent ÇÔ¼öÀÇ ÄÚµå´Â ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇÑ´Ù. ±æÀÌ°¡ ªÁö ¾ÊÀº °ÍÀ¸·Î ºÁ¼ ±×´ÙÁö °£´ÜÇÏÁö´Â ¾ÊÀº ¸ð¾çÀÌ´Ù. Áö±Ý±îÁö ÀÛ¼ºÇß´ø ´ë¼Ò¹®ÀÚ º¯È¯, °ø¹é°ú ÅÇÀÇ º¯È¯ ÄÚµå¿Í ÀüüÀûÀÎ ±¸Á¶´Â ºñ½ÁÇÏÁö¸¸ °í·ÁÇØ¾ß ÇÒ °ÍµéÀÌ Á» ´õ ¸¹´Ù.
void CApiEdit::BlockIndent(BOOL bUnindent)
{
int SelFirst, SelSecond;
int st,ed;
int pr1,pr2,pc;
int Line;
TCHAR *src,*dest;
TCHAR *s,*d;
int i;
int nTab;
TCHAR szIndent[1024];
int nDec, nDiff;
BOOL bFirstPara=TRUE;
if (SelStart==SelEnd) {
SelFirst=SelSecond=off;
} else {
SelFirst=min(SelStart,SelEnd);
SelSecond=max(SelStart,SelEnd);
}
GetParaFromOff(SelFirst,pr1,pc);
Line=GetParaFirstLine(pr1);
st=pLine[Line].Start;
GetParaFromOff(SelSecond,pr2,pc);
Line=GetParaFirstLine(pr2);
if (SelSecond==pLine[Line].Start && SelStart!=SelEnd) {
pr2--;
}
Line=GetParaLastLine(pr2);
ed=pLine[Line].End;
src=(TCHAR *)malloc(ed-st+1);
dest=(TCHAR *)malloc(ed-st+1+(pr2-pr1+1)*TabWidth);
lstrcpyn(src,buf+st,ed-st+1);
s=src;
d=dest;
nDiff=0;
if (!bUnindent) {
for (;;) {
if (!IsParaEmpty(s)) {
MakeIndentString(1,d,4096);
d=d+lstrlen(d);
nDiff++;
}
while (*s!=¡®\r¡¯ && *s != 0) {
*d++=*s++;
}
if (*s==0) {
*d=*s;
break;
} else {
*d++=*s++;
*d++=*s++;
}
}
if (SelFirst!=st) {
SelFirst+=(bSpaceForTab ? TabWidth:1);
}
SelSecond+=(bSpaceForTab ? TabWidth:1)*nDiff;
} else {
for (;;) {
nTab=GetIndentLevel(s)/TabWidth;
nTab=max(0,nTab-1);
MakeIndentString(nTab, szIndent,4096);
nDec=0;
while (AeIsWhiteSpace(*s)) {
s++;
nDec++;
}
for (i=0;i<lstrlen(szIndent);i++) {
*d++=szIndent[i];
}
nDiff+=(nDec-lstrlen(szIndent));
if (bFirstPara) {
SelFirst-=nDiff;
SelFirst=max(SelFirst,st);
bFirstPara=FALSE;
}
while (*s!=¡®\r¡¯ && *s != 0) {
*d++=*s++;
}
if (*s==0) {
*d=*s;
break;
} else {
*d++=*s++;
*d++=*s++;
}
}
SelSecond-=nDiff;
}
StartUndoGroup();
Delete(st,lstrlen(src));
Insert(st,dest);
EndUndoGroup();
if (SelStart == SelEnd) {
off=SelStart=SelEnd=SelSecond;
} else if (SelStart < SelEnd) {
off=SelEnd=SelSecond;
SelStart=SelFirst;
} else {
off=SelEnd=SelFirst;
SelStart=SelSecond;
}
Invalidate(st);
SetCaret();
free(src);
free(dest);
}
´Ù¸¥ º¯È¯ ÇÔ¼öµé°ú ¸¶Âù°¡Áö·Î ¸ÕÀú º¯È¯ÇÒ ´ë»óÀ» °í¸£´Âµ¥ ¼±Åÿµ¿ªÀÌ ÀÖÀ» ¶§´Â ¼±Åÿµ¿ªÀÌ °ÉÃÄ ÀÖ´Â ¹®´ÜµéÀÌ ±× ´ë»óÀÌ µÇ¸ç ¼±Åÿµ¿ªÀÌ ¾øÀ¸¸é ÇöÀç ij·µÀÌ ÀÖ´Â ¹®´Ü¸¸ ´ë»óÀÌ µÈ´Ù. ¿Ö ¼±Åÿµ¿ªÀÌ ¾øÀ» ¶§ÀÇ Ã³¸®¸¦ ÇÒ ÇÊ¿ä°¡ ÀÖÀ»±î? OnChar¿¡¼ ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§ ¼±Åÿµ¿ªÀÌ ÀÖÀ½À» ÀÌ¹Ì È®ÀÎÇ߱⠶§¹®¿¡ ÀÌ·± °æ¿ì´Â Àý´ë·Î ¾ø´Ù. ¼±Åÿµ¿ªÀÌ ¾ø´Â »óÅ¿¡¼ <Tab>Å°ÀÔ·ÂÀº ºí·Ï µé¿©¾²±â ¸í·ÉÀÌ ¾Æ´Ï¶ó ´Ü¼øÇÑ Åǹ®ÀÚÀԷ¿¡ ºÒ°úÇϹǷΠ¸ÕÀú ¼±ÅÃÀ» ÇÏÁö ¾ÊÀ¸¸é ºí·Ï µé¿©¾²±â¸¦ ÇÒ ¼ö ¾ø´Ù. ÀÌ°ÍÀº ApiEdit ÄÁÆ®·Ñ ¼öÁØ¿¡¼´Â ºÐ¸íÇÑ »ç½ÇÀÌ´Ù.
±×·¯³ª È£½ºÆ®ÀÇ ÀÔÀå¿¡¼´Â ±×·¸Áö°¡ ¾Ê´Ù. È£½ºÆ®´Â ºí·Ï µé¿©¾²±â¸¦ <Tab>Å°ÀÔ·ÂÀ¸·Î ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ¸Þ´º³ª ¾×¼¿·¯·¹ÀÌÅÍ·Î ÇÑ´Ù. ¼±Åÿµ¿ªÀÌ ÀÖ°Ç ¾ø°Ç »ó°ü¾øÀÌ ¸Þ´º·Î ÀÌ ¸í·ÉÀ» Àü´ÞÇÒ ¼ö ÀÖÀ¸¸ç ±×·¡¼ BlockIndent ÇÔ¼ö´Â ¼±Åÿµ¿ªÀÌ ¾øÀ» ¶§ ÇöÀç ¹®´Ü¿¡ ´ëÇؼ ºí·Ï µé¿©¾²±â¸¦ ó¸®ÇÒ ¼ö ÀÖ¾î¾ß ÇÑ´Ù. ¸¸¾à ÀÌ »óȲÀÌ Àß ÀÌÇØ°¡ ¾È °£´Ù¸é OnChar¿¡¼ ÀÌ ÇÔ¼ö¸¦ ºÎ¸¦ ¶§¿Í È£½ºÆ®°¡ ÀÌ ÇÔ¼ö¸¦ ºÎ¸¦ ¶§ÀÇ Â÷ÀÌÁ¡¿¡ ´ëÇØ »ý°¢Çغ¸ÀÚ. OnChar´Â <Tab>Å°°¡ ÀԷµǾúÀ» ¶§ ÀÌ°ÍÀÌ Åǹ®ÀÚÀÔ·ÂÀÎÁö ºí·Ï µé¿©¾²±âÀÎÁö¸¦ ¼±Åÿµ¿ªÀÇ À¯¹«·Î ±¸ºÐÇØ¾ß ÇÏÁö¸¸ È£½ºÆ®´Â ºí·Ï µé¿©¾²±â¶ó´Â ¸í½ÃÀûÀÎ ¸í·ÉÀ» °¡Áö°í ÀÖÀ¸¹Ç·Î ±×·² ÇÊ¿ä°¡ ¾ø´Â °ÍÀÌ´Ù.
º¯È¯ ´ë»óÀº ¿ÀÇÁ¼ÂÀÇ ¹üÀ§·Î Á¶»çµÇ´Âµ¥ ÀÌ ¹üÀ§´Â ½ÇÁ¦ ¼±Åÿµ¿ªº¸´Ù ´õ È®´ëµÈ´Ù. ºí·Ï µé¿©¾²±âÀÇ Á¶Á¤ ´ë»óÀº ¼±Åà ½ÃÀÛÁ¡ÀÇ ¹®´Ü ¼±µÎ¿¡¼ºÎÅÍ ¼±Åà ³¡Á¡ÀÇ ¹®´Ü ³¡±îÁöÀ̸ç ÀÌ ¹üÀ§ÀÇ ¸ðµç ¹®ÀÚ¿ÀÌ Á¶Á¤ ´ë»óÀÌ´Ù. ´ÙÀ½ ±×¸²À» º¸ÀÚ. °¢ ÁÙÀº ÀÚµ¿°³ÇàµÈ °ÍÀÌ ¾Æ´Ï¶ó °³ÇàÄÚµå·Î ºÐ¸®µÈ ¹®´ÜÀÌ´Ù.
¡®º¸´Ù¡¯~¡®½ÍÀ¸¸é¡¯±îÁö ¼±ÅõǾî Àִµ¥ ¸¸¾à º¯È¯ ´ë»óÀ» ¼±Åÿµ¿ª¿¡¸¸ ±¹ÇÑÇØ ¹ö¸°´Ù¸é ¡®½ÇÁ¦¡¯ ¾Õ¿¡´Â µé¿©¾²±â°¡ µÇÁö ¾ÊÀ» °ÍÀÌ´Ù. »ç¿ëÀÚ°¡ Àú·± ¸ð¾çÀ¸·Î ¼±ÅÃÇسõÀº °ÍÀº ¼±Åÿµ¿ªÀÌ °ÉÄ£ ¹®´Ü ¸ðµÎ¿¡ ´ëÇØ ºí·Ï µé¿©¾²±â¸¦ Ç϶ó´Â ÀÇ»ç Ç¥ÇöÀ» ÇÑ °ÍÀ¸·Î °£ÁÖÇØ¾ß ÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é »ç¿ëÀÚ´Â ºí·Ï µé¿©¾²±âÇÒ ¹®´Ü Àüü¸¦ ¿ÏÀüÈ÷ Á¤È®ÇÏ°Ô ´Ù ¼±ÅÃÇØ¾ß Çϴµ¥ ÀÌ·¸°Ô ÇÏÀÚ¸é ¹«Ã´ ÇÇ°ïÇØÁø´Ù. »ç¿ëÀÚ°¡ ´ëÃæ ¼±ÅÃÇØ ³öµµ ±× Àǵµ¸¦ Á¦´ë·Î ÆľÇÇϱâ À§ÇØ ¼±Åÿµ¿ªÀ» È®´ëÇÏ¿© º¯°æ ´ë»óÀ» ¼±Á¤Çߴµ¥ ÀÌ´Â »ç¿ëÀÚ¿¡ ´ëÇÑ ÀÏÁ¾ÀÇ ¼ºñ½º´Ù.
¼±ÅÃÀÇ ³¡ÀÌ ¹®´Ü ¼±µÎÀÏ ¶§´Â ±× ¹®´ÜÀº º¯°æ ´ë»ó¿¡¼ Á¦¿ÜµÈ´Ù. ¾ÕÀÇ ±×¸²¿¡¼ ¼¼ ¹ø° ¹®´Ü ¡®ÀÌ ±×¸²À»\r\n¡¯±îÁö ¼±ÅõǾî ÀÖ´Ù°í ÇÒ ¶§ SelEnd´Â ´ÙÀ½ ¹®´ÜÀÇ Ã¹ ±ÛÀÚÀÎ ¡®Àß¡¯À» °¡¸®Å°°í ÀÖÀ» °ÍÀÌ´Ù. À̶§ ¸¶Áö¸· ¹®´ÜÀº º¯È¯ ´ë»ó¿¡¼ Á¦¿ÜµÇ´Â °ÍÀÌ ¿Ç´Ù. ¿Ö³ÄÇÏ¸é ¹üÀ§ÀÇ ¹ýÄ¢¿¡ µû¶ó ¼±ÅÃÀÇ ³¡Á¡Àº ¼±Åÿµ¿ª¿¡ Æ÷ÇÔµÇÁö ¾Ê±â ¶§¹®ÀÌ´Ù. ´Ü, ¼±Åÿµ¿ªÀÌ ¾Æ¿¹ ¾øÀ¸¸é ÇÑ ¹®´Ü¿¡ ´ëÇؼ¸¸ º¯È¯À» ÇÏ´Â °ÍÀ̱⠶§¹®¿¡ ¼³»ç ¹®´Ü ¼±µÎ¶óµµ Æ÷ÇÔ½ÃÄÑ¾ß ÇÑ´Ù.
º¯È¯ ´ë»óÀ» ¼±Á¤ÇÏ´Â Á¶°ÇµéÀÌ Âü º¹ÀâÇѵ¥ ÀÌ·± Á¶°ÇÀº ¼³¸íÀ» Àд °Íº¸´Ù Äڵ带 Àаí ÀÌÇØÇÏ´Â °ÍÀÌ ´õ ºü¸¦ °Í °°´Ù. ´ë»ó ¼±Á¤ÀÇ °á°ú´Â st, ed º¯¼ö¿¡ ¿ÀÇÁ¼ÂÀ¸·Î °è»êµÇ¸ç ÀÌ ¿ÀÇÁ¼Â ¹üÀ§¿¡ ÀÖ´Â ¸ðµç ¹®ÀÚ¿ÀÌ º¯È¯ ´ë»óÀÌ´Ù. ºí·Ï µé¿©¾²±â¸¦ ÇÏ¸é º¯È¯ Àü°ú´Â ±æÀÌ°¡ ´Þ¶óÁö¹Ç·Î src, dest µÎ °³ÀÇ ¹öÆÛ¸¦ ÁغñÇß´Ù. src¿¡´Â ¿øº» ¹®ÀÚ¿À» º¹»çÇßÀ¸¸ç dest´Â º¯È¯ ÈÄÀÇ ±æÀ̸¦ °í·ÁÇÏ¿© ÃæºÐÇÑ ±æÀ̸¦ ÇÒ´çÇß´Ù. º¯È¯ ÈÄÀÇ ÃÖ´ë ±æÀÌ´Â ¿øº» ±æÀÌ+¹®´Ü¼ö*ÅÇÆøÀ¸·Î °è»êµÈ´Ù. bSpaceForTabÀÌ TRUEÀÏ °æ¿ì Åǹ®ÀÚ ´ë½Å °ø¹éÀÌ »ðÀԵǹǷΠ°¢ ¹®´Ü¸¶´Ù ÃÖ´ë TabWidth¸¸Å ´Ã¾î³¯ ¼ö ÀÖ´Ù.
º¯È¯ ´ë»óÀÌ ÁغñµÇ¸é bUnindent Àμö°ª¿¡ µû¶ó º¯È¯À» ½ÃÀÛÇÑ´Ù. ¸ÕÀú ºí·Ï µé¿©¾²±â Äڵ带 º¸ÀÚ. srcÀÇ Ã³À½ºÎÅÍ °¢ ¹®´ÜÀÇ ¼±µÎ¿¡ ÇÑ Ä¾¿ ´õ µé¿©¾²±â¸¦ ÇÏ¿© dest·Î º¹»çÇϱ⸦ srcÀÇ ³¡±îÁö ¹Ýº¹ÇÏ¸é µÈ´Ù. À̶§ ºó ¹®´Ü¿¡´Â µé¿©¾²±â¸¦ ÇÒ ÇÊ¿ä°¡ ¾ø´Ù. µé¿©¾²±â¸¦ ÇØ ºÁ¾ß ºÒÇÊ¿äÇÑ °ø¹é¸¸ Ãß°¡µÉ »Ó ´«¿¡ º¸ÀÌÁöµµ ¾Ê´Â´Ù.
º¯È¯Áß¿¡ nDiff º¯¼ö´Â µé¿©¾²±âµÈ Ƚ¼ö¸¦ °è»êÇϴµ¥ µé¿©¾²±â¸¦ ÇÒ ¶§´Â ¹®ÀÚ°¡ »ðÀԵǹǷΠnDiff°¡ ´Ã¾î³ª±â¸¸ ÇÒ °ÍÀÌ´Ù. º¯È¯ ÈÄ¿¡ nDiff´Â º¯È¯ ´ë»ó ¹®´Ü °³¼ö - ºó ¹®´Ü °³¼ö°¡ µÉ °ÍÀÌ´Ù. µé¿©¾²±â°¡ ¿Ï·áµÈ ÈÄ ¼±Åà ½ÃÀÛÁ¡Àº µé¿©¾²±âµÈ¸¸Å À̵¿½ÃÅ°°í ¼±Åà ³¡Á¡Àº ÃÑ »ðÀÔµÈ ¹ÙÀÌÆ® ¼ö¸¸Å µÚ·Î À̵¿½ÃÄÑ µé¿©¾²±â¸¦ ÇÑ ÈÄ¿¡µµ ¼±Åÿµ¿ªÀÌ ¿ø·¡ÀÇ ¹®ÀÚ¿À» °¡¸®Å°µµ·Ï Çß´Ù.
´Ü, ¼±Åà ½ÃÀÛÁ¡°ú º¯È¯ ½ÃÀÛÁ¡ÀÌ °°À» °æ¿ì´Â ¼±Åà ½ÃÀÛÁ¡À» ±×´ë·Î µÎ¾î Ãß°¡µÈ µé¿©¾²±â ¹®ÀÚ¿±îÁö °°ÀÌ ¼±ÅÃÇϵµ·Ï ÇÑ´Ù. À§ ±×¸²¿¡¼ ¸¸¾à ifºÎÅÍ ¼±ÅõǾî ÀÖ¾ú´Ù¸é µé¿©¾²±â¿¡ ÀÇÇØ »ðÀÔµÈ Åǹ®ÀÚµµ °°ÀÌ ¼±ÅÃÇÑ´Ù. ÀÌ·¸°Ô Çϴ Ưº°ÇÑ ÀÌÀ¯´Â ¾ø°í ±×·¸°Ô ÇÏ´Â °ÍÀÌ º¸±â¿¡ ÁÁ±â ¶§¹®ÀÌ´Ù.
´ÙÀ½Àº ³»¾î¾²±â Äڵ带 º¸ÀÚ. µé¿©¾²±â¿¡ ºñÇؼ´Â Á¶±Ý ´õ º¹ÀâÇѵ¥ ù ¹®´ÜºÎÅÍ ¿øº»ÀÇ µé¿©¾²±â¸¦ ÅÇ ´ÜÀ§·Î Á¶»çÇÑ ÈÄ ÀÌ °ªÀ» 1»©¼ µé¿©¾²±â ¹®ÀÚ¿À» ¸¸µé°í dest·Î Ãâ·ÂÇϱ⸦ ¸¶Áö¸· ¹®´Ü±îÁö ¹Ýº¹ÇÏ¸é µÈ´Ù. ´Ü, ¿øº» ¹®´ÜÀÌ µé¿©¾²±âµÇ¾î ÀÖÁö ¾Ê´Ù¸é ´õ ÀÌ»ó ³»¾î¾²±â¸¦ ÇÒ ÇÊ¿ä°¡ ¾ø´Ù.
³»¾î¾²±â¸¦ ÇÒ ¶§´Â ¿øº» ¹®ÀÚ¿º¸´Ù °á°ú ¹®ÀÚ¿ÀÌ º¸Åë ª¾ÆÁö¹Ç·Î nDiff´Â °¨¼ÒµÈ ¹ÙÀÌÆ® ¼ö¸¦ °è»êÇÑ´Ù. ÇÏÁö¸¸ ¾ÆÁÖ Æ¯¼öÇÑ °æ¿ì °á°ú ¹®ÀÚ¿ÀÌ ´õ ±æ¾îÁú ¼öµµ ÀÖ´Ù. ¾Æ´Ï! ¹®´Ü ¾ÕÂÊ¿¡ ÀÖ´Â µé¿©¾²±â ¹®ÀÚ¿À» ÁÙ¿© ³ª°¡´Âµ¥ ¾î¶»°Ô °á°ú ¹®ÀÚ¿ÀÌ ´õ ´Ã¾î³¯ ¼ö ÀÖ´Ù´Â ¸»Àΰ¡? ÀÌ·± ±Ã±ÝÁõÀ» °¡Áö´Â °ÍÀÌ ´ç¿¬ÇÒ °ÍÀÌ´Ù. ¾Æ·¡ ¼³¸íÀ» Àбâ Àü¿¡ ¾î°¼ ±×·±Áö Àç¹ÌÀÖ´Â ÄûÁ Ǭ´Ù´Â ±âºÐÀ¸·Î 2ºÐ¸¸ °í¹ÎÇغ¸¸é ±×·² ¼öµµ ÀÖ´Ù´Â »ý°¢ÀÌ µé °ÍÀÌ´Ù.
¿øº» ¹®ÀÚ¿¿¡ µÎ °³ÀÇ ÅÇÀÌ ÀÖÀ» ¶§ ³»¾î¾²±â¸¦ Çϸé ÇϳªÀÇ ÅÇÀ¸·Î ÁÙ¾îµé °ÍÀÌ´Ù. ÇÏÁö¸¸ bSpaceForTabÀÌ TRUEÀÏ °æ¿ì µÎ °³ÀÇ ÅÇÀÌ ³× °³ÀÇ °ø¹é ¹®ÀÚ·Î ¹Ù²î°Ô µÇ´Âµ¥ À̶§´Â °á°ú ¹®ÀÚ¿ÀÌ ¿øº» ¹®ÀÚ¿º¸´Ù ´õ ±æ¾îÁø´Ù. ¼±ÅÃÀÇ ½ÃÀÛÁ¡Àº ù ÁÙÀÌ °¨¼ÒµÈ ¸¸Å °¨¼ÒÇ쵂 ´Ü ¹®´ÜÀÇ Ã³À½º¸´Ù ´õ ¾ÕÂÊÀ¸·Î À̵¿ÇÒ ¼ö´Â ¾ø´Ù. ¼±ÅÃÀÇ ³¡Á¡Àº nDiff¸¸Å °¨¼Ò½ÃÄÑÁÖ¸é µÈ´Ù.
º¯È¯ÀÌ ³¡³ ÈÄ ¿øº» ¹®ÀÚ¿À» »èÁ¦ÇÏ°í °á°ú ¹®ÀÚ¿À» »ðÀÔÇÏ¿© º¯È¯ °á°ú¸¦ ¹®¼¿¡ ¹Ý¿µÇÑ´Ù. ¹°·Ð µÎ µ¿ÀÛÀº ÇϳªÀÇ ÆíÁý ±×·ìÀ¸·Î ¹¾î¾ß ÇÑ´Ù. ÀÌÁ¦ ºí·ÏÀ» ¼±ÅÃÇسõ°í <Tab>, <Shift+Tab>À» ´©¸£¸é ºí·Ï µé¿©¾²±â¸¦ ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. È£½ºÆ®¿¡¼µµ ÀÌ ±â´ÉÀ» È£ÃâÇÒ ¼ö ÀÖµµ·Ï ¸Þ´º ¸í·ÉÀ» ó¸®ÇÑ´Ù.
void OnCommand(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
....
case IDM_EDIT_INDENT:
pSi->Ae.BlockIndent(FALSE);
break;
case IDM_EDIT_UNINDENT:
pSi->Ae.BlockIndent(TRUE);
break;
È£½ºÆ®¿¡¼ ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§´Â ¼±Åÿµ¿ªÀÌ ÀÖ´ÂÁö ¾ø´ÂÁö Á¡°ËÇÒ ÇÊ¿ä°¡ ¾ø´Ù. ¼±Åÿµ¿ªÀÌ ¾øÀ¸¸é ij·µ À§Ä¡ÀÇ ¹®´Ü¿¡ ´ëÇؼ¸¸ µé¿©¾²±â ³»¾î¾²±â¸¦ ÇÑ´Ù. ÀÌ µÎ ¸í·ÉÀº ÄÁÆ®·ÑÀÌ <Tab>Å°ÀÔ·ÂÀ» ó¸®Çϱ⠶§¹®¿¡ º°µµÀÇ ¾×¼¿·¯·¹ÀÌÅ͸¦ Á¤ÀÇÇÏÁö ¾Ê¾Ò´Ù.