Saya telah menguji clangd
untuk melihat apakah fungsi kelebihan beban sebenarnya dibedakan ketika mencari definisi yang benar dari baris kode di mana salah satu fungsi kelebihan digunakan. Dalam konfigurasi pengujian minimal saya menggunakan plugin vim vim-lsp
itu berhasil.
Konfigurasi Minimal
$MYVIMRC
adalah
source $VIMRUNTIME/defaults.vim
if executable('/usr/local/Cellar/llvm/7.0.0/bin/clangd')
augroup Clangd
autocmd User lsp_setup call lsp#register_server({
\ 'name': 'clangd',
\ 'cmd': {server_info->['/usr/local/Cellar/llvm/7.0.0/bin/clangd']},
\ 'whitelist': ['c', 'cpp', 'objc', 'objcpp'],
\ })
autocmd FileType c,cpp,objc,objcpp nmap <buffer> gd <plug>(lsp-definition)
autocmd FileType c,cpp,objc,objcpp setlocal omnifunc=lsp#complete
augroup END
endif
Instalasi vim-lsp
yang memerlukan async.vim
paket vim8
$ cd ~/.vim
$ git clone https://github.com/prabirshrestha/async.vim pack/prabirshrestha/start/async.vim/
$ git clone https://github.com/prabirshrestha/vim-lsp pack/prabirshrestha/start/vim-lsp/
Sekarang konfigurasi vim Anda akan terlihat seperti (menghilangkan file dan folder yang bersarang lebih dalam)
~/.vim
❯ tree -L 4 -F
.
├── pack/
│ └── prabirshrestha/
│ └── start/
│ ├── async.vim/
│ └── vim-lsp/
└── vimrc
5 directories, 1 file
Uji
Sekarang perhatikan file cpp
void abc(int a, int b) {
}
void abc(int a, int b, int c) {
}
int main(int argc, char const *argv[])
{
abc(1,2);
abc(1,2,3);
return 0;
}
Menekan gd
pada abc
dari
abc(1,2)
melompat ke baris pertama, dan dari
abc(1,2,3)
melompat ke baris kelima.
Lingkungan dan versi:
vim
: MacVim 8.1.950 (155); diinstal dari DMG dari github di macOS 10.14.3
clangd
: 7.0.0; diinstal dengan $ brew install llvm
(tidak $PATH
secara default, gunakan jalur absolut)
vim-lsp
: e3f6933 (7 Maret 2019) dan async.vim
: f301455 (13 Feb 2019)