Gdzie należą niestandardowe reguły podświetlania?

11

Czasami chcę przesłonić domyślną składnię, podkreślając kolory i style według własnych preferencji.

Wyobrażam sobie, że najbardziej odpowiednim sposobem na to byłoby stworzenie własnego schematu kolorów. Mam jednak kilka pytań.

  1. Jeśli chcę ustawić wyróżnienie dla określonej grupy składni w określonym języku, czy należy to do mojego schematu kolorów, czy lepiej byłoby umieścić to w after/syntax/[filetype].vim?

    highlight jsAssignExpIdent cterm=bold gui=bold
    

    Trochę dziwne jest umieszczanie niejasnych reguł specyficznych dla języka w schemacie kolorów, ponieważ zostaną one załadowane w dowolnym języku, nad którym pracuję, ale jeszcze gorsze wydaje się umieszczanie reguł podświetlania w pliku składni.

  2. Czasami tworzę nowe reguły składni dla określonego języka, w after/syntax/[filetype].vim. Czy w przypadku, gdy inni użytkownicy będą chcieli korzystać z tych rozszerzeń, stosowne byłoby podanie tam domyślnych reguł podświetlania, które prowadzą do wspólnych domyślnych grup wyróżnień? Jeśli inny użytkownik chce zastąpić kolor podświetlenia, jak powinien to zrobić?

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

Odpowiedzi:

9

Pierwsze pytanie

Definicje wyróżnień należą do twojego schematu kolorów. Fakt, że są one ładowane dla każdego bufora, bez względu na ich język, nie powinno stanowić żadnego problemu.

Jeśli nie chcesz edytować swojego schematu kolorów, możesz umieścić te definicje podświetlenia w plugin/myhighlights.vim:

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

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

Drugie Pytanie

Próbka jest dokładnie taka, jak powinieneś to zrobić i jak działa każdy skrypt składniowy. Ta metoda pozwala twórcy wtyczek zdefiniować rozsądne ustawienia domyślne bez zmuszania określonych kolorów do gardła użytkownika.

romainl
źródło
Dziękuję za potwierdzenie. Ale highlight link ...martwię się, jeśli wstawię polecenia w pliku składni, aby zastąpiły one ustawienia z schematu kolorów za każdym razem, gdy ładowany jest plik o tym typie pliku. Czy powinienem to zrobić tylkohighlight link ... po sprawdzeniu, czy dla tej nazwy nie istnieje reguła podświetlania?
joeytwiddle
Ach, nie muszę się martwić. Dokumenty Vima mówią: Jeśli istnieją już ustawienia podświetlania {z grupy}, link nie zostanie utworzony, chyba że „!” jest podawany. W przypadku polecenia „: highlight link” w pliku źródłowym nie pojawia się komunikat o błędzie. Można tego użyć, aby pominąć linki do grup, które już mają ustawienia.
joeytwiddle
Ale dla ludzi, którzy poprawiają swoje schematy kolorów, a highlight linkw schemacie kolorów można później nadpisać highlight linkplikiem w składni. Aby tego uniknąć, zamiast linku można użyć rzeczywistych argumentów (ctermbg, guifg, ...).
joeytwiddle
Użytkownik powinien mieć ostatnie słowo o tym, jakie kolory są używane dla danej grupy wyróżnień. W tym celu nierzadko zdarza się widzieć specyficzne dla języka definicje podświetlenia w schematach kolorów. Powinieneś używać go highlight link ...w skrypcie składni i pozwalać użytkownikom na przesłonięcie go, jeśli chcą.
romainl
highlight link ...Obawiałem się, że jeśli użytkownicy użyją swojego schematu kolorów, plik składni może później go zresetować highlight link .... Widzę teraz, że dobre pliki składniowe unikają tego, używając highlight default link .... To prawdopodobnie powinna być korekta asmHexNumberreguły w moim pytaniu.
joeytwiddle 11.01.16