vim-lsp-cxx-highlight é um plugin vim que fornece destaque semântico C/C++/Cuda/ObjC usando o protocolo do servidor de linguagem.
Este projeto foi arquivado porque não é mais necessário para obter destaque, já que a maioria dos servidores e clientes LSP agora suportam Tokens Semânticos.
O objetivo original deste projeto era trazer um bom destaque semântico ao vim/nvim para C++ muito antes de ser padronizado, analisando extensões não padrão de cquery e ccls.
Faz mais sentido para um cliente LSP (integrado ou um plugin separado) implementar o realce como está padronizado agora.
Como este plugin se diferencia do color_coded e do chromatica?
vim-lsp-cxx-highlight não faz compilação/análise de arquivos de origem. Ele recebe todos os seus dados de destaque semântico através do protocolo do servidor de linguagem. A principal vantagem deste plugin é que ele é escrito inteiramente em vimscript.
A ideia para isso veio de vscode-cquery e de ver como ele usa cquery para fornecer destaque semântico.
Esquerda: Sem plug-in, Direita: vim-lsp-cxx-highlight + ccls

O plugin requer vim ou neovim . Para vim +timers e +byte_offset são recomendados, mas não obrigatórios.
Além disso, é necessário um servidor de idioma compatível e um cliente de servidor de idioma.
Os seguintes servidores de idiomas e extensões de protocolo são suportados:
consulta
$cquery/publishSemanticHighlighting - destaque semântico$cquery/setInactiveRegions - regiões ignoradas pelo pré-processadorccls
$ccls/publishSemanticHighlight - destaque semântico$ccls/publishSkippedRegions - regiões ignoradas pelo pré-processadorclangd
Os seguintes clientes de servidores de idiomas são suportados:
Usando vim-plug (ou use o gerenciador de plugins de sua escolha)
Plug ' prabirshrestha/vim-lsp ' " vim-lsp
" or
Plug ' autozimu/LanguageClient-neovim ' " LanguageClient-neovim
" or
Plug ' neoclide/coc.nvim ' " coc.nvim
" or
Plug ' neovim/nvim-lsp ' " nvim-lsp
Plug ' jackguo380/vim-lsp-cxx-highlight 'Usando o gerenciador de pacotes nativo do vim8 (execute este comando em um terminal)
git clone https://github.com/jackguo380/vim-lsp-cxx-highlight.git ~ /.vim/pack/vendor/start/vim-lsp-cxx-highlight Para cquery são necessárias as seguintes opções de inicialização:
{
"highlight" : { "enabled" : true },
"emitInactiveRegions" : true
} Para ccls são necessárias as seguintes opções de inicialização:
{
"highlight" : { "lsRanges" : true }
} Para clangd coc-settings.json deve ter:
{
"clangd.semanticHighlighting" : true ,
"coc.preferences.semanticTokensHighlights" : false
}Para um exemplo de configuração do vim-lsp, veja isto
Para um exemplo de configuração do LanguageClient-neovim, veja isto
Para obter um exemplo de coc.nvim coc-settings.json, veja isto
Para obter um exemplo de configuração do nvim-lsp, veja isto
O plugin deve funcionar sem nenhuma configuração adicional. Mas se você não gosta das configurações padrão, consulte :help vim-lsp-cxx-highlight
vim-lsp-cxx-highlight agora tem suporte para propriedades de texto do Vim 8.1 (consulte :help textprop ).
O que o uso de propriedades de texto melhora:
O suporte para este recurso foi testado na versão 8.1.1722 do Vim, versões mais antigas podem ter problemas. Recomenda-se atualizar para esta versão ou mais recente.
Para ativar:
let g: lsp_cxx_hl_use_text_props = 1Nota: Isso agora está ativado automaticamente para o vim versão 8.2 ou superior
Este é um recurso experimental, por isso pode apresentar alguns bugs. Por favor, envie relatórios de bugs!
Licença MIT