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 qualquer 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 = 1
Nota: 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