Come posso fare in modo che Syntastic riconosca la sintassi Ruby più recente?


10

Sto usando Syntastic in Vim e mette in evidenza la nuova sintassi di Ruby come errori. Ad esempio, se utilizzo argomenti di parole chiave obbligatori (introdotti in Ruby 2.1), in questo modo:

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

... evidenzia la linea di definizione e dice "imprevisto", "".

Come posso convincerlo a riconoscerlo come sintassi di Ruby valida? Ho già aggiornato ~/.vim/syntax/ruby.vim.


Nota: ~/.vim/syntax/ruby.vimnon ha nulla a che fare con il controllo della sintassi nei file; è per l' evidenziazione della sintassi . Vedi robots.thoughtbot.com/writing-vim-syntax-plugins
Nathan Long

Risposte:


9

Specificare l'eseguibile ruby ​​per Syntastic

Chiamate sintetiche ruby -cper verificare la sintassi di un file, quindi gli errori che mostra dipendono dalla versione di ruby ​​utilizzata.

Puoi indicarlo a quello che vuoi usare in questo modo:

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

NOTA: nelle versioni più recenti di Syntastic:

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

$ type rubyti dirà dove si trova il tuo eseguibile Ruby attuale. Gli installatori di Ruby hanno le loro convenzioni su dove posizionano i loro binari. Per esempio:

  • ruby-install inserisce le installazioni di ruby ~/.rubiese versioni specifiche in percorsi come~/.rubies/ruby-2.2.0/bin/ruby
  • RVM inserisce installazioni ruby ~/.rvm/rubiese versioni specifiche in percorsi come~/.rvm/rubies/ruby-2.2.0/bin/ruby

Cordiali saluti: se stai usando rvm sarebbelet g:syntastic_ruby_exec = '~/.rvm/rubies/ruby-2.2.0/bin/ruby'
Ben

@Ben buon punto - risposta aggiornata
Nathan Long

3
Per la versione più recente di sintetico, è:let g:syntastic_ruby_mri_exec='path/to/ruby/executable'
RantriX

1
Se stai usando rbenv dovresti essere in grado di fare in let g:syntastic_ruby_exec = '~/.rbenv/shims/ruby'modo che quando cambiano le versioni di ruby ​​dovrebbe prenderlo automaticamente, penso.
Thermatix,

Nice @Thermatix .. L'ho usato system("rbenv which ruby")nel mio .vimrc
rthbound il

4

Usando il terminale macvim ho anche avuto questo problema, che è stato aggravato dal fatto che stavo usando zsh, che per qualche ragione non rispettava il binario rvm che ho dato sintetico. Mi sono reso conto che i miei percorsi erano errati durante l'esecuzione !echo $PATHnel terminale macvim, avevo diversi percorsi di sistema aggiunti all'inizio che non erano nella mia shell normale causando ancora il caricamento della risonanza magnetica predefinita.

Per risolvere questo problema, non avevo bisogno di specificare il controllo della sintassi nel mio .vimrc, tuttavia ho dovuto aggiornare come è iniziato zsh. Usando il thread su: http://vim.1045645.n5.nabble.com/MacVim-and-PATH-td3388705.html Ho finito semplicemente correndo sudo mv /etc/zshenv /etc/zprofilee ora tutto funziona e i miei percorsi sono corretti in mvim. Questo dovrebbe anche risolvere il problema dell'aggiornamento di syntastic durante l'installazione di una nuova versione di ruby ​​tramite rvm.


Questa è la soluzione reale! Il problema è a causa di un avvertimento con zsh installato tramite brew in OSX .
Jikku Jose,

Domanda casuale: "terminal macvim" non è solo vim? Quali vantaggi ottieni utilizzando Macvim nel terminale rispetto a Vim?
Nick,

0

Per un progetto Rails.

  • Imposta la versione ruby ​​in un .ruby-versionfile nella radice del progetto.
  • E avvia il tuo vim dalla radice del progetto.

Syntastic eseguirà il controllo della sintassi con la versione ruby ​​specificata.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.