2013-08-03 10 views
10

Mi sembra di avere un setup fantastico per la programmazione in C++ usando Vim ma non riesco a trovare un modo per dire a Vim, YCM e Syntastic dove cercare le intestazioni. Sarebbe davvero noioso dover impostare manualmente le variabili del percorso di inclusione per Vim, YCM e Syntastic ogni volta che voglio lavorare su un progetto quando questa informazione esiste nel Makefile. Esistono soluzioni automatizzate per l'impostazione di un percorso di inclusione globale?Vim, C++, YCM e Syntastic includono problemi di percorso

Modifica: Non troverà nemmeno le intestazioni se imposto il percorso in questo modo ": set path =".,/Usr/include, include, ../include,/home/steven/ovgl/include, ""

+0

Immagino che si possa creare un target makefile che generi la configurazione YCM dalle variabili makefile ... mai testato, ma uno script semplice potrebbe fare il trucco. Quindi per ogni nuovo progetto includerai quel target nel makefile, esegui 'make ycm_setup' e sarai pronto per il codice. –

+2

Sarebbe bello se tu pubblicassi i link ai plugin, o almeno i loro nomi completi ([YouCompleteMe invece di YCM] (https://github.com/Valloric/YouCompleteMe)). – mMontu

risposta

3

Le intestazioni dovrebbero apparire nei file di tag (vedi :h tags se non si sa a questo proposito).

Poi YouCompleteMe è in grado di leggere le informazioni sui tuoi intestazioni dal file di tag, come spiegato nella plugin faq:

YCM non legge identificatori dai miei tag file

First , inserisci let g:ycm_collect_identifiers_from_tags_files = 1 nel tuo vimrc.

Assicurati di utilizzare Exuberant Ctags per produrre i tuoi file di tag dal l'unico formato di tag supportato è il formato Ctags esuberante. Il formato da ctags "semplici" NON è supportato. L'output di ctags --version dovrebbe elencare "Ctags esuberanti".

Ctags deve essere chiamato con il --fields=+l (che è una L minuscola, non un uno) opzione perché YCM ha bisogno del campo language:<lang> nel tag uscita.

NOTA: Mac OS X viene fornito con ctags "normali" installati per impostazione predefinita. brew install ctags ti darà la versione esuberante di Ctags.

Assicurati inoltre che l'opzione dei tag Vim sia impostata correttamente. Vedi :h 'tags' per i dettagli. Se si desidera vedere quali file di tag YCM leggeranno per un dato buffer , eseguire :echo tagfiles() con il relativo buffer attivo. Notare che quella funzione elencherà solo i file di tag già esistenti.

+0

Ho aggiunto la variabile al mio vimrc, quindi ho provato sia "ctags -R * --fields = + l" che "etags -R * --fields = + l" ma YCM sembra non fare nulla con i tag. – SteveDeFacto

+0

Assicurati di utilizzare i Ctag esuberanti. Puoi anche controllare l'impostazione dell'opzione 'tag', come indicato nell'ultimo paragrafo della risposta. YCM dovrebbe considerare il contenuto di "tag", come indicato nelle sue FAQ; se credi che non lo sia, dovresti [aprire un problema sul plugin] (https://github.com/Valloric/YouCompleteMe/issues) – mMontu

+1

Non capisco perché non funzioni e quindi non lo farò essere in grado di spiegare il problema se ne apro uno. Ho cercato per settimane di far funzionare correttamente YCM, quindi sono tornato a clang_complete e supertab. sospiro ... – SteveDeFacto

1

Ho avuto un problema simile. Ne avevo bisogno per l'uso con lo sviluppo usando llvm. ho risolto seguendo la procedura riportata di seguito:

  1. Ctags -R --fields=+l * nella vostra base del progetto/code.
  2. Nel file .vimrc utente, aggiungere let g:ycm_collect_identifiers_from_tags_files = 1
  3. cp ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py ~/
  4. Aggiungi un'altra linea nel terminale Vimrc let g:ycm_global_ycm_extra_conf = '/home/<user>/ycm_extra_conf.py'
  5. reset o colpire bash

Nota: Si dovrebbe iniziare vim nella directory con i tag presenti in esso. Oppure potrebbe essere necessario specificare esplicitamente la directory in cui sono presenti i tag.

+1

Il manuale YCM afferma esplicitamente che è necessario modificare il file di configurazione e non solo utilizzare l'esempio fornito. –

0

È necessario cercare YCM-Generator. È uno script che genera ycm_extra_conf.py eseguendo make e cercando tutte le flag utilizzate. Lo esegui una volta per il progetto e lo esegui di nuovo solo quando cambia il file.

Problemi correlati