Синтаксис Vim определен складным прозрачным цветом
Я написал синтаксис Vim с подсветкой кода определения, а также определил сворачивание. Теперь я могу использовать сворачивание, но когда у меня есть согнутая линия, я хочу по-разному раскрасить часть сворачивания функции и фактический код
+-- 10 lines: XXXXXX
Поэтому я хочу, чтобы часть XXXXXX оставалась цветной, как исходный цвет синтаксиса, чтобы он выделялся из остальной части строки. Как я могу определить прозрачность для синтаксиса свертывания?
1 ответ
К сожалению, в настоящее время это невозможно. Есть две группы подсветки, которые контролируют визуальное представление сгибов: Folded
(для всей линии) и FoldColumn
(для левостороннего представления состояния сгиба). Аналогично, "прозрачность" здесь не применима; текст сгиба представляет собой пользовательский [izable] фрагмент содержимого буфера. Реальное содержимое буфера складывается и не отображается.
Я слабо помню патчи, которые допускают разные группы подсветки для уровней сгиба или вложенных сгибов, но ничего из этого еще не было включено в Vim.
То, чего вы хотите достичь, будет очень привлекательным. Однако я вижу следующие трудности в реализации этого:
Обычный синтаксис типа файла (который вы хотите применить) должен совпадать после +-- 10 lines:
префикс. Многие синтаксисы имеют тщательно продуманную локализацию или последовательность и могут не применяться. Другие могут применяться, но (из-за сложенных вещей) теряют свой обычный контекст, поэтому следующие строки будут испорчены. Это можно исправить с помощью специальных правил синтаксиса (возможно, просто включив низкоуровневые вещи, такие как синтаксические ключевые слова и простые :syn match
), но для этого потребуется совместная работа каждого синтаксиса, поэтому различные авторы должны будут расширить сотни сценариев.