Выпущена очередная версия 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…

Ссылки



Приятного кодинга!

Комментарии (7)


  1. foxyrus
    09.12.2015 09:57

    Жду Mason! Спасибо большое!


  1. 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 variable


    1. hurricup
      11.12.2015 12:21

      1. Чем смущает? Подобные конструкции это лишний шанс выстрелить себе в ногу. Плагин сделан для работы над большими проектами, для мелких скриптов он просто не нужен. В большом проекте подобное недопустимо.
      2. Все что смущает можно отключить.


      1. MadLord
        11.12.2015 13:53

        Разве переменная $b — built-in?
        Не знаю насколько большой/маленький у нас проект (но далеко не «маленький скрипт»), но в чем подвох этой конструкции — «my ($r, $tpl) = @_;»?


        1. hurricup
          11.12.2015 13:55

          $a и $b — глобальные переменные. используются, например, для сортировки.
          Подвох не в конструкции. А в том что вы уже определили переменную $r или $tpl в данном скоупе.


          1. MadLord
            11.12.2015 14:05

            Насчет $r и $tpl — да, забавный момент. Никогда бы не подумал, что человек может на автомате my вставлять, не задумываясь о видимости переменной.
            А вот насчет $a и $b — да, они используются при сортировке, но что-то я не встречал описание ограничений на их использование.


            1. hurricup
              11.12.2015 14:33

              Их нет. Но присваивать что-либо $_ $a, $b — опасно. Этот инспекшн сделан для того чтобы избежать подобных вещей. Опять же — все отключаемо.