deoplete-clang으로 편안한 C++ 편집! ! !
deoplete-clang이란?
deoplete-clang은 deoplete의 완성 소스입니다.
clang의 정적 구문 분석에 의한 보완을 간단하게 이용할 수 있으므로, neovim으로 C++를 쓰는 것이 현저하게 쾌적하게 됩니다.
이번에는 neovim에 deoplete-clang을 도입하는 방법을 씁니다.
dein.vim과 clang이 설치되어 있다고 가정합니다.
clang에 대해 우분투를 사용한다면 다음 패키지를 넣으십시오.
설치 방법
toml 파일에
zchee/deoplete-clang
를 추가합시다.내 설정은 다음과 같습니다.
[[plugins]]
repo = 'zchee/deoplete-clang'
hook_source = '''
let g:deoplete#sources#clang#libclang_path = '/usr/lib/llvm-3.8/lib/libclang-3.8.so.1'
let g:deoplete#sources#clang#clang_header = '/usr/include/clang'
'''
on_ft = ['c', 'cpp', 'cmake']
depends = ['deoplete.nvim']
clang의 공유 라이브러리, 헤더 파일의 경로를 지정합니다.
g:deoplete#sources#clang#clang_header
는 헤더 파일이 들어있는 디렉토리를 직접 지정하는 대신x.x.x/include/
가 뒤에 오도록 설정하십시오.위의 예라면
/usr/include/clang/x.x.x/include/*.h
에 헤더 파일이 들어 있습니다.README에 쓰여 있기 때문에 읽고 있으면 문제 없습니다만, 나는 읽지 않아서 이틀 정도 빠졌습니다.
또, 이번은 공유 라이브러리에의 패스를 기술했습니다만, 공유 라이브러리가 들어 있는 디렉토리를 지정해도 괜찮습니다.
설정은 이상입니다.
deoplete#omni#input_patterns
설정도 필요하지 않습니다.이제 C++ 파일을 열고 편집해 봅시다.
이와 같이,
[clang]
마커가 붙은 보완 메뉴가 출현해, deoplete-clang에 의한 보완이 유효한 것을 알 수 있다고 생각합니다.cmake 프로젝트에서 사용
deoplete-clang은
.clang
라는 파일을 준비하고,.clang
flags=<flags>
컴파일러에 전달할 옵션을 지정할 수도 있지만 JSON Compilation Database을 사용할 수도 있습니다.
cmake에서도 JSON Compilation Database가 지원되므로 cmake 프로젝트에서도 clang을 이용한 보완이 가능합니다.
예를 들어, 다음과 같은 간단한 프로젝트를 만듭니다.
├── .clang
├── CMakeLists.txt
├── build
├── main.cpp
└── third_party
└── picojson
└── picojson.h
CMakeLists.txt
project(test-cpp CXX)
cmake_minimum_required(VERSION 2.6)
set(CMAKE_CXX_STANDARD 11)
include_directories("third_party/picojson")
add_executable(test-cpp main.cpp)
.clang
compilation_database = "./build"
다음 명령은 빌드 디렉토리에
compilation_database.json
라는 JSON Compilation Database를 생성합니다.mkdir build
cd build
cmake ../ -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
이제 deoplete-clang이 적절하게 옵션을 붙이고 clang을 호출 해주기 때문에 이렇게 보완 할 수 있습니다.
여담 : CMakeLists.txt로 보완
여담이지만 deoplete-clang은 cmake 파일 내에서 명령 등을 보완하는 것도 가능합니다.
이것은 내 deoplete-clang 설정의 일부입니다.
on_ft에
cmake
가 추가되었음을 알 수 있습니다.dein_lazy.toml
on_ft = ['c', 'cpp', 'cmake']
이렇게하면 deoplete-clang에 포함 된 cmake의 보완 소스가 작업을 수행하게됩니다.
이곳은 특별히 README에 기재가 없었기 때문에, deoplete-clang의 보완 소스의 프로그램을 확인하고 있을 때를 깨달았습니다.
Reference
이 문제에 관하여(deoplete-clang으로 편안한 C++ 편집! ! !), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/musou1500/items/3f0b139d37d78a18786f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)