Jak mogę sprawić, by Syntastic rozpoznał nowszą składnię Ruby?

10

Używam Syntastic w Vimie, a to podkreśla nowszą składnię Ruby jako błędy. Na przykład, jeśli użyję wymaganych argumentów słów kluczowych (wprowadzonych w Ruby 2.1), to tak:

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

... podświetla linię definicji i mówi „nieoczekiwany”, „”.

Jak mogę to rozpoznać jako prawidłową składnię Ruby? Już zaktualizowałem ~/.vim/syntax/ruby.vim.

Nathan Long
źródło
Uwaga: ~/.vim/syntax/ruby.vimnie ma nic wspólnego ze sprawdzaniem składni plików; służy do podświetlania składni . Zobacz robots.thoughtbot.com/writing-vim-syntax-plugins
Nathan Long

Odpowiedzi:

9

Podaj plik wykonywalny ruby ​​dla Syntastic

Wywołania syntastyczne w ruby -ccelu sprawdzenia składni pliku, więc wyświetlane błędy zależą od używanej wersji Ruby.

Możesz wskazać ten, którego chcesz użyć w następujący sposób:

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

UWAGA: w nowszych wersjach Syntastic:

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

$ type rubypowie ci, gdzie jest twój obecny plik wykonywalny Ruby. Instalatorzy Ruby mają własne konwencje dotyczące tego, gdzie umieszczają swoje pliki binarne. Na przykład:

  • ruby-install umieszcza instalacje ruby ~/.rubiesi określone wersje na ścieżkach takich jak~/.rubies/ruby-2.2.0/bin/ruby
  • RVM umieszcza instalacje ruby ~/.rvm/rubiesi określone wersje na ścieżkach takich jak~/.rvm/rubies/ruby-2.2.0/bin/ruby
Nathan Long
źródło
FYI: jeśli używasz rvm, byłoby tolet g:syntastic_ruby_exec = '~/.rvm/rubies/ruby-2.2.0/bin/ruby'
Ben
@ Ben dobry punkt - zaktualizowana odpowiedź
Nathan Long
3
W przypadku nowszej wersji syntastic jest to:let g:syntastic_ruby_mri_exec='path/to/ruby/executable'
RantriX
1
Jeśli używasz rbenv, powinieneś być w stanie to zrobić, let g:syntastic_ruby_exec = '~/.rbenv/shims/ruby'tak jak sądzę , gdy przełącznik wersji Ruby automatycznie się przełączy.
Thermatix
Nice @Thermatix .. Użyłem system("rbenv which ruby")w .vimrc
rthbound
4

Używając terminala macvim miałem również ten problem, który spotęgował fakt, że korzystałem z zsh, który z jakiegoś powodu nie szanował pliku binarnego rvm, który dałem syntastic. Zdałem sobie sprawę, że moje ścieżki były niepoprawne, gdy !echo $PATHdziałałem w terminalowym macvimie, miałem kilka ścieżek systemowych dołączonych na górze, które nie były w mojej zwykłej powłoce, wciąż powodując załadowanie domyślnego MRI.

Aby to naprawić, nie musiałem wcale określać sprawdzania składni w moim .vimrc, jednak musiałem zaktualizować sposób uruchamiania zsh. Używając wątku na: http://vim.1045645.n5.nabble.com/MacVim-and-PATH-td3388705.html Skończyło się na tym, że po prostu sudo mv /etc/zshenv /etc/zprofiledziałam i teraz wszystko działa i moje ścieżki są poprawne w mvim. To powinno również rozwiązać problem aktualizacji syntastic podczas instalowania nowej wersji Ruby przez rvm.

Adam
źródło
To jest faktyczna poprawka! Problem jest spowodowany zastrzeżeniem z zsh zainstalowanym przez brew w OSX .
Jikku Jose,
Losowe pytanie - czy „terminal macvim” nie jest po prostu vimem? Jakie korzyści zyskujesz używając Macvima w terminalu w porównaniu do zwykłego vima?
Nick
0

Dla projektu Rails.

  • Ustaw wersję ruby ​​w .ruby-versionpliku w katalogu głównym projektu.
  • I uruchom vima z katalogu głównego projektu.

Syntastic sprawdzi składnię podaną wersją ruby.

lingceng
źródło