2015-08-12 2 views
1

В попытке добавить включенные пути к Syntastic (3.6.0-106; Vim 7.3), чтобы остановить его от предоставления фатальной ошибки при первом включении, он не может найти, я попытался создать .syntastic_c_config файл. Там не много информации о том, как это должно работать, но есть ссылки там, и я последовал их примеру:Файл конфигурации Syntastic C

-I/path/to/include 
-I/you/get/the/idea 
-L/some/library 
-lfoo 
-lbar 
-DHAVE_SOME_FLAG 
-pedantic 
-Wall 
-std=c99 

То есть, один компилятор аргумент в каждой строке.

Это имеет эффект удаления практически все проверки ошибок, если не заставить его :SynasticCheck - в этот момент, кажется, поработать немного немного лучше, но не совсем, как я ожидал. Однако в любом случае, если я :echo g:syntastic_c_config_file (или любой другой вариант, который я ожидаю установить), Vim просто дает мне неопределенное предупреждение переменной.

Я явно делаю что-то принципиально неправильное, но я не совсем уверен, что!

+0

Почему вы ожидаете, что 'g: syntastic_c_config_file' будет установлен, если вы его не установили? Вы пытались включить отладку, чтобы узнать, что происходит? Вы прочитали страницу wiki для gcc checker? –

+0

Я читал https://github.com/scrooloose/syntastic/wiki/C%3A---gcc, где он предположил, что 'g: syntastic_c_config_file' по умолчанию -' .syntastic_c_config'. В самом деле, когда этот файл существует, поведение отличается, поэтому он определенно делает что-то независимо от меня, явно устанавливая переменную ... Я не знал о режиме отладки; Я попробую. – Xophmeister

+0

С 'let syntastic_debug = 63' кажется, что Syntastic * правильно открывает файл' .syntastic_c_config' (независимо от того, что он не задан) и передает эти параметры в вызов 'gcc' (без установки' g: syntastic_c_ * 'явно). Вывод жаловался, что мои флаги '-L' и' -l' были бесполезны: когда я удалил их из конфигурации, все это начало работать. – Xophmeister

ответ

1

Оказывается, что Syntastic будет передавать конфигурационный файл без явной установки соответствующей переменной. Более того, содержимое конфигурационного файла не передается в любые переменные syntastic_c_*, но тем не менее передается в вызов gcc. Syntastic также достаточно умен, чтобы искать файл конфигурации (например, он будет подниматься до тех пор, пока не найдет его, поэтому вы можете сохранить .syntastic_c_config в корне вашего проекта).

Что касается причины сбоя, журнал отладки показывал, что мой компилятор игнорировал флаги библиотеки (-L/some/path и -lfoo), и это блокировало Syntastic из любой последующей проверки синтаксиса. Удаление этих строк из моего файла конфигурации решило проблему.

Смежные вопросы