Como faço para que o Syntastic reconheça a sintaxe mais recente do Ruby?

10

Estou usando o Syntastic no Vim e destaca a sintaxe do Ruby mais recente como erros. Por exemplo, se eu usar argumentos de palavra-chave necessários (introduzidos no Ruby 2.1), assim:

def distance(from:, to:)
  # whatever
end

... destaca a linha de definição e diz "inesperado ','".

Como posso reconhecê-lo como sintaxe válida do Ruby? Eu já atualizei ~/.vim/syntax/ruby.vim.

Nathan Long
fonte
Nota: ~/.vim/syntax/ruby.vimnão tem nada a ver com a verificação de sintaxe nos arquivos; é para realçar a sintaxe . Veja robots.thoughtbot.com/writing-vim-syntax-plugins
Nathan Long

Respostas:

9

Especifique o executável ruby ​​para Syntastic

Chamadas sintáticas ruby -cpara verificar a sintaxe de um arquivo; portanto, os erros exibidos dependem de qual versão do ruby ​​está sendo usada.

Você pode apontar para o que você deseja usar assim:

let g:syntastic_ruby_exec = 'path/to/ruby/executable'

NOTA: nas versões mais recentes do Syntastic:

let g:syntastic_ruby_mri_exec = 'path/to/ruby/executable'

$ type rubydirá onde está o seu atual executável Ruby. Os instaladores de Ruby têm suas próprias convenções sobre onde eles colocam seus binários. Por exemplo:

  • O ruby-install coloca as instalações do ruby ~/.rubiese versões específicas em caminhos como~/.rubies/ruby-2.2.0/bin/ruby
  • O RVM coloca instalações ruby ~/.rvm/rubiese versões específicas em caminhos como~/.rvm/rubies/ruby-2.2.0/bin/ruby
Nathan Long
fonte
FYI: se você estiver usando rvm serialet g:syntastic_ruby_exec = '~/.rvm/rubies/ruby-2.2.0/bin/ruby'
Ben
@Ben good point - resposta atualizada #
Nathan Long
3
Para a versão mais recente do sintático, é:let g:syntastic_ruby_mri_exec='path/to/ruby/executable'
RantriX 15/05
11
Se você estiver usando o rbenv, poderá fazê- let g:syntastic_ruby_exec = '~/.rbenv/shims/ruby'lo para que, quando as versões ruby ​​mudarem, ele as pegue automaticamente, eu acho.
Thermatix
Nice @Thermatix .. Eu usei system("rbenv which ruby")no meu .vimrc
rthbound
4

Usando o terminal macvim, também tive esse problema, que foi agravado pelo fato de estar usando o zsh, que por algum motivo não respeitava o binário do rvm que eu forneci sintático. Percebi que meus caminhos !echo $PATHestavam incorretos ao rodar no terminal macvim, eu tinha vários caminhos do sistema anexados à parte superior que não estavam no meu shell regular ainda causando o carregamento da ressonância magnética padrão.

Para corrigir isso, não precisei especificar o verificador de sintaxe no meu .vimrc, mas tive que atualizar como o zsh foi iniciado. Usando o encadeamento em: http://vim.1045645.n5.nabble.com/MacVim-and-PATH-td3388705.html Acabei simplesmente executando sudo mv /etc/zshenv /etc/zprofilee agora tudo funciona e meus caminhos estão corretos no mvim. Isso também deve resolver o problema de atualização do sintático ao instalar uma nova versão do ruby ​​via rvm.

Adão
fonte
Esta é a correção real! O problema é devido a uma ressalva com o zsh instalado via brew no OSX .
Jikku Jose
Pergunta aleatória - "terminal macvim" não é apenas vim? Quais benefícios você ganha ao usar o Macvim no terminal ao usar o vim simples?
Nick
0

Para um projeto Rails.

  • Defina a versão ruby ​​em um .ruby-versionarquivo na raiz do projeto.
  • E inicie o seu vim a partir da raiz do projeto.

O Syntastic fará a verificação de sintaxe com a versão ruby ​​especificada.

lingceng
fonte