Realce personalizado do Vim (só funciona com tipos de arquivo específicos)

1

Eu tenho isso no meu vimrc :

"on will override defaults set.  Enable will allow you to set defaults."
syntax enable

...

"attempting to highlight specific keywords so it is easy to see in code."
"see help e410 for more info."
syn keyword JakeKeywords        Question TODO Answer JAKEHTTPS
highlight JakeKeywords cterm=bold term=bold ctermbg=black ctermfg=Blue

(Nota: por questões de legibilidade, terminei todas as citações)

Eu tentei inserir a palavra-chave JAKEHTTPS em:

  • .java arquivos
    • nos comentários
    • no código
  • .xml arquivos
    • nos comentários
    • no código
  • .jak arquivos (formato personalizado que criei abaixo)

O único local em que a palavra-chave está destacada está no .jak .

Pergunta: Por que essas palavras-chave NÃO estão sendo destacadas no código java ou xml (e provavelmente em outro código também?

~/.vim/ftdetect/jak.vim :

syn region JakeSubtitle start=+==+ end=+==+
highlight JakeSubtitle ctermbg=black ctermfg=DarkMagenta

syn region JakeTitle start=+===+ end=+===+
highlight JakeTitle ctermbg=black ctermfg=yellow

Observação: criei este tópico

    
por sixtyfootersdude 24.02.2010 / 00:35

3 respostas

3

Para tipos de arquivos padrão, as tags de sintaxe são limpas antes de carregar o arquivo de sintaxe filetype.vim
Você pode ver o comando

syntax clear
no início dos arquivos de sintaxe java.vim e xml.vim
Apenas mude as linhas no vimrc da seguinte forma,
au bufread * syn keyword JakeKeywords        Question TODO Answer JAKEHTTPS
au bufread * highlight JakeKeywords cterm=bold term=bold ctermbg=black ctermfg=Blue
Isso deve funcionar bem ...     
por 03.03.2010 / 07:11
1

Pode ser uma questão de as palavras-chave estarem contidas em uma região abrangente ou área de correspondência que lide com todos os realces. Por exemplo, se essas palavras-chave que você deseja destacar estiverem em uma região de comentários, o arquivo de sintaxe associado está configurando o destaque que se aplica a toda a linha de comentário e não está sendo substituído pelo destaque de palavra-chave no comentário. Você já sabe disso porque as linhas de comentário são uniformes e o destaque normal de palavras-chave não se aplica aos comentários.

Para corrigir o problema acima, se for o seu problema ou algo parecido, será necessário pesquisar o arquivo de sintaxe java.vim e verificar se a palavra-chave que você está tentando destacar está na cláusula 'Contains' do comentário definições de região (e / ou todas as outras definições de região abrangentes nas quais você deseja destacar a palavra-chave).

Por exemplo, uma região de comentário no meu arquivo de sintaxe para Java ( java.vim ) é esta:

syn region  javaComment      start="/\*"  end="\*/" contains=@javaCommentSpecial,javaTodo,@Spell

Você precisaria adicionar sua palavra-chave JakeKeyWords à cláusula contains acima se quiser que essas palavras-chave sejam destacadas nas regiões de comentários. Ou apenas adicione suas novas palavras-chave a javaToDo group, que já está configurado para aparecer com destaque especial nos comentários.

Não tenho certeza do que você está fazendo com as regiões JakeSubTitle e JakeTitle que você está tentando definir. O mesmo problema com os contêineres pode se aplicar a eles. Além disso, o comando 'syntax match' é o que você deseja usar para destacar regiões que podem ser correspondidas por um único padrão, 'region' é necessário apenas para áreas mais complexas (geralmente multilinhas) que não podem ser correspondidas por um único padrão.

    
por 26.02.2010 / 01:20
0

Como você define o destaque depende de como você está executando o vim. Meu palpite é que você está executando gvim no gui.

Suas configurações funcionam se você estiver executando o vim em um terminal, mas se você estiver executando o gvim , você precisará usar o guibg & guifg. Quando eu uso as configurações que você tem acima & execute o teste de destaque em gvim, :so $VIMRUNTIME/syntax/hitest.vim , o JakeKeywords não possui formatação especial aplicada. Quando eu executo novamente o teste, mas invoco o vim a partir da linha de comando (agora estou em um shell cmd WindowsXP), seu exemplo de JakeKeywords funciona muito bem.

Quando eu mudo

highlight JakeKeywords cterm=bold term=bold ctermbg=black ctermfg=Blue

para

highlight JakeKeywords gui=bold guibg=black guifg=Blue

então recebo texto azul em um fundo preto em gvim.

Se você quiser que este destaque seja aplicado a ambos os terminais de cor (como terminador ou nautilus) & gvim, você precisa definir o destaque:

highlight JakeKeywords gui=bold cterm=bold term=bold ctermbg=black \
                       ctermfg=Blue guibg=black guifg=Blue
    
por 25.02.2010 / 23:04