当前位置:网站首页>【vim】vim插件YouCompleteMe配置文件
【vim】vim插件YouCompleteMe配置文件
2022-06-12 12:27:00 【weixin_43224306】
1.通过clangd编译具有对 C 系列语言的语义支持的 YCM :
cd ~/.vim/bundle/YouCompleteMe
python3 install.py --clangd-completer --verbose
//----------------------
/usr/bin/python3 /home/mumu/.vim/bundle/YouCompleteMe/third_party/ycmd/build.py --clangd-completer --verbose2.To simply compile with everything enabled, there's a --all flag. So, to install with all language features, ensure xbuild, go, node and npm tools are installed and in your PATH, then simply run:
cd ~/.vim/bundle/YouCompleteMe
python3 install.py --all --verbose
//我是用的是
cd ~/.vim/bundle/YouCompleteMe
python3 install.py --clangd-completer --all --verbose配置文件.ycm_extra_conf.py内容如下:
#自己定义
#配置C语言,C++语言函数提示目录
'-isystem',
'/usr/include',
'-isystem',
'/usr/include/c++/9',
#配置项目相关目录,头文进目录,测试目录
'-I',
'/home/mumu/Lars/base/mysql-connector-c/include',
'-I',
'/home/mumu/Lars/base/mysql-connector-c/include/mysql',
'-I',
'/home/mumu/Lars/base/mysql-connector-c/include/mysql/psi',
'-I',
'/home/mumu/Lars/base/proto',
'-I',
'/home/mumu/Lars/lars_dns/include',
'-I',
'/home/mumu/Lars/lars_lb_agent/include',
'-I',
'/home/mumu/Lars/lars_reactor/example/qps_test',
'-I',
'/home/mumu/Lars/lars_reactor/include',
'-I',
'/home/mumu/Lars/lars_reporter/include',
# This file is NOT licensed under the GPLv3, which is the license for the rest
# of YouCompleteMe.
#
# Here's the license text for this file:
#
# This is free and unencumbered software released into the public domain.
#
# Anyone is free to copy, modify, publish, use, compile, sell, or
# distribute this software, either in source code form or as a compiled
# binary, for any purpose, commercial or non-commercial, and by any
# means.
#
# In jurisdictions that recognize copyright laws, the author or authors
# of this software dedicate any and all copyright interest in the
# software to the public domain. We make this dedication for the benefit
# of the public at large and to the detriment of our heirs and
# successors. We intend this dedication to be an overt act of
# relinquishment in perpetuity of all present and future rights to this
# software under copyright law.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
# IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.
#
# For more information, please refer to <http://unlicense.org/>
from distutils.sysconfig import get_python_inc
import platform
import os.path as p
import subprocess
DIR_OF_THIS_SCRIPT = p.abspath( p.dirname( __file__ ) )
DIR_OF_THIRD_PARTY = p.join( DIR_OF_THIS_SCRIPT, 'third_party' )
DIR_OF_WATCHDOG_DEPS = p.join( DIR_OF_THIRD_PARTY, 'watchdog_deps' )
SOURCE_EXTENSIONS = [ '.cpp', '.cxx', '.cc', '.c', '.m', '.mm' ]
database = None
# These are the compilation flags that will be used in case there's no
# compilation database set (by default, one is not set).
# CHANGE THIS LIST OF FLAGS. YES, THIS IS THE DROID YOU HAVE BEEN LOOKING FOR.
flags = [
'-Wall',
'-Wextra',
'-Werror',
'-Wno-long-long',
'-Wno-variadic-macros',
'-fexceptions',
'-DNDEBUG',
# You 100% do NOT need -DUSE_CLANG_COMPLETER and/or -DYCM_EXPORT in your flags;
# only the YCM source code needs it.
'-DUSE_CLANG_COMPLETER',
'-DYCM_EXPORT=',
'-DYCM_ABSEIL_SUPPORTED',
# THIS IS IMPORTANT! Without the '-x' flag, Clang won't know which language to
# use when compiling headers. So it will guess. Badly. So C++ headers will be
# compiled as C headers. You don't want that so ALWAYS specify the '-x' flag.
# For a C project, you would set this to 'c' instead of 'c++'.
'-x',
'c++',
'-isystem',
'cpp/absl',
'-isystem',
'cpp/pybind11',
'-isystem',
'cpp/whereami',
'-isystem',
'cpp/BoostParts',
'-isystem',
get_python_inc(),
'-isystem',
'cpp/llvm/include',
'-isystem',
'cpp/llvm/tools/clang/include',
'-I',
'cpp/ycm',
'-I',
'cpp/ycm/ClangCompleter',
'-isystem',
'cpp/ycm/tests/gmock/googlemock/include',
'-isystem',
'cpp/ycm/tests/gmock/googletest/include',
'-isystem',
'cpp/ycm/benchmarks/benchmark/include',
'-std=c++17',
#自己定义
'-isystem',
'/usr/include',
'-isystem',
'/usr/include/c++/9',
'-I',
'/home/mumu/Lars/base/mysql-connector-c/include',
'-I',
'/home/mumu/Lars/base/mysql-connector-c/include/mysql',
'-I',
'/home/mumu/Lars/base/mysql-connector-c/include/mysql/psi',
'-I',
'/home/mumu/Lars/base/proto',
'-I',
'/home/mumu/Lars/lars_dns/include',
'-I',
'/home/mumu/Lars/lars_lb_agent/include',
'-I',
'/home/mumu/Lars/lars_reactor/example/qps_test',
'-I',
'/home/mumu/Lars/lars_reactor/include',
'-I',
'/home/mumu/Lars/lars_reporter/include',
]
# Set this to the absolute path to the folder (NOT the file!) containing the
# compile_commands.json file to use that instead of 'flags'. See here for
# more details: http://clang.llvm.org/docs/JSONCompilationDatabase.html
#
# You can get CMake to generate this file for you by adding:
# set( CMAKE_EXPORT_COMPILE_COMMANDS 1 )
# to your CMakeLists.txt file.
#
# Most projects will NOT need to set this to anything; you can just change the
# 'flags' list of compilation flags. Notice that YCM itself uses that approach.
compilation_database_folder = ''
def IsHeaderFile( filename ):
extension = p.splitext( filename )[ 1 ]
return extension in [ '.h', '.hxx', '.hpp', '.hh' ]
def FindCorrespondingSourceFile( filename ):
if IsHeaderFile( filename ):
basename = p.splitext( filename )[ 0 ]
for extension in SOURCE_EXTENSIONS:
replacement_file = basename + extension
if p.exists( replacement_file ):
return replacement_file
return filename
def PathToPythonUsedDuringBuild():
try:
filepath = p.join( DIR_OF_THIS_SCRIPT, 'PYTHON_USED_DURING_BUILDING' )
with open( filepath ) as f:
return f.read().strip()
except OSError:
return None
def Settings( **kwargs ):
# Do NOT import ycm_core at module scope.
import ycm_core
global database
if database is None and p.exists( compilation_database_folder ):
database = ycm_core.CompilationDatabase( compilation_database_folder )
language = kwargs[ 'language' ]
if language == 'cfamily':
# If the file is a header, try to find the corresponding source file and
# retrieve its flags from the compilation database if using one. This is
# necessary since compilation databases don't have entries for header files.
# In addition, use this source file as the translation unit. This makes it
# possible to jump from a declaration in the header file to its definition
# in the corresponding source file.
filename = FindCorrespondingSourceFile( kwargs[ 'filename' ] )
if not database:
return {
'flags': flags,
'include_paths_relative_to_dir': DIR_OF_THIS_SCRIPT,
'override_filename': filename
}
compilation_info = database.GetCompilationInfoForFile( filename )
if not compilation_info.compiler_flags_:
return {}
# Bear in mind that compilation_info.compiler_flags_ does NOT return a
# python list, but a "list-like" StringVec object.
final_flags = list( compilation_info.compiler_flags_ )
# NOTE: This is just for YouCompleteMe; it's highly likely that your project
# does NOT need to remove the stdlib flag. DO NOT USE THIS IN YOUR
# ycm_extra_conf IF YOU'RE NOT 100% SURE YOU NEED IT.
try:
final_flags.remove( '-stdlib=libc++' )
except ValueError:
pass
return {
'flags': final_flags,
'include_paths_relative_to_dir': compilation_info.compiler_working_dir_,
'override_filename': filename
}
if language == 'python':
return {
'interpreter_path': PathToPythonUsedDuringBuild()
}
return {}
def PythonSysPath( **kwargs ):
sys_path = kwargs[ 'sys_path' ]
interpreter_path = kwargs[ 'interpreter_path' ]
sys_path[ 0:0 ] = [ p.join( DIR_OF_THIS_SCRIPT ),
p.join( DIR_OF_THIRD_PARTY, 'bottle' ),
p.join( DIR_OF_THIRD_PARTY, 'regex-build' ),
p.join( DIR_OF_THIRD_PARTY, 'frozendict' ),
p.join( DIR_OF_THIRD_PARTY, 'jedi_deps', 'jedi' ),
p.join( DIR_OF_THIRD_PARTY, 'jedi_deps', 'parso' ),
p.join( DIR_OF_WATCHDOG_DEPS, 'watchdog', 'build', 'lib3' ),
p.join( DIR_OF_WATCHDOG_DEPS, 'pathtools' ),
p.join( DIR_OF_THIRD_PARTY, 'waitress' ) ]
sys_path.append( p.join( DIR_OF_THIRD_PARTY, 'jedi_deps', 'numpydoc' ) )
return sys_path边栏推荐
- Advantages and disadvantages of single page development and multi page development
- 【Leetcode】637. Layer average of binary tree
- [translation] go references - the go memory model | memory model for Chinese translation of official golang documents
- 开源项目-(ERP+酒店+电商)后台管理系统
- Promise knowledge
- Async/await for ES6
- From simple to deep - websocket
- 点云配准--gicp原理与其在pcl中的使用
- ITK Examples/RegistrationITKv4/DeformableRegistration
- Advanced chapter of C language -- ten thousand words explanation pointer and qsort function
猜你喜欢

