

GitHub - jackguo380/vim-lsp-cxx-highlight: Vim plugin for C/C++/ObjC semantic hi...
source link: https://github.com/jackguo380/vim-lsp-cxx-highlight
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

vim-lsp-cxx-highlight
vim-lsp-cxx-highlight is a vim plugin that provides C/C++/Cuda/ObjC semantic highlighting using the language server protocol.
Introduction
How does this plugin differentiate itself from color_coded and chromatica?
vim-lsp-cxx-highlight does no compilation/analysis of source files. It receives all of its semantic highlighting data over the language server protocol. The main advantage of this plugin is that it is written entirely in vimscript.
The idea for this came from vscode-cquery and seeing how it uses cquery to provide semantic highlighting.
Left: No Plugin, Right: vim-lsp-cxx-highlight + ccls
Requirements
The plugin requires vim
or neovim
. For vim
+timers
and +byte_offset
are
recommended but not required.
Additionally, a compatible language server and language server client is required.
The following language servers and protocol extensions are supported:
-
$cquery/publishSemanticHighlighting
- semantic highlighting$cquery/setInactiveRegions
- preprocessor skipped regions
-
$ccls/publishSemanticHighlight
- semantic highlighting$ccls/publishSkippedRegions
- preprocessor skipped regions
-
- Requires coc.nvim and coc-clangd
- Using the proposed Semantic Highlighting Protocol
- IMPORTANT: coc-clangd supports 2 implementaions: "semantic highlighting" (old, non-standard) and "semantic tokens" (new, LSP standard). The latest versions of clangd (12+) require disabling coc's semantic tokens to work; see below.
The following language server clients are supported:
Install
Using vim-plug (Or use the plugin manager of your choice)
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'
Using vim8's native package manager (Run this command in a terminal)
git clone https://github.com/jackguo380/vim-lsp-cxx-highlight.git ~/.vim/pack/vendor/start/vim-lsp-cxx-highlight
For cquery
the following initializationOptions are needed:
{ "highlight": { "enabled" : true }, "emitInactiveRegions" : true }
For ccls
the following initializationOptions are needed:
{ "highlight": { "lsRanges" : true } }
For clangd
coc-settings.json
must have:
{ "clangd.semanticHighlighting": true, "coc.preferences.semanticTokensHighlights": false }
For a sample vim-lsp configuration see this
For a sample LanguageClient-neovim configuration see this
For a sample coc.nvim coc-settings.json see this
For a sample nvim-lsp configuration see this
Configuration
The plugin should work without any additional configuration. But if you don't like
the default settings see :help vim-lsp-cxx-highlight
Vim Text Properties
vim-lsp-cxx-highlight now has support for Vim 8.1's text properties (See :help textprop
).
What using text-properties improves:
- Highlighting moves around with the text, inserting new lines/words no longer messes things up
- Deleting lines removes highlighting attached to text
- Some performance improvements? (Unverified)
Support for this feature has been tested on Vim version 8.1.1722
, older versions may have problems.
It is recommended to upgrade to this version or newer.
To enable:
let g:lsp_cxx_hl_use_text_props = 1
Note: This is now automatically enabled for vim version 8.2 or greater
This is a experimental feature, so it may be quite buggy. Please file bug reports!
License
Recommend
-
83
今天学(踩)到了一个 iOS 开发小知识(坑):如果静态库里定义了
-
40
README.md Semantic-Highlight.vim Where every variable is a different color, an idea popularized by
-
54
Posted at 2019-10-11 12:09 |RSS feed (Full text feed) |Blog Index Previous article: Frida...
-
66
Install extension Install the ccls extension from the marketplace here . The source code is located at
-
20
说到objc_msgSend可能大家都知道这是runtime的核心代码,是用来发送消息的,但你真的了解objc_msgSend吗?你清楚objc_msgSend是如何完成自己的职责吗?你清楚它和arm处理器如何协作的吗?下面让我们一起进入objc_msgSend的世界。
-
14
Is there a command in Vim / Vi to move the cursor to the end of a highlight search? advertisements Are there any commands in Vim/Vi to move wi...
-
18
Vim Highlighter Introduction Highlighting keywords or lines can be useful when analyzing code, reviewing summaries, and quickly comparing spellings. This plugin extends Vim's highlighting capabilities with additional fea...
-
3
Highlight words and expressions : vim online vim-highlighter : Highlight words and expressions script karma Rating 26/8, Downloaded by 684 Comment...
-
13
Highlight words and expressions : vim online vim-highlighter : Highlight words and expressions script karma Rating 26/8, Downloaded by 691 Comment...
-
11
A Vim colorscheme with almost no highlighting, except where it matters! : vim online highlight.vim : A Vim colorscheme with almost no highlighting, except where it matters! script...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK