¿Cómo puedo hacer que Syntastic reconozca la nueva sintaxis de Ruby?

10

Estoy usando Syntastic en Vim, y destaca la nueva sintaxis de Ruby como errores. Por ejemplo, si uso argumentos de palabras clave requeridos (introducidos en Ruby 2.1), así:

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

... resalta la línea de definición y dice "inesperado ','".

¿Cómo puedo lograr que reconozca esto como una sintaxis válida de Ruby? Ya lo he actualizado ~/.vim/syntax/ruby.vim.

Nathan Long
fuente
Nota: ~/.vim/syntax/ruby.vimno tiene nada que ver con verificar la sintaxis en los archivos; Es para resaltar la sintaxis . Ver robots.thoughtbot.com/writing-vim-syntax-plugins
Nathan Long

Respuestas:

9

Especifique el ejecutable ruby ​​para Syntastic

Llamadas fantásticas ruby -cpara verificar la sintaxis de un archivo, por lo que los errores que muestra dependen de la versión de ruby ​​que esté usando.

Puede señalarlo al que desea usar así:

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

NOTA: en versiones más nuevas de Syntastic:

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

$ type rubyle dirá dónde está su ejecutable actual de Ruby. Los instaladores de Ruby tienen sus propias convenciones sobre dónde ubican sus archivos binarios. P.ej:

  • ruby-install coloca instalaciones de ruby ~/.rubiesy versiones específicas en rutas como~/.rubies/ruby-2.2.0/bin/ruby
  • RVM coloca instalaciones de ruby ~/.rvm/rubiesy versiones específicas en rutas como~/.rvm/rubies/ruby-2.2.0/bin/ruby
Nathan Long
fuente
FYI: si está utilizando rvm seríalet g:syntastic_ruby_exec = '~/.rvm/rubies/ruby-2.2.0/bin/ruby'
Ben
@Ben buen punto - respuesta actualizada
Nathan Long
3
Para la versión más nueva de Syntastic, es:let g:syntastic_ruby_mri_exec='path/to/ruby/executable'
RantriX
1
Si estás usando rbenv, deberías poder hacerlo let g:syntastic_ruby_exec = '~/.rbenv/shims/ruby'para que cuando las versiones de ruby ​​cambien, debería recogerlo automáticamente, creo.
Thermatix
Nice @Thermatix .. Lo usé system("rbenv which ruby")en mi .vimrc
rthbound
4

Usando terminal macvim también tuve este problema, que se agravó por el hecho de que estaba usando zsh, que por alguna razón no respetaba el binario rvm que di fantástico. Me di cuenta de que mis rutas !echo $PATHeran incorrectas cuando se ejecutaba en el terminal macvim, tenía varias rutas del sistema adjuntas a la parte superior que no estaban en mi shell normal y todavía causaban que se cargara la MRI predeterminada.

Para solucionar esto, no necesitaba especificar el verificador de sintaxis en mi .vimrc, sin embargo, tuve que actualizar cómo comenzó zsh. Usando el hilo en: http://vim.1045645.n5.nabble.com/MacVim-and-PATH-td3388705.html Terminé simplemente corriendo sudo mv /etc/zshenv /etc/zprofiley ahora todo funciona y mis caminos son correctos en mvim. Esto también debería resolver el problema de actualizar Syntastic al instalar una nueva versión de Ruby a través de rvm.

Adán
fuente
Esta es la solución real! El problema se debe a una advertencia con zsh instalado a través de brew en OSX .
Jikku Jose
Pregunta aleatoria: ¿no es "terminal macvim" solo vim? ¿Qué beneficios obtienes al usar Macvim en la terminal sobre el uso de vim simple?
Nick
0

Para un proyecto de Rails.

  • Establezca la versión de ruby ​​en un .ruby-versionarchivo en la raíz del proyecto.
  • Y comience su vim desde la raíz del proyecto.

Syntastic hará la verificación de sintaxis con la versión ruby ​​especificada.

lingceng
fuente