mirror of
https://github.com/MaskRay/ccls.git
synced 2024-11-29 11:01:57 +00:00
Add coc.nvim
parent
05f2495254
commit
e29cc5696d
@ -6,6 +6,7 @@
|
|||||||
- [[FAQ]]
|
- [[FAQ]]
|
||||||
* Editor configuration
|
* Editor configuration
|
||||||
- [[Emacs]]
|
- [[Emacs]]
|
||||||
|
- [[coc.nvim]]
|
||||||
- [[LanguageClient-neovim]]
|
- [[LanguageClient-neovim]]
|
||||||
- [[vim-lsp]]
|
- [[vim-lsp]]
|
||||||
- [[Visual Studio Code]]
|
- [[Visual Studio Code]]
|
||||||
|
90
coc.nvim.md
Normal file
90
coc.nvim.md
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
1. See [[Getting started]] to build the `ccls` executable
|
||||||
|
2. Install [coc.nvim](https://github.com/neoclide/coc.nvim)
|
||||||
|
|
||||||
|
`~/.config/nvim/coc-settings.json`
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"languageserver": {
|
||||||
|
"ccls": {
|
||||||
|
"command": "ccls",
|
||||||
|
"filetypes": ["c", "cpp", "cuda", "objc", "objcpp"],
|
||||||
|
"initializationOptions": {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
First example:
|
||||||
|
|
||||||
|
```zsh
|
||||||
|
cd /tmp; mkdir c; cd c
|
||||||
|
git init # let coc.nvim know this is a project
|
||||||
|
echo '#include <stddef.h>\nint main() {}' > a.cc
|
||||||
|
nvim a.cc
|
||||||
|
```
|
||||||
|
|
||||||
|
For a larger project, you'll need [[.ccls|Getting-started#ccls]] or [[compile_commands.json]] in your project root.
|
||||||
|
|
||||||
|
These features will work out-of-the-box. Find more on coc.nvim's README.
|
||||||
|
|
||||||
|
```vim
|
||||||
|
nmap <silent> <M-j> <Plug>(coc-definition)
|
||||||
|
nmap <silent> <C-,> <Plug>(coc-references)
|
||||||
|
nn <silent> K :call CocActionAsync('doHover')<cr>
|
||||||
|
```
|
||||||
|
|
||||||
|
### `textDocument/documentHighlight`
|
||||||
|
|
||||||
|
```vim
|
||||||
|
set updatetime=300
|
||||||
|
au CursorHold * sil call CocActionAsync('highlight')
|
||||||
|
au CursorHoldI * sil call CocActionAsync('showSignatureHelp')
|
||||||
|
```
|
||||||
|
|
||||||
|
### `$ccls/navigate`
|
||||||
|
|
||||||
|
Semantic navigation. Roughly,
|
||||||
|
|
||||||
|
"D" => first child declaration
|
||||||
|
"L" => previous declaration
|
||||||
|
"R" => next declaration
|
||||||
|
"U" => parent declaration
|
||||||
|
|
||||||
|
```vim
|
||||||
|
nn <silent><buffer> <C-l> :call CocLocations('ccls','$ccls/navigate',{'direction':'D'})<cr>
|
||||||
|
nn <silent><buffer> <C-k> :call CocLocations('ccls','$ccls/navigate',{'direction':'L'})<cr>
|
||||||
|
nn <silent><buffer> <C-j> :call CocLocations('ccls','$ccls/navigate',{'direction':'R'})<cr>
|
||||||
|
nn <silent><buffer> <C-h> :call CocLocations('ccls','$ccls/navigate',{'direction':'U'})<cr>
|
||||||
|
```
|
||||||
|
|
||||||
|
### Cross reference extensions
|
||||||
|
|
||||||
|
```vim
|
||||||
|
" bases
|
||||||
|
nn <silent> xb :call CocLocations('ccls','$ccls/inheritance')<cr>
|
||||||
|
" bases of up to 3 levels
|
||||||
|
nn <silent> xb :call CocLocations('ccls','$ccls/inheritance',{'levels':3})<cr>
|
||||||
|
" derived
|
||||||
|
nn <silent> xd :call CocLocations('ccls','$ccls/inheritance',{'derived':v:true})<cr>
|
||||||
|
" derived of up to 3 levels
|
||||||
|
nn <silent> xD :call CocLocations('ccls','$ccls/inheritance',{'derived':v:true,'levels':3})<cr>
|
||||||
|
|
||||||
|
" caller
|
||||||
|
nn <silent> xc :call CocLocations('ccls','$ccls/call')<cr>
|
||||||
|
" callee
|
||||||
|
nn <silent> xC :call CocLocations('ccls','$ccls/call',{'callee':v:true})<cr>
|
||||||
|
|
||||||
|
" $ccls/member
|
||||||
|
" member variables / variables in a namespace
|
||||||
|
nn <silent> xm :call CocLocations('ccls','$ccls/member')<cr>
|
||||||
|
" member functions / functions in a namespace
|
||||||
|
nn <silent> xf :call CocLocations('ccls','$ccls/member',{'kind':3})<cr>
|
||||||
|
" nested classes / types in a namespace
|
||||||
|
nn <silent> xs :call CocLocations('ccls','$ccls/member',{'kind':2})<cr>
|
||||||
|
|
||||||
|
nmap <silent> xt <Plug>(coc-type-definition)<cr>
|
||||||
|
nn <silent> xv :call CocLocations('ccls','$ccls/vars')<cr>
|
||||||
|
nn <silent> xV :call CocLocations('ccls','$ccls/vars',{'kind':1})<cr>
|
||||||
|
|
||||||
|
nn xx x
|
||||||
|
```
|
Loading…
Reference in New Issue
Block a user