当前位置:网站首页>【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边栏推荐
- Left and right cases + rotating pictures of small dots + no time
- Quic wire layout specification - packet types and formats | quic protocol standard Chinese translation (2) package type and format
- 【VIM】.vimrc配置,已经安装Vundle,YoucompleteMe
- Easy to use assistant tools and websites
- You can't just use console Log ()?
- 爱可可AI前沿推介(6.12)
- Macro compilation preprocessing header Win32_ LEAN_ AND_ MEAN
- Stress - system pressure simulation tool
- JS attribute operation and node operation
- Matlab install license manager error -8
猜你喜欢

itk 多分辨率图像 itk::RecursiveMultiResolutionPyramidImageFilter

【C语言】关键字static&&多文件&&猜字游戏

NDT配准原理

Time series database - incluxdb2 docker installation

You can't just use console Log ()?

Advanced C language -- storage of floating point in memory

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

Open source project - (erp+ Hotel + e-commerce) background management system

ELK搭建指南

C语言进阶篇——万字详解指针和qsort函数
随机推荐
【C语言】关键字static&&多文件&&猜字游戏
Ace configures IPv6, vs statically compiles ace Library
Difference between Definition and Declaration
一个ES设置操作引发的“血案”
JS convert string to array object
Take the web page animation effects that can be used. Don't you come and have a look?
Advantages and disadvantages of single page development and multi page development
What can LDAP and SSO integration achieve?
【您编码,我修复】WhiteSource正式更名为Mend
MySQL 分区表介绍与测试
Congratulations to splashtop for winning the 2022 it Europa "vertical application solution of the year" award
C语言进阶篇——浮点型在内存中的存储
Get all IPv4 and IPv6 addresses of this computer
轻量化---Project
[JS] some handwriting functions: deep copy, bind, debounce, etc
ELK搭建指南
Video speed doubling in PC browser
About message
Redis的主从复制原理
vtk 图像序列鼠标交互翻页