К первому сентября была выпущена первая версия опенсорс-плагина для продуктов JetBrains, добавляющая поддержку Perl5.
Реализованные фичи:
- Создание Perl5 модуля и выбор Perl5 интерпретатора
- Парсинг Perl5 (без source-фильтров), POD, Mojolicious шаблонов и Embedded Perl (Это как php только с Perl5 внутри)
- Подсветка синтаксиса
- Подсветка и дополнение скобок, кавычек, разделителей для регулярных выражений.
- Интерполяция строк, here-doc-ов и регулярных выражений
- Авто-комплит для функций, методов, пакетов, констант и переменных
- Переход для функций, переменных, классов и констант (Go to symbol/class)
- Просмотр структуры файла и иерархии классов (Structure view/Hierarchy view)
- Поддержка наследования с DFS/C3
- Поддержка импортов функций и переменных
- Навигация и рефакторинг для функций, констант, глобов, пакетов, неймспейсов, лексических и глобальных переменных
- Разрешение AUTOLOADed методов
- Шаблоны (File templates) для скриптов, пакетов и Mojolicious шаблонов
- Шаблоны (Live templates) для compound конструкций (съешь лишние скобки, Komodo)
- Поддержка объявления глобальных переменных через use vars
- Рефакторинг маркеров для here-doc
- Поддержка IntelliLang для here-doc и автоматическое инжектирование другого языка в зависимости от текста маркера
- Аннотации для функций: #@deprecated, #@method, #@returns (последняя необходима для корректного разрешения типа возвращаемого значения)
- Аннотация для неймспейсов: #@deprecated
- Поддержка типизации переменных при объявлении
- Intentions: конвертация строки в here-doc
- Inspections:
- Пакеты: отсутствующий файл пакета, неизвестный namespace, множественное объявление namespace, пересечение с core namespace, отсутствующие strict/warnings.
- Функции: deprecated, неизвестная фунция, множественные определения, модный вызов (new Foo::Bar), неиспользуемые функции/константы/глобы.
- Переменные: неиспользуемые переменные, неопределенные переменные, затенения переменной, объявление встроенной переменной как лексической или глобальной.
- Extension point для реализации процессоров пакетов. Позволяет описать функционал нестандартных модулей. Например Mojo::Base, являющимся одновременно и strict, и warnings, и base и feature.