Acontece que era Ruby. Tanto quanto eu posso dizer, CoffeeTags não funciona no Ruby 1.9. Depois de mudar para o Ruby 1.8 CoffeeTags funcionou perfeitamente.
Eu verifiquei isso no OS X 10.7.2 executando o rvm e o Arch Linux não executando o rvm.
Estou tendo muito trabalho para conseguir CoffeeTags para veicular no Vim.
Como o website sugere, instalei o CoffeeTags
gem e anexei a configuração ao meu ~/.vimrc
. Quando abro o Tagbar, está vazio.
Aqui está uma captura de tela resumindo o problema:
Estou faltando alguma coisa? Estou executando o Ruby 1.9.2, o Vim 7.3, o CoffeeScript 1.1.3 e o Node.js 0.6.2. e OS X Lion.
Acontece que era Ruby. Tanto quanto eu posso dizer, CoffeeTags não funciona no Ruby 1.9. Depois de mudar para o Ruby 1.8 CoffeeTags funcionou perfeitamente.
Eu verifiquei isso no OS X 10.7.2 executando o rvm e o Arch Linux não executando o rvm.
O CoffeeTags parece gerar arquivos de tags inválidos para mim. Sempre que eu tentei usar tags de arquivos gerados por ele no vim eu iria conseguir:
Error detected while processing function <SNR>19_CommandTShowTagFinder:
line 2:
E431: Format error in tags file "tags"
Before byte 156
Press ENTER or type command to continue
No final, não tenho certeza de como isso é necessário. Eu adicionei isto:
--langdef=coffee
--langmap=coffee:.coffee
--regex-coffee=/(^|=[ \t])*class ([A-Za-z.]+)( extends [A-Za-z.]+)?$//c,class/
--regex-coffee=/^[ \t]*(module\.)?(exports\.)?@?([A-Za-z.]+):.*[-=]>.*$//f,function/
--regex-coffee=/^[ \t]*(module\.)?(exports\.)?([A-Za-z.]+)[ \t]+=.*[-=]>.*$//f,function/
--regex-coffee=/^[ \t]*([A-Za-z.]+)[ \t]+=[^->\n]*$//v,variable/
para o meu arquivo ~ / .ctags e depois usei o utilitário exuberant-ctags regular:
find . -iname '*\.coffee*' | ctags -L-
A explicação mais provável é que seu filetype
está definido incorretamente. Tente :set filetype?
em um de seus buffers de café. A configuração que a gem cria assume que o tipo de arquivo está definido como coffee
, portanto, se esse não for o caso, então não funcionará. Nesse caso, adicione uma linha como esta ao seu vimrc
:
autocmd BufNewFile,BufReadPost *.coffee setfiletype coffee
Talvez eu deva adicionar uma nota sobre isso em uma janela vazia da Tagbar ...
Se você não quiser instalar os docs sugeridos pela ruby tagbar: link
let g:tagbar_type_coffee = {
\ 'ctagstype' : 'coffee',
\ 'kinds' : [
\ 'c:classes',
\ 'm:methods',
\ 'f:functions',
\ 'v:variables',
\ 'f:fields',
\ ]
\ }
" Posix regular expressions for matching interesting items. Since this will
" be passed as an environment variable, no whitespace can exist in the options
" so [:space:] is used instead of normal whitespaces.
" Adapted from: https://gist.github.com/2901844
let s:ctags_opts = '
\ --langdef=coffee
\ --langmap=coffee:.coffee
\ --regex-coffee=/(^|=[ \t])*class ([A-Za-z_][A-Za-z0-9_]+\.)*([A-Za-z_][A-Za-z0-9_]+)( extends ([A-Za-z][A-Za-z0-9_.]*)+)?$//c,class/
\ --regex-coffee=/^[ \t]*(module\.)?(exports\.)?@?(([A-Za-z][A-Za-z0-9_.]*)+):.*[-=]>.*$//m,method/
\ --regex-coffee=/^[ \t]*(module\.)?(exports\.)?(([A-Za-z][A-Za-z0-9_.]*)+)[ \t]*=.*[-=]>.*$//f,function/
\ --regex-coffee=/^[ \t]*(([A-Za-z][A-Za-z0-9_.]*)+)[ \t]*=[^->\n]*$//v,variable/
\ --regex-coffee=/^[ \t]*@(([A-Za-z][A-Za-z0-9_.]*)+)[ \t]*=[^->\n]*$//f,field/
\ --regex-coffee=/^[ \t]*@(([A-Za-z][A-Za-z0-9_.]*)+):[^->\n]*$//f,static field/
\ --regex-coffee=/^[ \t]*(([A-Za-z][A-Za-z0-9_.]*)+):[^->\n]*$//f,field/
\ --regex-coffee=/((constructor|initialize):[ \t]*\()@(([A-Za-z][A-Za-z0-9_.]*)+)([ \t]*=[ \t]*[^,)]+)?//f,field/
\ --regex-coffee=/((constructor|initialize):[ \t]*\()@(([A-Za-z][A-Za-z0-9_.]*)+)([ \t]*=[ \t]*[^,)]+)?(,[ \t]*@(([A-Za-z][A-Za-z0-9_.]*)+)([ \t]*=[ \t]*[^,)]+)?){0}//f,field/
\ --regex-coffee=/((constructor|initialize):[ \t]*\()@(([A-Za-z][A-Za-z0-9_.]*)+)([ \t]*=[ \t]*[^,)]+)?(,[ \t]*@(([A-Za-z][A-Za-z0-9_.]*)+)([ \t]*=[ \t]*[^,)]+)?){1}//f,field/
\ --regex-coffee=/((constructor|initialize):[ \t]*\()@(([A-Za-z][A-Za-z0-9_.]*)+)([ \t]*=[ \t]*[^,)]+)?(,[ \t]*@(([A-Za-z][A-Za-z0-9_.]*)+)([ \t]*=[ \t]*[^,)]+)?){2}//f,field/
\ --regex-coffee=/((constructor|initialize):[ \t]*\()@(([A-Za-z][A-Za-z0-9_.]*)+)([ \t]*=[ \t]*[^,)]+)?(,[ \t]*@(([A-Za-z][A-Za-z0-9_.]*)+)([ \t]*=[ \t]*[^,)]+)?){3}//f,field/
\ --regex-coffee=/((constructor|initialize):[ \t]*\()@(([A-Za-z][A-Za-z0-9_.]*)+)([ \t]*=[ \t]*[^,)]+)?(,[ \t]*@(([A-Za-z][A-Za-z0-9_.]*)+)([ \t]*=[ \t]*[^,)]+)?){4}//f,field/
\ --regex-coffee=/((constructor|initialize):[ \t]*\()@(([A-Za-z][A-Za-z0-9_.]*)+)([ \t]*=[ \t]*[^,)]+)?(,[ \t]*@(([A-Za-z][A-Za-z0-9_.]*)+)([ \t]*=[ \t]*[^,)]+)?){5}//f,field/
\ --regex-coffee=/((constructor|initialize):[ \t]*\()@(([A-Za-z][A-Za-z0-9_.]*)+)([ \t]*=[ \t]*[^,)]+)?(,[ \t]*@(([A-Za-z][A-Za-z0-9_.]*)+)([ \t]*=[ \t]*[^,)]+)?){6}//f,field/
\ --regex-coffee=/((constructor|initialize):[ \t]*\()@(([A-Za-z][A-Za-z0-9_.]*)+)([ \t]*=[ \t]*[^,)]+)?(,[ \t]*@(([A-Za-z][A-Za-z0-9_.]*)+)([ \t]*=[ \t]*[^,)]+)?){7}//f,field/
\ --regex-coffee=/((constructor|initialize):[ \t]*\()@(([A-Za-z][A-Za-z0-9_.]*)+)([ \t]*=[ \t]*[^,)]+)?(,[ \t]*@(([A-Za-z][A-Za-z0-9_.]*)+)([ \t]*=[ \t]*[^,)]+)?){8}//f,field/
\ --regex-coffee=/((constructor|initialize):[ \t]*\()@(([A-Za-z][A-Za-z0-9_.]*)+)([ \t]*=[ \t]*[^,)]+)?(,[ \t]*@(([A-Za-z][A-Za-z0-9_.]*)+)([ \t]*=[ \t]*[^,)]+)?){9}//f,field/'
let $CTAGS = substitute(s:ctags_opts, '\v\([nst]\)', '\\', 'g')