Простой способ
Вероятно, проще всего жить с этим, но держать вещи ограниченными.Здесь я взял ranger
по умолчанию rc.conf
и переставил некоторые из font-lock
ошибок.
Давайте проигнорируем синий"карта" на данный момент.У нас есть две видимые ошибки блокировки шрифтов.map #...
блокирует шрифт как комментарий, а map "...
блокирует шрифт как строку до конца буфера.Первая ошибка является самоограниченной.Комментарии заканчиваются в конце строки.Вторую ошибку мы ограничиваем, добавляя комментарий.(Я не знаю, будет ли ranger
принимать комментарии в середине строки, поэтому здесь я использую только комментарии в начале строки.)
Вторая ошибка теперь ограничена одной строкой, но всплыла еще пара ошибок.Быстро настраивая их, мы получаем.
Это то, с чем я мог бы жить, так как я не в conf-файлах весь день (в отличие отскажем, исходный код.) Было бы еще лучше, если бы наши новые «комментарии» могли быть включены в одну строку.
Трудный путь
Вы захотите использовать Emacs font-lock-add-keywords
.Давайте вернемся к этому синему map
на первом изображении.Он отображается синим цветом, потому что conf-space-mode
считает, что строка, за которой следует любое количество пробелов, за которым следует открывающая фигурная скобка, должна быть отображена в font-lock-type-face
(на самом деле регулярное выражение, которое вызывает это ^[_space__tab_]*\\(.+?\\)[_space__tab_\n]*{[^{}]*?$
, где _space_
и _tab_
являются реальными пробелами и символами табуляции.)
Мы можем переопределить это простым способом, оценив
(font-lock-remove-keywords
'conf-space-mode
'(("^\\<\\(map\\)\\>" 1 font-lock-variable-name-face)))
и перезагрузив буфер с помощью C-x C-v RET
.Теперь, каждый раз, когда слово «карта» появляется в начале строки, оно отображается как font-lock-variable-name-face
(желтый в нашем примере.)
. Вы можете сделать это изменение постоянным, добавив хук в файл инициализации.,
(add-hook 'conf-space-mode-hook (lambda ()
(font-lock-remove-keywords
nil
'(("^\\<\\(map\\)\\>" 1 font-lock-variable-name-face)))))
Этот метод не работает для ваших комментариев (#
) и строковых ('
"
) разделителей, так как они определены в таблице синтаксиса.Изменение синтаксической таблицы для обеспечения особых случаев, вероятно, требует больше усилий, чем стоит.