Numpy numerical calculation basis

开源项目-(ERP+酒店+电商)后台管理系统

Rust language learning

C语言进阶篇——浮点型在内存中的存储

JS string array converted to numeric array and how to add the numbers in the array

大学生请假理由

JS convert string to array object

vant 标签栏+上拉加载+下拉刷新demo van-tabs+van-pull-refresh+van-list demo

【Leetcode】79. Word search

一个ES设置操作引发的“血案”
随机推荐
2021-11-16
Stress - system pressure simulation tool
大学生请假理由
NDT registration principle
安装canvas遇到的问题和运行项目遇到的报错
Differences between server-side rendering and client-side rendering (advantages and disadvantages)
C语言进阶篇——深度解剖数据在内存中的存储(配练习)
Problems encountered in installing canvas and errors encountered in running the project
Advanced C language -- storage of floating point in memory
Map and set of ES6
Matlab install license manager error -8
About message
For in and object The difference between keys()
Promise understanding has used promise to realize picture preloading (sequential loading)
LDAP和SSO集成能实现什么效果?
You can't just use console Log ()?
Tron API wave field transfer query interface PHP version package based on thinkphp5 attached interface document 20220602 version deployed interface applicable to any development language
NDT配准原理
TRON-api-波场转账查询接口-PHP版本-基于ThinkPHP5封装-附带接口文档-20220528版本
In depth anatomy of C language - key words & supplementary contents