Xtext로 작성된 DSL이 있습니다. 커스텀 콘텐츠 제안을 추가하기 위해 프로젝트 에서 MyDslProposalProvider
클래스를 편집했습니다 ui
. 새로운 제안은 내가 Eclipse에서 플러그인을 디버그 할 때 존재하지만 궁극적으로 내가 원하는 웹 편집기에는 없습니다. 사용자 지정 제안을 한 곳에서 설정하고 생성 된 모든 편집자가이를 사용하고 싶습니다. Xtext로 할 수 있습니까?
동일한 문제가 있었고 솔루션으로 약간 어려움을 겪었으므로 (Eclipse 편집기와 웹 편집기를 모두 사용하고 싶으므로) 여기에서 가능한 솔루션에 대한 자세한 피드백을 제공하고 싶습니다. 내 솔루션에서 다음 단계를 수행했습니다.
MyDslIdeContentProposalProvider
에서 my.dsl.ide 으로부터 연장 서브 프로젝트 IdeContentProposalProvider
패키지, my.dsl.ide.contentassistant을 (새로 생성); 이러한 구현의 예는 여기 에서 찾을 수 있습니다 . 구현은 잘 알려진 Eclipse 용 UI 제안 공급자 에서처럼 편리하지 않습니다. MyDslGrammarAccess
UI 제안 제공자와 같은 구조적 문법 요소 대신 요소를 기반으로 스위치 케이스를 구현해야했습니다 . 반면에 모든 편집자 사례에 대해 하나의 제안 구현 만 있습니다 (DRY 원칙!).동일한 프로젝트에 MyDslIdeContentProposalProvider
at MyDslIdeModule
을 등록합니다 (웹 편집기에서 이미 작동하는 경우에만).
def Class<? extends IdeContentProposalProvider> bindIdeContentProposalProvider() {
MyDslIdeContentProposalProvider
}
새로운 등록 MyDslIdeContentProposalProvider
및 전달 클래스 UiToIdeContentProposalProvider
상기를 MyDslUiModule
에 my.dsl.ui 서브 프로젝트. (논리적으로 도출 할 수 없기 때문에 가장 긴 조사가 필요했습니다.)
override Class<? extends IContentProposalProvider> bindIContentProposalProvider() {
return UiToIdeContentProposalProvider
}
def Class<? extends IdeContentProposalProvider> bindIdeContentProposalProvider() {
return JavaPOSConfigLanguageIdeContentProposalProvider
}
MyDslIdeContentProposalProvider
새로 생성 된 my.dsl.ide.contentassistant 패키지에서를 구현 했으므로이 패키지는 MANIFEST.MF
하위 프로젝트 my.dsl.ide 의 파일 로 내 보내야합니다 (이후 2 개의 내보내기는 이미 있음). 그렇지 않으면 오류가 발생합니다. 액세스 제한 : .NET Framework에서 필요한 프로젝트 에 대한 제한으로 인해 유형에 액세스 할 수 없습니다MyDslUiModule
.
Export-Package: my.dsl.ide.contentassist,
my.dsl.ide.contentassist.antlr,
my.dsl.ide.contentassist.antlr.internal
그런 식으로 Eclipse와 웹 편집기 모두에서 잘 작동했습니다.
초기 힌트에 대해 Christian에게 다시 한 번 감사드립니다!
... 내가 소원을 빌 수 있다면, MyDslIdeContentProposalProvider
현재 UI 제안 제공자에 있는 것과 동일한 구조적 문법 요소 액세스 권한을 갖고 싶습니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다