±¸¹® »ö»ó

¼Õ»ó, ¼ö¸® ¹× Á¶Á¤ ¸ðµ¨À» »ç¿ëÇÏ¿© ±¸¹® »ö»óÀÌ Ç÷§Æû ÅØ½ºÆ® Ç÷¹ÀÓ¿öÅ©¿¡ Á¦°øµË´Ï´Ù.  ¹®¼­¿¡ °¢ º¯°æÀÌ Àû¿ëµÈ °æ¿ì ÇÁ¸®Á¨Å×ÀÌ¼Ç Á¶Á¤ÀÚ´Â ¹«È¿È­µÉ ºñÁÖ¾ó ÇÁ¸®Á¨Å×À̼ÇÀÇ ¿µ¿ª ¹× ÀÌ ¿µ¿ªÀ» ¼ö¸®ÇÏ´Â ¹æ¹ýÀ» ÆÇº°ÇÕ´Ï´Ù.  ¹®¼­ÀÇ ´Ù¸¥ ÄÁÅÙÃ÷ À¯Çü¿¡ ¼­·Î ´Ù¸¥ °èȹÀÌ »ç¿ëµÉ ¼ö ÀÖ½À´Ï´Ù.

±¸¹® »ö»ó ±¸Çö(¹× ÇÁ¸®Á¨Å×ÀÌ¼Ç Á¶Á¤ÀÚ¸¦ »ç¿ëÇÏ¿© À̸¦ ¼öÇà)Àº ¼±ÅÃÀûÀÔ´Ï´Ù.  ±âº»ÀûÀ¸·Î SourceViewerConfigurationÀº ƯÁ¤ ÆíÁý±â¿¡ »ç¿ëµÈ ¹®¼­ ¸ðµ¨À» ¸ð¸£°í ±¸¹® °­Á¶Ç¥½Ã¿¡ ´ëÇÑ ÀÏ¹Ý ÀÛµ¿ÀÌ ¾øÀ¸¹Ç·Î ÇÁ¸®Á¨Å×ÀÌ¼Ç Á¶Á¤ÀÚ¸¦ ¼³Ä¡ÇÏÁö ¾Ê½À´Ï´Ù.   

±¸¹® °­Á¶Ç¥½Ã ±¸Çö ½Ã Á¶Á¤ Ŭ·¡½º¸¦ »ç¿ëÇÏ·Á¸é ÆíÁý±â ¼Ò½º Ç¥½Ã±â ±¸¼ºÀº ÇÁ¸®Á¨Å×ÀÌ¼Ç Á¶Á¤ÀÚ¸¦ Á¤ÀÇÇϵµ·Ï ±¸¼ºµÇ¾î¾ß ÇÕ´Ï´Ù.  ÆíÁý±âÀÇ ÇÁ¸®Á¨Å×ÀÌ¼Ç Á¶Á¤ÀÚ°¡ Á¤ÀǵǴ ¹æ¹ýÀ» È®ÀÎÇϱâ À§ÇØ ´Ù½Ã JavaSourceViewerConfiguration¿¡¼­ ½ÃÀÛÇÕ´Ï´Ù.

public IPresentationReconciler getPresentationReconciler(ISourceViewer sourceViewer) {

	PresentationReconciler reconciler= new PresentationReconciler();
	...
	return reconciler;
}

ÇÁ¸®Á¨Å×ÀÌ¼Ç Á¶Á¤ÀÚ°¡ ¼öÇàÇÒ ³»¿ëÀ» ÀÌÇØÇÏ·Á¸é ¿ì¼± ¼Õ»ó, ¼ö¸® ¹× Á¶Á¤ÀÇ °³³äÀ» »ìÆìº¸¾Æ¾ß ÇÕ´Ï´Ù.

¼Õ»ó, ¼ö¸® ¹× Á¶Á¤

»ç¿ëÀÚ°¡ ÆíÁý±âÀÇ ÅØ½ºÆ® ¼öÁ¤ÇÏ´Â °æ¿ì º¯°æ»çÇ×À» Ç¥½ÃÇÏ·Á¸é ÆíÁý±â ÆÄÆ®¸¦ ´Ù½Ã Ç¥½ÃÇØ¾ß ÇÕ´Ï´Ù.  ´Ù½Ã Ç¥½ÃÇÒ ÅØ½ºÆ® °è»êÀº ¼Õ»ó °è»êÀ¸·Î ¾Ë·ÁÁ® ÀÖ½À´Ï´Ù.  ±¸¹® »ö»óÀÌ °ü·ÃµÈ °æ¿ì ´ÜÀÏ ¹®ÀÚÀÇ Á¸Àç ¿©ºÎ°¡ ÁÖº¯ÀÇ ÅØ½ºÆ® »ö»óÀ» º¯°æÇÒ ¼ö ÀÖÀ¸¹Ç·Î ÆíÁý Á¶ÀÛ¿¡ ÀÇÇÑ ¼Õ»ó Á¤µµ´Â ´õ¿í È®´ëµË´Ï´Ù.   

