2012-04-23 15 views
12

Uso el editor vim (en Ubuntu). Recientemente, he estado trabajando con grandes proyectos de cuda y, por lo tanto, me gustaría utilizar la utilidad ctags para la navegación de códigos. La lista de idiomas admitidos para ctags exuberantes [aquí] (http://ctags.sourceforge.net/languages.html) no contiene CUDA hasta el momento. Si alguien conoce un truco para hacer lo mismo, realmente agradecería la ayuda.ctags + taglist para archivos .cu (CUDA)

Gracias

EDIT 1: He encontrado la siguiente solución temporal.

Para crear el archivo de etiqueta para los archivos CUDA, utilice ctags con la siguiente opción (suponiendo que su directorio actual contiene todos sus archivos cuda);

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

Respuesta

6

Desde CUDA C/C++ se basa en C++ sólo se puede utilizar el modo C++.. Puede agregar el mapa del idioma usando --langmap=c++:+.cu.

+0

Gracias, accidentalmente me encontré con una corrección similar (no del todo correcta, ya que utilicé C en lugar de C++) después de publicar la solución. – Abhinav

+0

CUDA C/C++ se basa en C++, al igual que en C++ estándar, ¡puede limitarse a usar el subconjunto C si lo desea! – Tom

+0

¡FUNCIONA HERMOSAMENTE! Me preocupaba si esto podría identificar las funciones del kernel (las que tienen <<<> >>) ... para mi sorpresa, funciona y funciona perfecto. Gracias Tom. – Abhinav

4

No sé sobre taglist, pero si usted está usando el plugin Tagbar (un hacer de nuevo de la lista de etiquetas), se puede añadir la siguiente línea a .vim/carga automática/tagbar.vim:

let s:known_types.cuda = type_cpp

ponerlo justo después de la línea:

let s:known_types.cpp = type_cpp

+0

¿Cómo lo haces funcionar para los archivos * .cuh? – dalibocai

+0

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

2

Para taglist ventana partida, se pueden agregar las siguientes líneas

" 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' 

continuación

" 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' 

en taglist.vim

0

universales-ctags (https://ctags.io) ha incorporado en el programa de análisis de CUDA.

$ ./ctags --list-maps=CUDA 
CUDA  *.cu *.cuh 
Cuestiones relacionadas