서식 편집기를 사용 하 여 확장을 만들 수
에 포함 된 서식 파일을 사용할 수 있습니다의 Visual Studio 2010 SDK 분류자, 장식, 및 여백을 편집기에 추가 하는 기본 편집기 확장을 만들 수 있습니다.
사전 요구 사항
편집기 확장 템플릿을 사용 하 여 설치 해야 해당 Visual Studio 2010 SDK입니다.
참고
Visual Studio SDK에 대 한 자세한 내용은 참조 하십시오. Visual Studio 개요를 확장합니다..Visual Studio SDK를 다운로드 하는 방법를 참조 하십시오. Visual Studio 확장성 개발자 센터 MSDN 웹 사이트에서.
분류자 확장 만들기
적절 한 텍스트 색을 편집기 분류자 분류자 편집기 서식 파일을 만듭니다 (이 경우 모든 것) 모든 텍스트 파일에 있습니다.
분류자 확장 편집기 분류자 템플릿을 사용 하 여 만들 수
에 파일 메뉴를 가리키고 New 하 고 다음을 클릭 새 프로젝트. 에 있는 새 프로젝트 대화 상자에서 확장 C# 또는 Visual Basic 하 고 다음을 클릭 확장성. 에 있는 템플릿 창에서 편집기 분류자. 에 있는 이름 상자에 입력 TestClassifier. 확인을 클릭합니다.
TestClassifier 프로젝트가 열립니다.
Source.extension.vsixmanifest 파일을 열고 다음과 같이 편집:
제품 이름: TestClassifier
저자: Fabrikam
버전: 1.0
설명:이 테스트 분류자 확장입니다.
ID를 변경 하지 마십시오 자동으로 생성 됩니다.
컨텐트 헤더 (프로젝트 템플릿 디렉터리, 항목 템플릿 디렉터리, 템플릿 마법사, VSPackage, MEF 구성 요소 또는 사용자 지정 확장명 종류)이이 프로젝트의 콘텐츠 종류를 지정 합니다. 하나의 프로젝트에 여러 종류의 콘텐츠를 Vspackage와 MEF 구성 요소 예를 들어, 포함할 수 있습니다. 이 확장은 MEF 이므로 내용은 Testclassifier에 정의 됩니다.
세 개의 코드 파일에서 다음과 같은:
TestClassifierType 포함 되어 있는 OrdinaryClassificationType 클래스입니다.
TestClassifierFormat 포함 되어 있는 OrdinaryFormat 클래스입니다.
TestClassifier 포함의 OrdinaryClassifier 클래스 및 OrdinaryClassifierProvider 클래스입니다.
OrdinaryClassificationType 클래스 내보내기는 ClassificationTypeDefinition, 고 (이 경우, 모든 텍스트) 서식이 지정 될 수 있는 텍스트를 정의 합니다. 와 함께이 클래스를 내보내는 있는 NameAttribute, 식별이 분류자에 사용 됩니다. 분류에 대 한 자세한 내용은 "확장 분류 종류 및 분류 설정" 절을 참조 하십시오. 편집기 확장 지점.
OrdinaryFormat 클래스에서 상속의 ClassificationFormatDefinition, 서식,이 경우에 필요한 시각적 효과 정의 하 고는 BlueViolet 글꼴 색은 Underline. 이 클래스는 내보내야 합니다는 EditorFormatDefinition 형식입니다. 서식을 사용 하 여 사용자에 게 표시 되는지 여부를 지정할 수 있습니다 UserVisibleAttribute에서 서식 있는 텍스트에 적용 되를 사용 하 여 순서를 지정할 수 있습니다 OrderAttribute.
OrdinaryClassifier 구현 클래스는 GetClassificationSpans (이 경우, 모든 텍스트) "일반" 분류자를 사용 하 여 분류 될 수 있는 텍스트를 식별 하는 방법입니다.
OrdinaryClassifierProvider 클래스에서 상속 IClassifierProvider을 구현 하 고는 GetClassifier 분류자를 인스턴스화하여 메서드를. 와 함께이 클래스를 내보내는 있는 ContentTypeAttribute,이 분류자 적용 됩니다 콘텐츠 (텍스트, 코드 또는 등) 유형을 지정 합니다. 또한 걸리는 TextViewRoleAttribute, 값 중 하나가 될 수 있습니다 텍스트 보기의 종류를 지정 하는의 PredefinedTextViewRoles.
이 솔루션을 빌드할 때 어셈블리 및 매니페스트 복사본이 실험 디렉터리에 배치 됩니다.
이 프로젝트를 디버거에서 실행할 때 Visual Studio 두 번째 인스턴스를 인스턴스화합니다. 텍스트 파일을 열 경우 모든 텍스트가 표시 됩니다 자주색 배경에 대해 밑줄이 있습니다.
상대 텍스트 장식 확장 만들기
편집기 텍스트 장식 서식 파일은 모두 텍스트 문자를 데코레이팅합니다 있는 상대 텍스트 장식 만듭니다 '는' 파란색 배경 및 빨간색 윤곽선이 있는 상자를 사용 하 여. 텍스트에 상대적인입니다 때문에 상자 오버레이 이동 하 하거나 다시 포맷 하는 경우 'a' 문자를 항상 합니다.
텍스트 장식 확장 편집기 텍스트 장식 서식 파일을 사용 하 여 만들 수
에 파일 메뉴를 가리키고 New 하 고 다음을 클릭 새 프로젝트. 에 있는 새 프로젝트 대화 상자에서 확장 C# 또는 Visual Basic 하 고 다음을 클릭 확장성. 에 있는 템플릿 창에서 편집기 텍스트 장식. 에 있는 이름 상자에 입력 TestTextAdornment. 확인을 클릭합니다.
TestTextAdornment 프로젝트가 열립니다.
Source.extension.vsixmanifest 파일을 열고 다음과 같이 편집:
제품 이름: TestTextAdornment
저자: Fabrikam
버전: 1.0
설명:이 테스트에 상대적인 텍스트 장식 확장입니다.
ID를 변경 하지 마십시오 자동으로 생성 됩니다.
컨텐트 머리글이이 프로젝트의 콘텐츠 종류를 지정 합니다. 이 확장은 MEF 이므로 내용은 Testtextadornment에 정의 됩니다.
두 개의 코드 파일에서 다음과 같은:
TestTextAdornment 포함 되어 있는 ScarletCharacter 클래스입니다.
TestTextAdornmentFactory 포함 되어 있는 EditorAdornmentFactory 클래스입니다.
ScarletCharacter 클래스 제공 사용자 인터페이스 (UI) 기능이 장식 생성자 및 핸들의의 LayoutChanged 문자 항목을 모두 검색 하 여 이벤트 'a'에서 IWpfTextView ScarletCharacter 장식 추가.
EditorAdornmentFactory 클래스에서 상속 IWpfTextViewCreationListener 를 구현 하 고는 TextViewCreated 메서드를 인스턴스화하는 장식으로. 이 클래스를 또한 선언에서 AdornmentLayerDefinition ScarletCharacter 장식 수에 해당 하 고 함께 내보내는 NameAttribute, OrderAttribute, 및 TextViewRoleAttribute.
이 솔루션을 빌드할 때 어셈블리 및 매니페스트 복사본이 실험 디렉터리에 배치 됩니다.
이 프로젝트를 디버거에서 실행할 때 Visual Studio 두 번째 인스턴스를 인스턴스화합니다. 텍스트 파일을 열면 텍스트에서 'a' 문자에 빨간색 파란색 배경 요약 된 것 처럼 표시 됩니다.
뷰포트에 상대적인 장식 확장 만들기
뷰포트의 오른쪽 위 모서리에 빨간색 윤곽선이 있는 보라색 상자를 추가 하는 뷰포트에 상대적인 장식 편집기 뷰포트 장식 서식 파일을 만듭니다.
참고
해당 뷰포트 텍스트 보기 현재 표시 되어 있는 영역입니다.
뷰포트 장식 확장 편집기 뷰포트 장식 서식 파일을 사용 하 여 만들 수
에 파일 메뉴를 가리키고 New 하 고 다음을 클릭 새 프로젝트. 에 있는 새 프로젝트 대화 상자에서 확장 C# 또는 Visual Basic 하 고 다음을 클릭 확장성. 에 있는 템플릿 창에서 편집기 뷰포트 장식. 에 있는 이름 상자에 입력 TestViewportAdornment. 확인을 클릭합니다.
TestViewportAdornment 프로젝트가 열립니다.
Source.extension.vsixmanifest 파일을 열고 다음과 같이 편집:
제품 이름: TestViewportAdornment
저자: Fabrikam
버전: 1.0
설명:이 테스트 뷰포트에 상대적인 장식 확장입니다.
ID를 변경 하지 마십시오 자동으로 생성 됩니다.
컨텐트 머리글이이 프로젝트의 콘텐츠 종류를 지정 합니다. 이 확장은 MEF 이므로 내용은 Testviewportadornment에 정의 됩니다.
두 개의 코드 파일에서 다음과 같은:
TestViewportAdornment 들어 있는 PurpleCornerBox 클래스
TestViewportAdornmentFactory 들어 있는 AdornmentFactory 클래스
PurpleCornerBox 클래스 생성자 및 핸들을 장식의 UI 기능을 제공는 ViewportHeightChanged 및 ViewportWidthChanged 삭제 하 고 오른쪽 위 모퉁이에 있는 장식의 뷰포트를 다시 추가 하 여 이벤트.
AdornmentFactory 클래스에서 상속 IWpfTextViewCreationListener, 구현 하 고는 TextViewCreated 메서드를 인스턴스화하는 장식으로. 이 클래스를 또한 선언에서 AdornmentLayerDefinition PurpleCornerBox 장식 수에 해당 하 고 함께 내보내는 NameAttribute, OrderAttribute, 및 TextViewRoleAttribute.
이 솔루션을 빌드할 때 어셈블리 및 매니페스트 복사본이 실험 디렉터리에 배치 됩니다.
이 프로젝트를 디버거에서 실행할 때 Visual Studio 두 번째 인스턴스를 인스턴스화합니다. 텍스트 파일을 열면 빨간색 윤곽선이 있는 보라색 상자 뷰포트의 오른쪽 위 모서리에 표시 됩니다.
여백 확장 만들기
여백 편집기 템플릿 "Hello world!" 아래 가로 스크롤 막대와 함께 나타나는 녹색 여백이 생깁니다.
여백 확장 편집기 여백 템플릿을 사용 하 여 만들 수
에 파일 메뉴를 가리키고 New 하 고 다음을 클릭 새 프로젝트. 에 있는 새 프로젝트 대화 상자에서 확장 C# 또는 Visual Basic 하 고 다음을 클릭 확장성. 에 있는 템플릿 창에서 편집기 여백. 에 있는 이름 상자에 입력 TestMargin. 확인을 클릭합니다.
TestMargin 프로젝트가 열립니다.
Source.extension.vsixmanifest 파일을 열고 다음과 같이 편집:
제품 이름: TestMargin
저자: Fabrikam
버전: 1.0
설명:이 테스트 여백 확장입니다.
ID를 변경 하지 마십시오 자동으로 생성 됩니다.
컨텐트 머리글이이 프로젝트의 콘텐츠 종류를 지정 합니다. 이 확장은 MEF 이므로 내용은 Testmargin에 정의 됩니다.
두 개의 코드 파일에서 다음과 같은:
TestMargin 포함 되어 있는 GreenMargin 클래스입니다.
TestMarginFactory 포함 되어 있는 MarginFactory 클래스입니다.
GreenMargin 클래스에서 상속 Canvas 을 구현 하 고 IWpfTextViewMargin. 여백에 해당 생성자의 UI 기능을 제공합니다.
MarginFactory 구현 클래스 IWpfTextViewMarginProvider을 구현 하 고는 CreateMargin 여백 메서드를 만드는 데. This class is exported together with the NameAttribute, OrderAttribute, MarginContainerAttribute, ContentTypeAttribute, and TextViewRoleAttribute.
이 솔루션을 빌드할 때 어셈블리 및 매니페스트 복사본이 실험 디렉터리에 배치 됩니다.
이 프로젝트를 디버거에서 실행할 때 Visual Studio 두 번째 인스턴스를 인스턴스화합니다. 텍스트 파일을 열 경우 녹색 여백에 "Hello world!" 가로 스크롤 막대 아래에 표시 되는 단어 있습니다.