¼Õ»óÀÚ(IPresentationDamager)´Â ¹®¼­ º¯°æÀ¸·Î ÀÎÇØ ´Ù½Ã ºôµåÇØ¾ß ÇÒ ¹®¼­ÀÇ ÇÁ¸®Á¨Å×ÀÌ¼Ç ¿µ¿ªÀ» ÆÇº°ÇÕ´Ï´Ù. ÇÁ¸®Á¨Å×ÀÌ¼Ç ¼Õ»óÀڴ ƯÁ¤ ¹®¼­ ÄÁÅÙÃ÷ À¯Çü(¶Ç´Â ¿µ¿ª)¿¡ ƯÁ¤ÇÑ °ÍÀ¸·Î °¡Á¤ÇÕ´Ï´Ù. ÇÁ¸®Á¨Å×ÀÌ¼Ç ¼Õ»óÀÚ´Â ÇÁ¸®Á¨Å×ÀÌ¼Ç ¼ö¸®ÀÚ(IPresentationRepairer)¿¡ ¿Ã¹Ù¸¥ ÀÔ·ÂÀÎ ¼Õ»ó ¿µ¿ªÀ» ¸®ÅÏÇÒ ¼ö ÀÖ¾î¾ß ÇÕ´Ï´Ù.  ¼ö¸®Àڴ ƯÁ¤ ÄÁÅÙÃ÷ À¯Çü¿¡ ÇÊ¿äÇÑ ¼ö¸®¸¦ Á¦´ë·Î ¼³¸íÇÒ ¼ö ÀÖµµ·Ï ¼Õ»ó ¿µ¿ª¿¡¼­ ÇÊ¿äÇÑ ¸ðµç Á¤º¸¸¦ ¾òÀ» ¼ö ÀÖ¾î¾ß ÇÕ´Ï´Ù.

Á¶Á¤Àº ÆíÁý±â¿¡¼­ º¯°æÀÌ ÀÛ¼ºµÉ ¶§ ¹®¼­ÀÇ ÇÁ¸®Á¨Å×À̼ÇÀ» À¯Áöº¸¼öÇÏ´Â Àüü ÇÁ·Î¼¼½º¸¦ ¼³¸íÇÕ´Ï´Ù.  ÇÁ¸®Á¨Å×ÀÌ¼Ç Á¶Á¤ÀÚ(IPresentationReconciler)´Â ¿¬°üµÈ Ç¥½Ã±â¸¦ ÅëÇØ ÅØ½ºÆ®ÀÇ º¯°æ»çÇ×À» ¸ð´ÏÅÍÇÕ´Ï´Ù.  ÇÁ¸®Á¨Å×ÀÌ¼Ç Á¶Á¤ÀÚ´Â º¯°æÀ¸·Î ¿µÇâÀ» ¹ÞÀº ÄÁÅÙÃ÷ À¯ÇüÀ» ÆÇº°ÇÏ´Â µ¥ ¹®¼­ÀÇ ¿µ¿ªÀ» »ç¿ëÇÏ¸ç ¿µÇâÀ» ¹ÞÀº ÄÁÅÙÃ÷ À¯Çü¿¡ ÀûÀýÇÑ ¼Õ»óÀÚ¸¦ ¾Ë¸³´Ï´Ù.  ÀÏ´Ü ¼Õ»óÀÌ °è»êµÇ¸é ÀÌ °ªÀº ±âº» ÄÁÅÙÆ®¿Í µ¿±âÈ­ÇÏ¿© Á¦ÀÚ¸®·Î µ¹·Á ³õÀ» ¼ö ÀÖµµ·Ï Ç¥½Ã±â¿¡ Àû¿ëµÇ´Â ¼ö¸® ¼³¸íÀ» ±¸¼ºÇÒ ÀûÀýÇÑ ¼ö¸®ÀÚ¿¡°Ô Àü´ÞµË´Ï´Ù.  

org.eclipse.jface.text.reconcilerÀÇ Å¬·¡½º´Â ¹®¼­ÀÇ ¿ÜºÎ Á¶ÀÛ°ú ¹®¼­ ¸ðµ¨À» µ¿±âÈ­ÇÒ ¼ö ÀÖµµ·Ï Ãß°¡ Áö¿ø Ŭ·¡½º¸¦ Á¤ÀÇÇÕ´Ï´Ù.

