vim-lsp-cxx-highlight — это плагин vim, который обеспечивает семантическую подсветку C/C++/Cuda/ObjC с использованием протокола языкового сервера.
Этот проект был заархивирован, поскольку он больше не нужен для выделения, поскольку большинство серверов и клиентов LSP теперь поддерживают семантические токены.
Первоначальной целью этого проекта было обеспечение хорошей семантической подсветки в vim/nvim для C++ задолго до того, как он был стандартизирован путем анализа нестандартных расширений cquery и ccls.
Для клиента LSP (встроенного или отдельного плагина) имеет смысл реализовать подсветку, поскольку она сейчас стандартизирована.
Чем этот плагин отличается от color_coded и chromatica?
vim-lsp-cxx-highlight не выполняет компиляцию/анализ исходных файлов. Он получает все данные семантической подсветки по протоколу языкового сервера. Основным преимуществом этого плагина является то, что он полностью написан на vimscript.
Идея этого возникла из vscode-cquery и наблюдения за тем, как он использует cquery для обеспечения семантической подсветки.
Слева: без плагина, справа: vim-lsp-cxx-highlight + ccls
Плагин требует vim
или neovim
. Для vim
+timers
и +byte_offset
рекомендуются, но не обязательны.
Кроме того, требуется совместимый языковой сервер и клиент языкового сервера.
Поддерживаются следующие языковые серверы и расширения протоколов:
запрос
$cquery/publishSemanticHighlighting
— семантическая подсветка$cquery/setInactiveRegions
— регионы, пропущенные препроцессоромCCLS
$ccls/publishSemanticHighlight
— семантическая подсветка$ccls/publishSkippedRegions
— регионы, пропущенные препроцессоромлязг
Поддерживаются следующие клиенты языкового сервера:
Использование vim-plug (или используйте менеджер плагинов по вашему выбору)
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 '
Использование собственного менеджера пакетов vim8 (запустите эту команду в терминале)
git clone https://github.com/jackguo380/vim-lsp-cxx-highlight.git ~ /.vim/pack/vendor/start/vim-lsp-cxx-highlight
Для cquery
необходимы следующие параметры инициализации:
{
"highlight" : { "enabled" : true },
"emitInactiveRegions" : true
}
Для ccls
необходимы следующие параметры инициализации:
{
"highlight" : { "lsRanges" : true }
}
Для clangd
coc-settings.json
необходимо иметь:
{
"clangd.semanticHighlighting" : true ,
"coc.preferences.semanticTokensHighlights" : false
}
Пример конфигурации vim-lsp см. здесь.
Пример конфигурации LanguageClient-neovim см. здесь.
Пример coc.nvim coc-settings.json см. здесь.
Пример конфигурации nvim-lsp см. здесь.
Плагин должен работать без каких-либо дополнительных настроек. Но если вам не нравятся настройки по умолчанию, см :help vim-lsp-cxx-highlight
vim-lsp-cxx-highlight теперь поддерживает текстовые свойства Vim 8.1 (см. :help textprop
).
Что улучшает использование текстовых свойств:
Поддержка этой функции была протестирована на Vim версии 8.1.1722
, в более старых версиях могут быть проблемы. Рекомендуется выполнить обновление до этой версии или новее.
Чтобы включить:
let g: lsp_cxx_hl_use_text_props = 1
Примечание. Теперь это автоматически включено для vim версии 8.2 или новее.
Это экспериментальная функция, поэтому она может быть довольно глючной. Пожалуйста, сообщайте об ошибках!
Лицензия MIT