Синтаксис Vim определен складным прозрачным цветом

Я написал синтаксис Vim с подсветкой кода определения, а также определил сворачивание. Теперь я могу использовать сворачивание, но когда у меня есть согнутая линия, я хочу по-разному раскрасить часть сворачивания функции и фактический код

+--  10 lines: XXXXXX

Поэтому я хочу, чтобы часть XXXXXX оставалась цветной, как исходный цвет синтаксиса, чтобы он выделялся из остальной части строки. Как я могу определить прозрачность для синтаксиса свертывания?

1 ответ

Решение

К сожалению, в настоящее время это невозможно. Есть две группы подсветки, которые контролируют визуальное представление сгибов: Folded (для всей линии) и FoldColumn (для левостороннего представления состояния сгиба). Аналогично, "прозрачность" здесь не применима; текст сгиба представляет собой пользовательский [izable] фрагмент содержимого буфера. Реальное содержимое буфера складывается и не отображается.

Я слабо помню патчи, которые допускают разные группы подсветки для уровней сгиба или вложенных сгибов, но ничего из этого еще не было включено в Vim.

То, чего вы хотите достичь, будет очень привлекательным. Однако я вижу следующие трудности в реализации этого:

Обычный синтаксис типа файла (который вы хотите применить) должен совпадать после +-- 10 lines: префикс. Многие синтаксисы имеют тщательно продуманную локализацию или последовательность и могут не применяться. Другие могут применяться, но (из-за сложенных вещей) теряют свой обычный контекст, поэтому следующие строки будут испорчены. Это можно исправить с помощью специальных правил синтаксиса (возможно, просто включив низкоуровневые вещи, такие как синтаксические ключевые слова и простые :syn match), но для этого потребуется совместная работа каждого синтаксиса, поэтому различные авторы должны будут расширить сотни сценариев.

Другие вопросы по тегам