Как я могу получить доступ к грамматике TextMate для * уже загруженных языков * в VSCode? - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь создать расширение кода Visual Studio, которое включает и отключает лигатуры шрифтов в зависимости от контекста syntacti c. В частности, в большинстве случаев я хочу, чтобы лигатуры применялись только к операторам, а не к строкам, комментариям, именам переменных или чему-либо еще.

Расширения имеют доступ ко всем вашим открытым документам. Однако, если я что-то упускаю, насколько я могу судить, VScode не дает вам, как разработчику расширений, прямого понимания того, как анализируется любой из этих документов. Несмотря на то, что автоматический c синтаксический анализ явно уже происходит (как видно по встроенной синтаксической раскраске), все, что у меня есть доступ к этому, я вижу, это текст моего документа, разбитый на строки, и я могу найти соответствующий объект редактора, но нет никаких намеков на разбор текста, который уже делается за кулисами.

Кажется абсурдом, что мне придется снова и снова разбирать текст внутри моего расширения, но, видимо, это то, что Я должен сделать.

Кроме того, я даже не вижу простого способа указать TextMate, как анализировать документ, не предоставляя собственную копию грамматики TextMate для каждого языка, который я хочу использовать. чтобы обработать, или каким-то образом порыться в расширениях VSCode и отследить все грамматики, спрятанные внутри себя.

Я попытался использовать существующее расширение в качестве модели для своего расширения (Scope Info: https://github.com/siegebell/scope-info), но он не обновлялся в течение трех лет и, похоже, не работает с текущими версиями VS Код больше. Похоже, что у этого расширения был прием для использования встроенных грамматик, но этот прием больше не работает.

Кто-нибудь знает более простой способ сделать это?

...