ÇÁ¸®Á¨Å×ÀÌ¼Ç Á¶Á¤ÀÚ¿¡´Â ¹®¼­¿¡ ÀÖ´Â °¢ ÄÁÅÙÃ÷ À¯Çü¿¡ ´ëÇÑ ¼ö¸®ÀÚ ¹× ¼Õ»óÀÚ ½ÖÀÌ Á¦°øµÇ¾î¾ß ÇÕ´Ï´Ù.  ÇÁ¸®Á¨Å×ÀÌ¼Ç Á¶Á¤ÀÚ¿¡ ´ëÇÑ ÀûÀýÇÑ ±¸ÇöÀ» ÆÇº°ÇÏ´Â °ÍÀº °¢ ÆíÁý±â¿¡ ´Þ·Á ÀÖ½À´Ï´Ù.  ±×·¯³ª Ç÷§ÆûÀº ¼Õ»óÀ» °è»êÇÏ°í ¼ö¸®ÇÒ ¼ö ÀÖµµ·Ï org.eclipse.jface.text.rules¿¡ ±ÔÄ¢ ±â¹Ý ¹®¼­ ½ºÄ³³Ê¿¡ ´ëÇÑ Áö¿øÀ» Á¦°øÇÕ´Ï´Ù.  ±âº» ¼Õ»óÀÚ ¹× ¼ö¸®ÀÚ´Â ÀÌ ÆÐŰÁö¿¡¼­ Á¤Àǵ˴ϴÙ.  ±âº» ¼Õ»óÀÚ¿Í ¼ö¸®ÀÚ´Â ¹®¼­ÀÇ ½ºÄ³´× ±ÔÄ¢À» Á¤ÀÇÇÏ¿© ±¸¹® »ö»óÀ» ±¸ÇöÇÒ ¼ö ÀÖµµ·Ï org.eclipse.jface.text.presentation¿¡¼­ Ç¥ÁØ Á¶Á¤ÀÚ¿Í ÇÔ²² »ç¿ëµÉ ¼ö ÀÖ½À´Ï´Ù.

±ÔÄ¢ ±â¹Ý Á¶Á¤

ÀÌÁ¦ ¿¹Á¦ ÇÁ¸®Á¨Å×ÀÌ¼Ç Á¶Á¤ÀÚ ÀÛ¼º ½Ã ¼¼ºÎ»çÇ×À» »ìÆìº¸±â¿¡ ÃæºÐÇÑ Áö½ÄÀ» °®Ãß¾ú½À´Ï´Ù.  Java ÆíÁý±â ¿¹Á¦°¡ Javadoc, º¹¼öÇà ÁÖ¼® µîÀ» Ç¥½ÃÇÏ´Â ÄÁÅÙÃ÷ À¯ÇüÀ¸·Î ¹®¼­¸¦ ÆÄƼ¼ÇÇÏ´Â JavaPartitionScanner¸¦ ±¸ÇöÇÑ´Ù´Â Á¡À» »ó±âÇÕ´Ï´Ù.  

ÀÌ·¯ÇÑ °¢ ÄÁÅÙÃ÷ À¯ÇüÀÇ °æ¿ì ¼Õ»óÀÚ/¼ö¸®ÀÚ ½ÖÀÌ ÁöÁ¤µÇ¾î¾ß ÇÕ´Ï´Ù.  ÀÌ ÀÛ¾÷Àº PresentationReconciler ¹× DefaultDamagerRepairer¸¦ »ç¿ëÇÏ¿© ´ÙÀ½°ú °°ÀÌ ¼öÇàµË´Ï´Ù.

	JavaColorProvider provider= JavaEditorEnvironment.getJavaColorProvider();
	PresentationReconciler reconciler= new PresentationReconciler();
		
	DefaultDamagerRepairer dr= new DefaultDamagerRepairer(JavaEditorEnvironment.getJavaCodeScanner());
	reconciler.setDamager(dr, IDocument.DEFAULT_CONTENT_TYPE);
	reconciler.setRepairer(dr, IDocument.DEFAULT_CONTENT_TYPE);

	dr= new DefaultDamagerRepairer(new SingleTokenScanner(new TextAttribute(provider.getColor(JavaColorProvider.JAVADOC_DEFAULT))));
	reconciler.setDamager(dr, JavaPartitionScanner.JAVA_DOC);
	reconciler.setRepairer(dr, JavaPartitionScanner.JAVA_DOC);

	dr= new DefaultDamagerRepairer(new SingleTokenScanner(new TextAttribute(provider.getColor(JavaColorProvider.MULTI_LINE_COMMENT))));
	reconciler.setDamager(dr, JavaPartitionScanner.JAVA_MULTILINE_COMMENT);
	reconciler.setRepairer(dr, JavaPartitionScanner.JAVA_MULTILINE_COMMENT);

	return reconciler;

