High performance bracket pair colorization



Вчера вышел VS Code 1.60 и в нём из коробки появилась подсветка скобочных пар. Очень удобная штука, когда есть большая вложенность, и не очень понятно, где начинается и заканчивается какая-нибудь функция.



Эта фича призвана заменить Bracket Pair Colorizer и Bracket Pair Colorizer 2 (даже не знал, что есть и вторая версия), у которых в сумме 9 миллионов загрузок.



Есть 2 причины, по которым мне захотелось рассказать об этой штуке:

1. Под «high performance» скрывается ускорение в 10 000 раз о_О.

2. Очень детальное описание проблемы, вариантов решения и классное взаимодействие с комьюнити в процессе разработки.



Основная проблема заключалась в отсутствии информации о токенах для нахождения пар. Расширениям, в свою очередь, приходилось повторно парсить весь файл, что сказывалось на производительности.



Выбор стоял между двумя основными вариантами: найти эффективный способ передачи токенов расширениям или же встроить эту функциональность в VS Code из коробки (тогда и передавать ничего не надо). Обязательно почитайте комментарий с вариантами решения проблемы.



Ещё здесь немного деталей о реализации и сам пул-реквест.



Ну а включить фичу можно через опцию "editor.bracketPairColorization.enabled": true.



P.S. Мне всегда было сложно отдавать какие-то задачи на ресерч коллегам, т.к. я регулярно сталкивался с «я выбрал вариант Б». А что, почему, чем отличается и т.д. приходилось вытягивать клещами и просить как-то задокументировать, чтобы осталась информация для потомков о принятом решении. Можете не стесняться скидывать это ишью таким ребятам, может у них что-то щёлкнет в головах 🙂