Monaco Editor에서 언어 구성 확장
그러나 실제 사용 사례와 일치하려면
custom syntax highlighting
가 필요할 수 있습니다.불행히도 언어 구성을 확장하는 데 사용할 수 있는 API가 없습니다. 이 항목을 참조하십시오comment.
조언에 따라 덮어 썼습니다
output of the built-in tokenizer
목차
내가 접근한 방법
javascript
를 선택했습니다) loader()
메서드가 있습니다.configuration
및 language
라는 2개의 키가 포함된 개체가 반환됩니다.modified the certain parts with my custom tokens
base object reference is unaffected
실제 코드
const allLangs = await monaco.languages.getLanguages();
const { conf, language: jsLang } = allLangs.find(({ id }) => id ==='javascript').loader();
for (let key in customTokenizer) {
const value = customTokenizer[key];
if (key === 'tokenizer') {
for (let category in value) {
const tokenDefs = value[category];
if (!jsLang.tokenizer.hasOwnProperty(category)) {
jsLang.tokenizer[category] = [];
}
if (Array.isArray(tokenDefs)) {
jsLang.tokenizer[category].unshift.apply(jsLang.tokenizer[category], tokenDefs)
}
}
} else if (Array.isArray(value)) {
if (!jsLang.hasOwnProperty(key)) {
jsLang[key] = [];
}
jsLang[key].unshift.apply(jsLang[key], value)
}
}
장점
javascript worker provides excellent code completions
, 새 언어 토크나이저를 만들면 이 제안이 손실될 수 있습니다. 이 방법을 사용하면 새 언어가 필요하지 않으므로 코드 완성이 유지됩니다follows the monaco editor’s monarch pattern
, 따라서 사용자 정의 토크나이저를 이미 작성했다면 마이그레이션이 쉬울 것입니다custom tokens are given high priority
와 같은 방식으로 추가되며 unshift
에서 push
를 jsLang keys
로 변경하여 수정할 수도 있습니다.제한 사항
모나코 에디터로서 모나코 인스턴스 내부에 언어 구성을 저장하는 방법이 있으므로 원하는 언어로 언어 구성
before creation of any model (or) editor
을 덮어써야 합니다.테이크 어웨이
이 방법은
monaco editor’s lazy loading feature
(monaco 편집팀 덕분에) 때문에 가능합니다. 여기서 해당 언어에 대한 모델(또는) 편집기 인스턴스가 생성될 때만 언어 구성을 로드합니다.So if we can change the configuration of the language before monaco uses it we can achieve the desired customization
Github 링크
프로필 링크 : PranomVignesh
저장소 링크 : Extend Language Configuration in Monaco Editor
Reference
이 문제에 관하여(Monaco Editor에서 언어 구성 확장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/pranomvignesh/extend-language-configuration-in-monaco-editor-5fjo텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)