Onde pertencem as regras de destaque personalizadas?

11

Ocasionalmente, quero substituir a sintaxe padrão, destacando cores e estilos com minhas próprias preferências.

Eu imagino que a maneira mais apropriada de fazer isso seria criar meu próprio esquema de cores. No entanto, tenho algumas perguntas.

  1. Se eu quiser definir um destaque para um grupo de sintaxe específico em um idioma específico, ele pertence ao meu esquema de cores ou seria melhor colocá-lo after/syntax/[filetype].vim?

    highlight jsAssignExpIdent cterm=bold gui=bold
    

    Parece um pouco estranho colocar regras obscuras específicas de idioma no esquema de cores, pois elas serão carregadas em qualquer idioma em que estou trabalhando, mas parece ainda pior colocar regras de destaque no arquivo de sintaxe.

  2. Às vezes, crio novas regras de sintaxe para um idioma específico, em after/syntax/[filetype].vim. Caso outros usuários desejem empregar essas extensões, seria apropriado fornecer regras de destaque padrão que apontam para grupos de destaque padrão comuns? Se outro usuário deseja substituir essa cor de destaque, como eles devem fazer isso?

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

Respostas:

9

Primeira pergunta

As definições de destaque pertencem ao seu esquema de cores. O fato de serem carregados para cada buffer, não importa qual seja seu idioma, não deve ser um problema.

Se você não deseja editar seu esquema de cores, pode colocar essas definições de destaque em plugin/myhighlights.vim:

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

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

Segunda questão

Sua amostra é exatamente como você deve fazer e como todo script de sintaxe faz. Esse método permite que o desenvolvedor do plug-in defina o padrão são sem forçar cores específicas na garganta do usuário.

romainl
fonte
Obrigado pela confirmação. Mas, se eu colocar highlight link ...comandos em um arquivo de sintaxe, os comandos substituirão as configurações do esquema de cores toda vez que um arquivo com esse tipo de arquivo for carregado. Talvez eu deva fazer apenashighlight link ... depois de verificar se não existe uma regra de destaque para esse nome?
Joeytwiddle
Ah, não preciso me preocupar. Os documentos do Vim dizem: Se já houver configurações de destaque para o {do grupo}, o link não será feito, a menos que o '!' é dada. Para um comando ": destacar link" em um arquivo de origem, você não recebe uma mensagem de erro. Isso pode ser usado para pular links para grupos que já possuem configurações.
Joeytwiddle
Mas, para as pessoas que ajustam seus esquemas de cores, um highlight linkno esquema de cores pode ser substituído posteriormente por um highlight linkem um arquivo de sintaxe. Para evitar isso, argumentos reais (ctermbg, guifg, ...) podem ser usados ​​em vez de um link.
Joeytwiddle
O usuário deve ter a última palavra sobre quais cores são usadas para um determinado grupo de realces. Para esse efeito, não é incomum ver definições de destaque específicas do idioma em esquemas de cores. Você só deve usar highlight link ...no seu script de sintaxe e permitir que seus usuários o substituam, se quiserem.
romainl
Minha preocupação era que, se os usuários usassem highlight link ...seu esquema de cores, o arquivo de sintaxe poderia redefini-lo posteriormente com o seu próprio highlight link .... Vejo agora que bons arquivos de sintaxe evitam isso usando highlight default link .... Provavelmente isso deve ser uma correção para a asmHexNumberregra na minha pergunta.
Joeytwiddle