грамматики TextMate зависят от конкретной реализации / библиотеки регулярных выражений под названием Oniguruma , которая реализована в C. Однако Монако предназначено для работы в браузере, и доступный там механизм регулярных выражений JavaScript не совместим с Oniguruma , Все это подробно объясняется в «Почему редактор не поддерживает грамматики TextMate?» в разделе FAQ Монако . В нем также упоминается возможность, возможно, в конечном итоге скомпилировать Oniguruma в WebAssembly , чтобы обойти это.
Сам VSCode использует vscode-textmate для своей обработки TMLanguage, которая имеет библиотеку Oniguruma как native зависимость. VSCode может иметь собственные зависимости, потому что он не работает в среде браузера.
Согласно readme монако-текстового партнера, он в значительной степени основан на vscode-textmate:
99% кода в этом хранилище извлекается прямо из vscode-textmate
И он использует подход WASM, упомянутый ранее:
monaco-textmate
опирается на пакет onigasm
для обеспечения oniguruma
regex engine в браузерах. сам onigasm опирается на WebAssembly
.
Что касается того, почему подсветка синтаксиса не всегда работает должным образом с monaco-textmate ... Я понятия не имею, я ожидаю, что это просто ошибка в реализации. Возможно, дождитесь ответа от сопровождающего, проблема, с которой вы столкнулись, довольно новая.
По крайней мере, концептуально не должно быть причины, по которой он не мог бы добиться того же выделения подсветки синтаксиса, что и VSCode, поскольку он использует тот же тип регулярного выражения.