Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Vim, C++, YCM, and Syntastic include path problems

Tags:

c++

vim

syntastic

I feel that I have an awesome setup for C++ programming using Vim but I can't find a way to tell Vim, YCM, and Syntastic where to search for headers. It would be really annoying to have to manually set the include path variables for Vim, YCM, and Syntastic every time I want to work on a project when this information exists in the Makefile. Is there any automated solutions for setting a global include path?

Edit: It won't even find the headers if I set the path like this ":set path = ".,/usr/include,include,../include,/home/steven/ovgl/include,,""

like image 233
SteveDeFacto Avatar asked Aug 03 '13 00:08

SteveDeFacto


People also ask

Can syntastic or YCM find common and debug files?

the syntastic or YCM always show it can NOT find common.h and debug.h, other head files are OK.

How to add ctags to a Vim file?

I solved it by following the below steps: Ctags -R --fields=+l * in your project/code base. Note: You should start vim in the directory with the tags present in it. Or you may need to explicitly specify the directory where the tags are present.

Where should I start Vim?

Note: You should start vim in the directory with the tags present in it. Or you may need to explicitly specify the directory where the tags are present. Thanks for contributing an answer to Stack Overflow!


1 Answers

Your headers should appear in your tag files (see :h tags if you don't know about it).

Then YouCompleteMe is able to read the information about your headers from the tag file, as explained in the plugin faq:

YCM does not read identifiers from my tags files

First, put let g:ycm_collect_identifiers_from_tags_files = 1 in your vimrc.

Make sure you are using Exuberant Ctags to produce your tags files since the only supported tag format is the Exuberant Ctags format. The format from "plain" ctags is NOT supported. The output of ctags --version should list "Exuberant Ctags".

Ctags needs to be called with the --fields=+l (that's a lowercase L, not a one) option because YCM needs the language:<lang> field in the tags output.

NOTE: Mac OS X comes with "plain" ctags installed by default. brew install ctags will get you the Exuberant Ctags version.

Also make sure that your Vim tags option is set correctly. See :h 'tags' for details. If you want to see which tag files YCM will read for a given buffer, run :echo tagfiles() with the relevant buffer active. Note that that function will only list tag files that already exist.

like image 72
mMontu Avatar answered Sep 18 '22 10:09

mMontu