Comment puis-je faire en sorte que Syntastic reconnaisse la nouvelle syntaxe Ruby?

10

J'utilise Syntastic dans Vim, et cela met en évidence la nouvelle syntaxe Ruby comme des erreurs. Par exemple, si j'utilise les arguments de mots clés requis (introduits dans Ruby 2.1), comme ceci:

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

... il met en évidence la ligne de définition et indique "inattendu", "".

Comment puis-je lui faire reconnaître cela comme une syntaxe Ruby valide? J'ai déjà mis à jour ~/.vim/syntax/ruby.vim.

Nathan Long
la source
Remarque: ~/.vim/syntax/ruby.vimn'a rien à voir avec la vérification de la syntaxe dans les fichiers; il est pour la syntaxe mise en évidence . Voir robots.thoughtbot.com/writing-vim-syntax-plugins
Nathan Long

Réponses:

9

Spécifiez l'exécutable ruby ​​pour Syntastic

Syntastic appelle ruby -cpour vérifier la syntaxe d'un fichier, donc les erreurs qu'il montre dépendent de la version de ruby ​​qu'il utilise.

Vous pouvez le pointer vers celui que vous souhaitez utiliser comme ceci:

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

REMARQUE: sur les versions plus récentes de Syntastic:

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

$ type rubyvous indiquera où se trouve votre exécutable Ruby actuel. Les installateurs Ruby ont leurs propres conventions sur l'endroit où ils placent leurs binaires. Par exemple:

  • ruby-install place les installations ruby ~/.rubieset des versions spécifiques sur des chemins comme~/.rubies/ruby-2.2.0/bin/ruby
  • RVM place des installations rubis ~/.rvm/rubieset des versions spécifiques sur des chemins comme~/.rvm/rubies/ruby-2.2.0/bin/ruby
Nathan Long
la source
FYI: si vous utilisez rvm ce seraitlet g:syntastic_ruby_exec = '~/.rvm/rubies/ruby-2.2.0/bin/ruby'
Ben
@Ben good point - réponse mise à jour
Nathan Long
3
Pour la nouvelle version de syntastic, c'est:let g:syntastic_ruby_mri_exec='path/to/ruby/executable'
RantriX
1
Si vous utilisez rbenv, vous devriez pouvoir le faire let g:syntastic_ruby_exec = '~/.rbenv/shims/ruby'pour que lorsque les versions de rubis changent, il le ramasse automatiquement, je pense.
Thermatix
Nice @Thermatix .. J'ai utilisé system("rbenv which ruby")dans mon .vimrc
rthbound
4

En utilisant le macvim terminal, j'ai également eu ce problème, qui était aggravé par le fait que j'utilisais zsh, qui pour une raison quelconque ne respectait pas le binaire rvm que j'ai donné à la syntaxe. Je me suis rendu compte que mes chemins !echo $PATHétaient incorrects lors de l'exécution dans le terminal macvim, j'avais plusieurs chemins système ajoutés en haut qui n'étaient pas dans mon shell normal, provoquant toujours le chargement de l'IRM par défaut.

Pour résoudre ce problème, je n'avais pas du tout besoin de spécifier le vérificateur de syntaxe dans mon .vimrc, mais j'ai dû mettre à jour le démarrage de zsh. En utilisant le fil à: http://vim.1045645.n5.nabble.com/MacVim-and-PATH-td3388705.html J'ai fini par simplement courir sudo mv /etc/zshenv /etc/zprofileet maintenant tout fonctionne et mes chemins sont corrects dans mvim. Cela devrait également résoudre le problème de la mise à jour de la syntaxe lors de l'installation d'une nouvelle version de ruby ​​via rvm.

Adam
la source
C'est la vraie solution! Le problème est dû à une mise en garde avec zsh installé via brew dans OSX .
Jikku Jose
Question aléatoire - "terminal macvim" n'est-il pas seulement vim? Quels avantages retirez-vous de l'utilisation de Macvim dans le terminal par rapport à l'utilisation de plain vim?
Nick
0

Pour un projet Rails.

  • Définissez la version ruby ​​dans un .ruby-versionfichier à la racine du projet.
  • Et démarrez votre vim à partir de la racine du projet.

Syntastic effectuera la vérification de la syntaxe avec la version ruby ​​spécifiée.

lingceng
la source