¿¹Á¦°¡ °¢ ÄÁÅÙÃ÷ À¯Çü¿¡ ´ëÇØ ½ºÄ³³Ê¸¦ Á¦°øÇÔ¿¡ À¯ÀÇÇϽʽÿÀ.   

±âº» ÄÁÅÙÃ÷ À¯ÇüÀº Ű¿öµå°¡ ¹ß°ßµÇ°í ä»öµÉ ¼ö ÀÖµµ·Ï JavaCodeScanner¿Í ÇÔ²² ¼³Á¤µË´Ï´Ù.  JavaCodeScanner´Â ´ÜÀÏÇà ÁÖ¼®, °ø¹é ¹× ´Ü¾î µî ¼­·Î ´Ù¸¥ Á¾·ùÀÇ ÅäÅ«À» ¹ß°ßÇÏ´Â µ¥ ÇÊ¿äÇÑ ±ÔÄ¢À» ºôµåÇÕ´Ï´Ù.  ´Ù¸¥ ÅäÅ« À¯ÇüÀÇ ´Ü¾î¿¡ »ç¿ëµÉ »ö»óÀ» ¼³¸íÇÕ´Ï´Ù.    

´Ù¸¥ ÄÁÅÙÃ÷ À¯ÇüÀÌ SingleTokenScanner·Î ¼³Á¤µÇ°í ÀÌ·¯ÇÑ ÄÁÅÙÃ÷ À¯ÇüÀÇ ÅäÅ«¿¡ »ç¿ëÇÒ »ö»óÀÌ Á¦°øµË´Ï´Ù.

½ºÄ³´× ±ÔÄ¢¿¡ µû¶ó ¹®¼­ÀÇ ÀûÀýÇÑ ÆÄÆ® ¼Õ»ó ¹× ¼ö¸®¿¡ ´ëÇÑ ¸ðµç ¼¼ºÎ»çÇ×Àº DefaultDamagerRepairer¿¡¼­ 󸮵˴ϴÙ.  ÀϹÝÀûÀ¸·Î Ç÷¯±×ÀÎ Äڵ尡 ÀÌ·¯ÇÑ ¼¼ºÎ»çÇ×À» ÀÌÇØÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù.  »ç¿ëÀÚÀÇ Ç÷¯±×ÀÎÀº ÆíÁý±â ÄÁÅÙÃ÷ ÆÄƼ¼Å´× ¹× ½ºÄ³´×¿¡ ÀûÀýÇÑ ±ÔÄ¢ ¼¼Æ®¸¦ ºôµåÇÏ´Â µ¥ ÃÊÁ¡À» µÎ¾î¾ß ÇÕ´Ï´Ù.

µ¿ÀûÀ¸·Î Á¶Á¤ÀÚ ¼³Ä¡

Java ÆíÁý±â ¿¹Á¦´Â ÀÌÀü¿¡ ³ªÅ¸³­ ´ë·Î ÇÁ¸®Á¨Å×ÀÌ¼Ç Á¶Á¤ÀÚ¸¦ ¼³Ä¡Çϱâ À§ÇØ SourceViewerConfigurationÀÇ ¼­ºêŬ·¡½º¸¦ Á¦°øÇÕ´Ï´Ù.  ¶ÇÇÑ ÇÁ¸®Á¨Å×ÀÌ¼Ç Á¶Á¤ÀÚ´Â IPresentationReconciler ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÏ¿© ÅØ½ºÆ® Ç¥½Ã±â¿¡ µ¿ÀûÀ¸·Î ¼³Ä¡µÉ ¼ö ÀÖ½À´Ï´Ù.  ÀÌ·± ½ÄÀ¸·Î ¼öÇàÇÏ´Â °æ¿ì Ưº°ÇÑ ·±Å¸ÀÓ ÀÌÁ¡Àº ¾øÀ¸³ª SourceViewerConfigurationÀÇ ¼­ºêŬ·¡½º¿¡ Ç÷¯±× °¡´ÉÇÑ ÀÛµ¿ ´ëü»çÇ×À» ¸ðµÎ ³õÀ¸¸é ÇÑ À§Ä¡¿¡¼­ ¸ðµç ÀÛµ¿ ´ëü»çÇ×À» ÅëÇÕÇÒ ¼ö ÀÖ´Â ÀÌÁ¡ÀÌ ÀÖ½À´Ï´Ù.  ´Ù¸¥ ÇÁ¸®Á¨Å×ÀÌ¼Ç Á¶Á¤ÀÚ°¡ ÆíÁý±â ¼ö¸í µ¿¾È Ç¥½Ã±â¿¡ ÷ºÎµÉ ¶§ µ¿Àû ÇÁ·ÎÅäÄÝÀÌ À¯¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

 

Copyright IBM Corporation and others 2000, 2003.