IntelliJ Idea Ultimate red-подчеркивает буквенный хеш-букв Ruby

Кто-нибудь знает, почему IntelliJ Idea Ultimate не любит литералы хеша Ruby в новом синтаксисе? Обратите внимание на красные подчеркивания на снимке экрана, приведенном ниже. Синтаксис:

{key1: "value", key2: 123}

На самом деле раздражает, так как это означает, что весь мой проект имеет красную подчеркивание вплоть до дерева каталогов.

У меня установлена ​​версия Ruby SDK, превышающая 1,9 (это когда я думаю, что был введен новый синтаксис хеш-литерального кода) в настройках IDE, поэтому нет оправдания!

Спасибо.

Screenshot from IntelliJ Ultimate

Ответы

Ответ 1

Ответ заключается в замене каждого использования ужасного нового синтаксиса хэша на старый с помощью регулярного выражения (еще не совершенным, но работает ~ 95% времени).

files=gfind . -iregex '.*\(rb\|haml\)' -printf '%p\n' для файла в $файлах делать   gsed -i "s/([a-z _] +): {1}\s + (('\ |" ' "'" ) \? [- a-zA-Z0-9 {}: @] + ('\| "'" ' ") \?)/:\1 = > \2/g" $file сделанокод >

Ответ 2

Как я исправил это в Intellij 14.1:

  • Файл → Структура проекта
  • Удалить существующий модуль, который по умолчанию работает на Java (не удаляет фактические файлы)
  • Используйте зеленую кнопку + для создания нового модуля с тем же именем/местоположением, но на этот раз связанный с Ruby on Rails вместо Java (с правильным SDK)
  • Файл → Закрыть проект
  • Повторно открыть проект.

Раньше я пытался просто изменить SDK проекта по умолчанию Java на Ruby, но это не устранило проблему.

Ответ 3

В OSX IntelliJ 14 я смог исправить это, закрыв проект и снова открыв его.

Справедливости ради, я попытался установить "уровень языка" проекта, но он показывает только Java SDK, что не должно влиять на мой основной модуль Ruby.

Ответ 4

Это похоже на ошибку в плагине Ruby: http://devnet.jetbrains.com/thread/457333

Любой, кто не хочет менять свою базу кода, следующие шаги разрешили мне проблему:

  • Открыть файл → Структура проекта
  • Откройте вкладку "Проект"
  • Изменение уровня языка проекта
  • Нажмите "ОК"

Теперь IntelliJ спрашивает, хотите ли вы перезагрузить свой проект. После этого "новый" синтаксис хэша считается правильным...

Изменить: на самом деле не имеет значения, что вы выбираете в качестве языкового уровня, поскольку это относится только к Java-коду, но, по-видимому, это вызывает что-то в парсере кода...

Ответ 5

Что помогло мне в моем случае:

  • Открыть файл → Структура проекта
  • Удалить текущий с помощью модуля
  • Модуль импорта (укажите путь к вашему проекту)
  • Intellij остался для меня

Ответ 6

ответ dsager больше не работает в Intellij Idea 14. Я полагаю, что они добавили возможность переключения языковых уровней без перезагрузки (отлично подходит для разработки Java, но нарушает это). Это хромальное обходное решение, но единственный способ, который я нашел сейчас, - создать новый проект ruby, а затем переместить в него все ваши существующие источники. Что-то вроде следующего:

PROJECT=my_project
cp -lr $PROJECT ${PROJECT}2
rm -rf ${PROJECT}2/.idea ${PROJECT}2/*.iml

Создайте новый рубиновый проект "my_project" с соответствующим SDK, затем:

mv ${PROJECT}2 $PROJECT

Боковое примечание: они сделали команду "Open" от Idea более гибкой в ​​14, поскольку вы можете открыть любой каталог... как и RubyMine. Это довольно удобно для открытия всего, что не является проектом java, но это раздражает.

Ответ 7

Настройка правильного SDK Ruby, перезапуск, аннулирование кеша и переустановка плагина Ruby.. все это не сработало для меня. Я обновил IntelliJ до 2016 года.