| Status | |
|---|---|
| Ubuntu 14.04 |
C/C++/Objective-C/Objective-C++ source for deoplete.nvim
Deoplete-clang offers asynchronous completion of code written in C, C++, Objective-C and Objective-C++ inside of Neovim. It is built upon the following tools:
The dark powered asynchronous completion framework for Neovim. It offers a fast, fully asynchronous, nonblocking user interface, customizable sources for each languages, and more. The Next generation of word completion.
A Python 3 port of the official clang compiler bindings for Python. The original author is @Anteru, I forked it and follow the latest of llvm clang.
https://github.com/neovim/neovim https://github.com/neovim/python-client
https://github.com/Shougo/deoplete.nvim
http://llvm.org https://github.com/apple/swift-clang
See the Neovim wiki.
Neovim remote client for Python. See https://github.com/neovim/python-client
pip2 install --upgrade neovim
pip3 install --upgrade neovimFor GNU/Linux, e.g. apt family,
apt-get install clangFor macOS, use Homebrew:
brew install llvm --with-clangThis has not been tested, it is recommended to build from source.
See http://clang.llvm.org/get_started.html or try the build-llvm script.
You will need cmake, ninja or Xcode.
" dein.vim (fastest)
call dein#add('Shougo/deoplete.nvim')
call dein#add('zchee/deoplete-clang')
" NeoBundle
NeoBundle 'Shougo/deoplete.nvim'
NeoBundle 'zchee/deoplete-clang'
" vim-plug
Plug 'Shougo/deoplete.nvim'
Plug 'zchee/deoplete-clang'| Setting value | Default | Required |
|---|---|---|
g:deoplete#sources#clang#libclang_path |
'' |
Yes |
g:deoplete#sources#clang#clang_header |
'' |
Yes |
g:deoplete#sources#clang#std |
See this section | No |
g:deoplete#sources#clang#flags |
See this section | No |
g:deoplete#sources#clang#sort_algo |
'' |
No |
g:deoplete#sources#clang#clang_complete_database |
'' |
No |
g:deoplete#sources#clang#include_default_arguments |
False |
No |
g:deoplete#sources#clang#filter_availability_kinds |
[] |
No |
| Required | Yes |
| Type | string |
| Default | - |
| Example | path/to/lib/libclang.so |
The libclang shared object (dynamic library) file path. On GNU/Linux the file
name is libclang.so. On macOS it is libclang.dylib. If you cannot find
file libclang.so use libclang.so.1 instead. libclang.so is only availible if
libclang-dev is installed.
If you have trouble locating the library you can use the find command,
# On GNU/Linux
[sudo] find / -name libclang.so
# On macOS
mdfind -name libclang.dylib| Required | Yes |
| Type | string |
| Default | - |
| Example | path/to/lib/clang |
The clang built-in include header directory path; not clang-c, and not
the required clang version. Deoplete-clang always use the latest clang
version.
Example:
/opt/llvm/lib/clang
└── 3.9.0
├── include
│ ├── Intrin.h
│ ├── __clang_cuda_cmath.h
│ ├── __clang_cuda_runtime_wrapper.h
│ ├── __stddef_max_align_t.h
│ ├── __wmmintrin_aes.h
│ ├── __wmmintrin_pclmul.h
│ ├── adxintrin.h
│ ├── altivec.h
│ ├── ammintrin.h
│ ├── arm_acle.h
│ ├── arm_neon.h
.
.
.
│ ├── stdalign.h
│ ├── stdarg.h
│ ├── stdatomic.h
│ ├── stdbool.h
│ ├── stddef.h
│ ├── stdint.h
.
.
.
│ ├── xsavecintrin.h
│ ├── xsaveintrin.h
│ ├── xsaveoptintrin.h
│ ├── xsavesintrin.h
│ └── xtestintrin.h
├── lib
│ └── darwin
└── vtables_blacklist.txt| Required | No |
| Type | dict |
| C Default | c11 |
| C++ Default | c++1z |
| Objective-C Default | c11 |
| Objective-C++ Default | c++1z |
| Example | {'c': 'c11', 'cpp': 'c++1z', 'objc': 'c11', 'objcpp': 'c++1z'} |
The standard version for each of the C family languages. By default, use the lastest version supported by clang.
| Required | No |
| Type | list |
| C Default | ['-x', 'c'] |
| C++ Default | ['-x', 'c++'] |
| Objective-C Default | ['-x', 'objective-c'] |
| Objective-C++ Default | ['-x', 'objective-c++'] |
| Example | ["-fblocks",] |
C(XX)FLAGS for generating completions. Setting value other than default.
Does not need -x c or similar.
If you want to know the default clang build flags your of your installation you can try
# C
echo | clang -v -E -x c -
# C++
echo | clang -v -E -x c++ -
# Objective-C
echo | clang -v -E -x objective-c -
# Objective-C++
echo | clang -v -E -x objective-c++ -For example, on macOS the settings would correspond to:
let g:deoplete#sources#clang#flags = [
\ "-cc1",
\ "-triple", "x86_64-apple-macosx10.11.0",
\ "-isysroot", "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk",
.
.
.
\ "-fmax-type-align=16",
\ ]| Required | No |
| Type | string |
| Default | '' |
| Example | priority or alphabetical |
The sorting algorithm for libclang completion results. Available values are
priority or alphabetical.
The default ('') uses the deoplete.nvim sorting algorithm.
priority sorts the way libclang determines priority, alphabetical sorts by
alphabetical order.
| Required | No |
| Type | string |
| Default | '' |
| Example | /path/to/neovim/build |
Support a clang JSON compilation database format specification; see http://clang.llvm.org/docs/JSONCompilationDatabase.html for more information.
The setting value must be an existing compile_commands.json directory.
This setting is optional.
When this setting is used the compilation database file will take precedence
over the g:deoplete#sources#clang#flags setting. Parsing the compilation
database file will take some time, so please on use this setting if you really
need to support a compilation database.
I'm planning the rewrite the parser in Go for faster parsing in the future.
| Required | No |
| Type | bool |
| Default | False |
| Example | True or False |
Include default arguments in function signatures.
| Required | No |
| Type | list |
| Default | [] |
| Example | ['NotAvailable', 'NotAccessible'] |
Filter candidates to exclude the listed availability kinds. An empty list will does not perform any filtering.
Availability kind strings include:
| String | Description |
|---|---|
| 'Available' | The entity is available |
| 'Deprecated' | The entity is available, but has been deprecated |
| 'NotAvailable' | The entity is not available, any use of it will be an error |
| 'NotAccessible' | The entity is available, but not accessible, any use of it will be an error |
For example, using 'NotAccessible' would result in private class members being filtered out from the candidates when they are not accessible from the given context.
Deoplete-clang supports compiler-flags local to individual projects. It will
search the current working directory for a .clang file; if no such file is
found it will try searching the parent directory. The format of the .clang
file is either
flags = <flags>
or
compilation_database = "<path to compilation_database>"
The former requires all compiler flags to be written on one line. For example:
flags = -I/path/to/include1 -I/path/to/include2. The format of the latter
requires the path (relative to the .clang file) to a clang JSON compilation
database format specification as described here:
http://clang.llvm.org/docs/JSONCompilationDatabase.html
This is not supported. You should use the neoinclude plugin instead: https://github.com/Shougo/neoinclude.vim