2012-04-23 17 views
12

Uso l'editor vim (su Ubuntu). Recentemente, ho lavorato con progetti di cuda di grandi dimensioni e quindi mi piacerebbe utilizzare l'utilità ctags per la navigazione del codice. L'elenco delle lingue supportate per esuberante-ctags [qui] (http://ctags.sourceforge.net/languages.html) non contiene ancora CUDA. Se qualcuno conosce un tweak per fare lo stesso, apprezzerei davvero l'aiuto.ctags + taglist per file .cu (CUDA)

Grazie

EDIT 1: ho trovato la seguente correzione temporanea.

Per creare il file di tag per i file CUDA, utilizzare ctags con la seguente opzione (presupponendo che la directory corrente contenga tutti i file cuda);

$ ctags --langmap = C++: + cu *

risposta

6

Dal CUDA C/C++ è basato su C++ si può semplicemente utilizzare la modalità C++.. Puoi aggiungere la mappa della lingua usando --langmap=c++:+.cu.

+0

Grazie, mi sono imbattuto casualmente in una soluzione simile (non completamente corretta come ho usato C anziché C++) dopo aver postato la soluzione. – Abhinav

+0

CUDA C/C++ è basato su C++, proprio come in C++ standard, puoi limitarti ad usare il sottoinsieme C se lo desideri! – Tom

+0

FUNZIONA SPLENDIDAMENTE !!!! Ero preoccupato se questo fosse in grado di identificare le funzioni del kernel (quelle con <<<> >>) ... con mia sorpresa, funziona e funziona perfettamente. Grazie Tom. – Abhinav

4

Non so su taglist, ma se si utilizza il plugin Tagbar (un rifare di taglist), è possibile aggiungere la seguente riga al .vim/autoload/tagbar.vim:

let s:known_types.cuda = type_cpp

metterlo a destra dopo la riga:

let s:known_types.cpp = type_cpp

+0

Come si fa a farlo funzionare per i file * .cuh? – dalibocai

+0

@dalibocai '' 'au BufNewFile, BufRead * .cuh set ft = cuda''' nel tuo vimrc – Azrael3000

2

Per taglist finestra divisa, è possibile aggiungere le seguenti linee

" cu language 
let s:tlist_def_cu_settings = 'c++;n:namespace;v:variable;d:macro;t:typedef;' . 
         \ 'c:class;g:enum;s:struct;u:union;f:function' 

sotto

" c++ language 
let s:tlist_def_cpp_settings = 'c++;n:namespace;v:variable;d:macro;t:typedef;' . 
          \ 'c:class;g:enum;s:struct;u:union;f:function' 

in taglist.vim

0

universal-ctags (https://ctags.io) ha built-in parser per CUDA.

$ ./ctags --list-maps=CUDA 
CUDA  *.cu *.cuh 
Problemi correlati