Выпущена очередная версия Perl5 плагина для IntelliJ IDEA и прочих IDE от JetBrains. Новая версия добавляет поддержку Method::Signature::Simple и Moose.
Что новенького?
Форматирование
- Враппинг для списков в коде
- Выравнивание стрелок в анонимных хешах
- Форматирование и выравнивание для тернарного оператора
- Фолдинг для списков строк в
qw
- Настройки пробелов для анонимных хешей и массивов
- Настройки пробелов для range-операторов и конкатенации
Парсер
- return теперь считается ключевым словом
- поддерживаются нативные Perl5 сигнатуры (в соответствии с текущей версией Perl5)
Настройки
- Добавлена опция для контроля за авто-вставкой терминатора для here-doc
- Добавлена опция для контроля легковесного разрешения main:: функций
Code style
- Добавлена панель для настроек стиля кода Perl5 и автоматическое переформатирование исходника, согласно настройкам
- Настройка использования опциональных кавычек
- Настройка использования опциональной разадресации между индексами массивов и хешей
- Настройка использования опциональных скобок в модификаторах выражений (постфиксные
if/for/etc...
) - Настройка разадресации элемента хеша массива:
$var->{key}
или$$var{key}
- Настройка разадресации простого массива или хеша:
@$array_ref
или@{$array_ref}
- Настройка стиля обращения к неймспейсу main:
main::
или::
Method::Signature::Simple
- Парсинг, автокомплит, навигация и рефакторинг конструкций
method
иfunc
Moose и Moo
Реализована базовая поддержка фреймворка Moose.
- Корректная обработка
use Moose/Moo
- Корректная обработка выражений
extends
иwith
- Парсинг, автокомплит, навигация и рефакторинг аттрибутов
has
(работают некоторые аннотации) - Парсинг, автокомплит, навигация и рефакторинг переопределений
override
(работают некоторые аннотации) - Парсинг, навигация и рефакторинг модификаций методов:
around
,after
,before
иaugment
- Поддержка ключевых слов
inner
иsuper
Дополнительно, исправлено порядка 30 различных технических и юзабилити багов.
Что дальше?
Mason is coming…
Ссылки
- Плагин в репозитории JetBrains: plugins.jetbrains.com/plugin/7796
- Плагин на GitHub: github.com/hurricup/Perl5-IDEA
Приятного кодинга!
Комментарии (7)
MadLord
11.12.2015 12:10Вот такие предупреждения смущают:
my $b = shift; #It's a very bad practice to declare built-in variable as our/my/state
my ($r, $tpl) = @_; #Current variable declaration shadows previous declaration of the same variablehurricup
11.12.2015 12:211. Чем смущает? Подобные конструкции это лишний шанс выстрелить себе в ногу. Плагин сделан для работы над большими проектами, для мелких скриптов он просто не нужен. В большом проекте подобное недопустимо.
2. Все что смущает можно отключить.MadLord
11.12.2015 13:53Разве переменная $b — built-in?
Не знаю насколько большой/маленький у нас проект (но далеко не «маленький скрипт»), но в чем подвох этой конструкции — «my ($r, $tpl) = @_;»?hurricup
11.12.2015 13:55$a и $b — глобальные переменные. используются, например, для сортировки.
Подвох не в конструкции. А в том что вы уже определили переменную $r или $tpl в данном скоупе.MadLord
11.12.2015 14:05Насчет $r и $tpl — да, забавный момент. Никогда бы не подумал, что человек может на автомате my вставлять, не задумываясь о видимости переменной.
А вот насчет $a и $b — да, они используются при сортировке, но что-то я не встречал описание ограничений на их использование.hurricup
11.12.2015 14:33Их нет. Но присваивать что-либо $_ $a, $b — опасно. Этот инспекшн сделан для того чтобы избежать подобных вещей. Опять же — все отключаемо.
foxyrus
Жду Mason! Спасибо большое!