diff options
-rw-r--r-- | config/ycm.vim | 4 | ||||
-rw-r--r-- | misc/ycm_conf.py | 54 | ||||
-rw-r--r-- | vimrc | 1 |
3 files changed, 58 insertions, 1 deletions
diff --git a/config/ycm.vim b/config/ycm.vim new file mode 100644 index 0000000..ca476c6 --- /dev/null +++ b/config/ycm.vim @@ -0,0 +1,4 @@ +let g:ycm_use_clangd = 0 +let $VIMHOME=expand('<sfile>:p:h:h') +let g:ycm_global_ycm_extra_conf = expand('<sfile>:p:h:h').'/misc/ycm_conf.py' +let g:ycm_confirm_extra_conf = 1 diff --git a/misc/ycm_conf.py b/misc/ycm_conf.py new file mode 100644 index 0000000..fe46ed2 --- /dev/null +++ b/misc/ycm_conf.py @@ -0,0 +1,54 @@ +import platform +import os + +DIR_OF_THIS_SCRIPT = os.path.abspath( os.path.dirname( __file__ ) ) +SOURCE_EXTENSIONS = [ '.cpp', '.cxx', '.cc', '.c', '.m', '.mm' ] + +# 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', +# 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++', +] + +# Clang automatically sets the '-std=' flag to 'c++14' for MSVC 2015 or later, +# which is required for compiling the standard library, and to 'c++11' for older +# versions. +if platform.system() != 'Windows': + flags.append( '-std=c++14' ) + +def IsHeaderFile( filename ): + extension = os.path.splitext( filename )[ 1 ] + return extension in [ '.h', '.hxx', '.hpp', '.hh' ] + + +def FindCorrespondingSourceFile( filename ): + if IsHeaderFile( filename ): + basename = os.path.splitext( filename )[ 0 ] + for extension in SOURCE_EXTENSIONS: + replacement_file = basename + extension + if os.path.exists( replacement_file ): + return replacement_file + return filename + +def Settings( **kwargs ): + if kwargs[ 'language' ] == 'cfamily': + filename = FindCorrespondingSourceFile( kwargs[ 'filename' ] ) + return { + 'flags': flags, + 'include_paths_relative_to_dir': DIR_OF_THIS_SCRIPT, + 'override_filename': filename + } + return {} @@ -1,5 +1,4 @@ let g:airline_powerline_fonts=1 -let g:ycm_use_clangd = 0 set laststatus=2 " set UTF-8 encoding |