Як я можу змусити Syntastic розпізнати новіший синтаксис Ruby?


10

Я використовую Syntastic у Vim, і він виділяє новіший синтаксис Ruby як помилки. Наприклад, якщо я використовую необхідні аргументи ключових слів (введені в Ruby 2.1), наприклад:

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

... він виділяє рядок визначення та каже "несподіваний", "".

Як я можу змусити його розпізнати це як синтаксис Ruby? Я вже оновив ~/.vim/syntax/ruby.vim.


Примітка: не ~/.vim/syntax/ruby.vimмає нічого спільного з перевіркою синтаксису у файлах; це для виділення синтаксису . Дивіться robots.thoughtbot.com/writing-vim-syntax-plugins
Натан Лонг

Відповіді:


9

Вкажіть виконуваний рубін для Syntastic

Синтастичні дзвінки ruby -cдля перевірки синтаксису файлу, тому помилки, які він показує, залежать від того, в якій версії ruby ​​використовується його.

Ви можете вказати його на той, який ви хочете використовувати так:

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

ПРИМІТКА: на новіших версіях Syntastic:

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

$ type rubyпідкаже, де знаходиться ваш поточний виконуваний файл Ruby. Установці Ruby мають власні умови про те, де вони розміщують свої бінарні файли. Наприклад:

  • ruby-install ставить установки рубіну ~/.rubiesта конкретні версії на такі шляхи~/.rubies/ruby-2.2.0/bin/ruby
  • RVM ставить рубінові установки ~/.rvm/rubiesта конкретні версії на такі шляхи~/.rvm/rubies/ruby-2.2.0/bin/ruby

FYI: якщо ви використовуєте rvm, це було бlet g:syntastic_ruby_exec = '~/.rvm/rubies/ruby-2.2.0/bin/ruby'
Бен

@Ben good point - оновлена ​​відповідь
Nathan Long

3
Для нової версії синтастики це:let g:syntastic_ruby_mri_exec='path/to/ruby/executable'
RantriX

1
Якщо ви використовуєте rbenv, ви повинні мати можливість зробити let g:syntastic_ruby_exec = '~/.rbenv/shims/ruby'так, що коли перемикаються версії рубіну, він повинен автоматично підбирати його.
Thermatix

Хороший @Thermatix .. Я використовував system("rbenv which ruby")у своєму .vimrc
rthbound

4

З використанням терміналу macvim у мене також була ця проблема, яка ускладнювалася тим, що я використовував zsh, який чомусь не поважав бінарний rvm, який я надавав синтастичним. Я зрозумів, що мої шляхи, де неправильно під час запуску !echo $PATHв терміналі macvim, у мене було додано кілька системних шляхів до вершини, які не були в моїй звичайній оболонці, все ще викликаючи завантаження МРТ за замовчуванням.

Щоб виправити це, мені не потрібно було вказувати перевірку синтаксису взагалі в моєму .vimrc, однак мені довелося оновити, як запустився zsh. Використання теми за адресою: http://vim.1045645.n5.nabble.com/MacVim-and-PATH-td3388705.html Я закінчився просто запущеним sudo mv /etc/zshenv /etc/zprofileі тепер все працює, і мої шляхи є правильними в mvim. Це також повинно вирішити проблему оновлення синтастики під час встановлення нової версії ruby ​​через rvm.


Це фактичне виправлення! Проблема полягає в тому, що застереження з zsh встановлено за допомогою brew в OSX .
Jikku Jose Jose

Випадкове запитання - чи не "terminal macvim" просто vim? Які переваги ви отримуєте від використання Macvim у терміналі над використанням звичайного vim?
Нік

0

Для проекту Rails.

  • Встановіть рубінову версію у .ruby-versionфайл у корені проекту.
  • І почніть свій vim з кореня проекту.

Syntastic зробить перевірку синтаксису із заданою версією ruby.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.