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 года.