´Ù. ºí·Ï µé¿©¾²±â

ºí·Ï µé¿©¾²±â´Â ÀÌ¹Ì ÀÔ·ÂµÈ ¹®ÀåÀÇ µé¿©¾²±â¸¦ ÀÏ°ýÀûÀ¸·Î Á¶Á¤ÇÏ´Â ¹æ¹ýÀÌ´Ù. Á¶Á¤ÇÏ°íÀÚ ÇÏ´Â ¹®´ÜÀ» ºí·ÏÀ¸·Î ¼±ÅÃÇسõ°í <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>Å°ÀÔ·ÂÀ» ó¸®Çϱ⠶§¹®¿¡ º°µµÀÇ ¾×¼¿·¯·¹ÀÌÅ͸¦ Á¤ÀÇÇÏÁö ¾Ê¾Ò´Ù.