Де належать власні правила виділення?


11

Іноді я хочу змінити синтаксис, що підсвічує кольори та стилі за замовчуванням з моїми власними уподобаннями.

Я думаю, що найбільш підходящим способом цього було б створення власної кольорової схеми. Однак у мене є пара питань.

  1. Якщо я хочу встановити виділення для певної групи синтаксису певною мовою, чи належить це до моєї кольорової схеми, чи було б краще розмістити її after/syntax/[filetype].vim?

    highlight jsAssignExpIdent cterm=bold gui=bold
    

    Здається, трохи дивно розміщувати незрозумілі для мови правила в кольоровій схемі, оскільки вони будуть завантажені будь-якою мовою, над якою я працюю, але ще гірше розміщувати правила виділення у файлі синтаксису.

  2. Іноді я створюю нові правила синтаксису для певної мови, в after/syntax/[filetype].vim. У випадку, якщо інші користувачі хочуть використовувати ці розширення, чи було б мені доречно вказати правила підсвічування за замовчуванням, які посилаються на загальні групи виділення за замовчуванням? Якщо інший користувач хоче замінити цей колір виділення, як їм це зробити?

    ::::: after/syntax/asm.vim :::::
    
    syn match asmHexNumber /\(0x\|\$\)[0-9A-Fa-f]\+/
    highlight default link asmHexNumber Number
    

Відповіді:


9

Перше питання

Виділення визначень належать до вашої кольорової схеми. Те, що вони завантажуються для кожного буфера, незалежно від мови, не повинно бути проблемою.

Якщо ви не хочете редагувати схему кольорів, ви можете помістити ці ключові визначення у plugin/myhighlights.vim:

function! MyHighlights()
    highlight ...
    highlight ...
endfunction

augroup MyHighlights
    autocmd!
    autocmd ColorScheme * call MyHighlights()
augroup END

Друге питання

Ваш зразок - саме те, як слід робити, і як робить кожен скрипт синтаксису. Цей метод дозволяє розробнику плагінів визначати здорові настройки за замовчуванням, не примушуючи конкретні кольори до горла користувача.


Дякуємо за підтвердження. Але мене хвилює, якщо я покладу highlight link ...команди у файл синтаксису, що вони замінюватимуть параметри кольорової схеми щоразу, коли файл із цим файлом буде завантажений. Чи варто мені це зробити лишеhighlight link ... після перевірки, що для цього імені немає жодного правила виділення?
joeytwiddle

Ах, мені не потрібно хвилюватися. Документи Vim кажуть: Якщо вже є параметри виділення для {from-group}, посилання не робиться, якщо тільки "!" дається. Для команди ": виділити посилання" у файлі, який знаходився, ви не отримаєте повідомлення про помилку. Це можна використовувати для пропуску посилань для груп, які вже мають налаштування.
joeytwiddle

Але для людей, які налаштовують свої кольорові схеми, a highlight linkв кольоровій схемі може бути перезаписано пізніше highlight linkу файл синтаксису. Щоб уникнути цього, замість посилання можуть використовуватися фактичні аргументи (ctermbg, guifg, ...).
joeytwiddle

Користувач повинен мати останнє слово про те, які кольори використовуються для даної групи виділення. З цією метою не рідкість бачити в кольорових схемах визначення специфіки мовлення. Ви повинні використовувати лише highlight link ...у своєму синтаксичному скрипті та дозволити своїм користувачам перекривати його, якщо вони хочуть.
romainl

Моє занепокоєння полягало в тому, що якщо користувачі використовують highlight link ...у своїй кольоровій схемі, то файл синтаксису може пізніше скинути його із власною highlight link .... Зараз я бачу, що хороші файли синтаксису уникають цього, використовуючи highlight default link .... Це, мабуть, має бути виправленням asmHexNumberправила в моєму питанні.
joeytwiddle
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.