Releases: Camelcade/Perl5-IDEA
Releases · Camelcade/Perl5-IDEA
Release 2.111
Improvements
- Package processor for strictures module
- You may now choose perlcritic/perltidy executable with any extension (or even without it)
- Subs parameter info (Ctrl+P)
- Perl live-templates wrapping with line markers in Mojo templates, also fixed a bug with occasional re-formatting bug
- Debugger:
- Run and debugging settings are now on separated tabs
- New options:
- Initialization code - allows you to run piece of Perl code after debugger been initialized, e.g. use DB::Skip (requires DB::Camelcadedb 1.6.1.5+)
- Non-interactive mode - allows to pause the debugger and manager breakpoints while script is running. Disabled by default, moderate performance impact.
- Compile-time breakpoints - allows to handle breakpoints on use statements and in BEGIN blocks. Disabled by default, significant performance impact.
Fixes
- Template Toolkit
- JS line comment bug in templates
- Bug with PROCESS directive capturing parsing
- Bug with hash elements when keys are quoted
Release 2.100
Improvements
- Template Toolkit 2 support:
- Parsing of TT2 files
- Live templates for directives
- Configuration for template roots, file extensions and markers
- Smart completion of block markers
- Inspection for incorrectly positioned directives
- Files navigation and auto-completion
- Blocks navigation and auto-completion
- Methods detection and resolving:
- One-statement subs with:
shift->something
,$_[0]->{something}
now considered to be methods.shift
and$_[0]
considered to be$self
- Subs with empty
shift
; as a first statement considered to be a method - Subs with
undef
as first unpacked argument considered to be a method - Constants are now being parsed as subs, so inheritance, inspections, annotations and gutter navigation should work on them too
- One-statement subs with:
- Variables can now be deprecated with
#@deprecated
annotation - Typing space after
use
/no
/package
now opens auto-completion pop-up
Fixes
- Occasional exceptions on package auto-completion
- Exceptions with
use strict
/use warnings
quick-fix on read-only files - Occasional exceptions on SDK addition
Release 2.005
Improvements
- *.al files (AutoLoader/AutoSplitter pieces) are now being treated as perl scripts
- Informative notifications on failed attempts to start perl script when SDK or perl path is not configured
- Perl settings are now stored in two separate files: perl5local.xml and perl5shared.xml. Local is machine-dependent, contains paths and so on, shared can be shared with VCS. (NB. you need to reconfigure your perl settings after this update. .idea/perl5.xml may be deleted)
- Subs completion elements now displays containing package names
- Imported variables completion now works properly with elements and slices
- Perl-related custom file templates are now available in New: Perl file dialog. Also, you now may create files using subpath, e.g 'some/test/script'
- Debugger
- Debugger pausing (NB: pause may work only on next sub invocation, loops like while(){} can't be paused)
- Breakpoints manipulation in non-interactive mode (NB same as in pausing)
- You need to update Devel::Camelcadedb from CPAN to use new features.
- Exporter
- Implemented Dancer & Dancer2 DSL importing
- Basic Modern::Perl package processor (enables strict, warnings, setting c3 mro and loads IO::Handle && IO::File)
- POSIX package processor, imports should work fine now
- Imported subs has signatures in completion lookup elements
- IntelliJ IDEA:
- Perl Module SDK is now configurable, so you may have a Java project with perl module in it
- Editor notifications for Perl5 files from modules without configured Perl5 SDK
Fixes
- Fixed problem with resolving in generated code (overrides, constructors, etc...)
- Fixed bug when non-suspending breakpoint suspended program nowhere
- Marking directory as library from the context menu now works as intended
- Re-worked imports system to make it more flexible
Release 2.001
Improvements
- Perl Debugger. More information available here.
- Perl::Critic and Perl::Tidy paths are now configurable in all operation systems
- Added command line parameters configuration for Perl::Critic and Perl::Tidy
- Added Perl5 parameters to the run configuration
Fixes
- Clarified XSubs deparsing notification
- Fixed problems with use lib appeared in 1.5
Release 1.506
Improvements
- Implemented proper line comment splitting by enter
- Added PerlCritic and PerlTidy executables configuration for Mac users to avoid env problems.
- Implemented XSubs declarations file generation
- Implemented unconfigured Perl5 interpreter warning for non-IDEA ides. Also, default path is now fetched from perl itself
- Added
B::Deparse
options settings - Package name to file resolution is now case sensitive even on Windows systems
- Improved package completion on invocation statement
- Implemented methods resolution with stringified packages, like
'Foo::Bar'->method
- Removed sort and sub from autocompletion, added respective live templates
- Improved sub parameter variables extraction to handle multi-shifts and
@_
elements - Typeglobs are not annotated as clashed/duplicated anymore. No sense.
Fixes
- Fixed imported autoloaded subs resolution
- Fixed bug with exporting variables and coderefs with sigils
- Fixed inplace renaming for file-level variables
- Fixed parser error when composite operators parsed correctly even with space or comment in it, like
= =
been treated as==
- Fixed probable NPE on incomplete Exporter arrays assignment
- Fixed sigils highlighting in
use vars;
- Restored program arguments order to pre-1.5 position in Run configuration
Release 1.5
Features & Improvements
- POD support: live templates, completion, navigation, refactoring and few
useful inspections - Context help: hit Ctrl+Q on element in question and get your answer from
pod files or inline pod - Mojolicious helpers support: navigation, completion and refactoring. NB:
helpers should be declared explicitly, $app->helper($_, sub{}) for
@something; wont work. - New annotation: #@Inject, allows you to inject other languages in
strings. Annotation may be before the string, before the statement
containing the string or in the end of line string ends. (NB: eol
annotation may be misleading and should be considered experimental, see
#1072. Need a
feedback.) - Class methods now properly re-factored in subclasses and optionally in
super-class - You may now create package files with full-qualified names from New Perl
File action - TryCatch basic
support. Currently catch{}, catch($var){} and catch(Foo::Bar $var){} are
supported - Redundant explicit namespace inspection, e.g. Foo::Bar::somesub() call
from inside Foo::Bar package - Lexical vairables are now on top of the auto-completion pop-up
- Significally improved parser recovery on incomplete and incorrect
statements - New action: Deparse file using B::Deparse
- Perl::Critic annotator is now on. All configurations must be done via
.perlcriticrc file in project root or home dir (see Perl::Critic documentation). There is no
any UI to configure Perl::Critic settings for now. Only enable/disable
checkbox in Perl5 settings - Perl::Tidy formatting is now available. All configuration must be done
via .perltidyrc file in project root (see Perl::Tidy documentation). Again, there
is no UI to configure settings for now
Fixes
- Fixed issue with occasional % parsing error in Mason2 and HTML::Mason templates
- Setback: block commenting with pod has been disabled for current version, use line commenting
- Changed the way annotation being parsed: should speed overall performance and allow to put annotations in any place without breaking syntax
- Fixed scrolling problem on code generation
- Fixed multiple sub definitions inspection
- Fixed problem with
@ISA
assignment when explicit namespace specified, like@Foo::ISA
- Fixed problem with package detection in qq string and it's consequences
- Fixed problem, when re-formatting could break syntax by joining number and concatenation operator
- Fixed problem with occasional double -> insertion on pre-formatting
- Fixed possible OOM hang on object methods resolution, when method and object variable has the same name, e.g. $test->test()
- Fixed performance problem appeared after IDEA 2016.1.1 update
- Disabled deprecation strikeout in packages auto-completion. Speeds things up and prevents hanging of IDEA 2016
- Fixed package completion in variable declaration expression
Release 1.4
New features
- HTML::Mason support
- Parsing of HTML::Mason files
- Configuration for autohandler and dhandler names, component roots, global variables, component file extensions and custom tags
- Autocompletion and highlighting of syntax elements
- Proper component variables resolution according to the compiled component structure
- Components hierarchy resolving
- Subcomponents and methods resolving from Mason invocations
- Navigation, completion and refactoring for components, methods and subcomponents
- Labels resolution, navigation, refactoring and completion, fixes #138 (NB: deprecated usages not handled and won't ever be)
- Undeclared and unresolved labels inspections
- Auto-completion for here-doc openers, fixes #874
- Sequential here-docs support, fixes #163
- Backref here-docs support
- n regex modifier support from perl 5.22, fixes #865
- Regular strings are now manually injectable with other languages, fixes #829
- Re-formatter now works on here-docs injected with other languages
- Disabling injections in here-docs with interpolated entities is now configurable
Fixes and optimizations
- A lot of overall optimizations
- Optimized go to Symbol and Class actions
- Improved completion of package names: added version strings and package suggestion for definition, fixes #432
- Improved labels parsing, so now you may use any word for it, except sub
- Fixed possible NPE on here-doc typing in the end of file
- Fixed possible exception on #@returns annotation auto-completion
- Improved utf identifiers and packages parsing
- Fixed parsing for 0X.. hex and 0B.. numbers
- Fixed problem for ipr project settings, by @zhurs
- Fixed indentation when typing inside the comma sequence, fixes #845
- Fixed some bugs with pod parsing, fixes #901
- Fixed bug with statement modifiers formatting if they are without parentheses
- Templating languages:
- Fixed problem with HTML-related errors at perl block start
- Spaces and newlines around perl code are not part of surrounding template anymore and may be consumed on re-formatting
Release 1.3
Features & Improvements
- Release compatible with IDEA 14 and 15
- File level variables inspection. (Pretty useful while migrating from CGI to some persistent environment)
- Autocompletion and Code Generation
- Significally improved live templates and autocompletion.
- Convert string to last used here-doc marker action added (also fixed conversion on multi-line strings), fixes #800
- Quote handler for regex and quote-like operators, fixes #741
- Names suggestion for new subs/methods based on unresolved sub names in current file, fixes #231
- Names suggestion for variables declarations based on unresolved variables in appropriate scope, fixes #242
- Names suggestion for new subs/methods based on super-classes sub names, fixes #246
- Dumb and comfy hash keys autocompletion, not intelligent, most like in Sublime Text, fixes #711
- Override method action, fixes #814
- Configuration
- Code Style and Formatting
- Navigation
- Gutter navigation to super/sub classes
- Gutter navigation to super/inner class methods, fixes #815
- Perl extensions
- Support for Switch core module, fixes #658
- Support of Class::Acessor api, fixes #778
- Moose
- Exporter
- Mason2
- Filetypes for Mason2: top-level component, internal component and perl component
- Lexing and parsing of Mason2 files
- Configuration Settings to select Mason2 components roots
- Components auto-basing
- Folding of Mason2 files
- Automatic close tag insertion on typing
- Formatter and pre-formatter for perl code
- Live-templates for Mason2 syntax constructions
- Mojolicious
- Parser has been re-written almost from scratch and now is much more appropriate
- Fixed problem with statement modifiers parsing in expressions blocks
- Fixed problems with templates folding
- Automatic close tag insertion on typing (open tag + space)
- Formatter and pre-formatter for perl code
- Embedded Perl
- Automatic close tag insertion on typing (open tag + space)
- Formatter and pre-formatter for perl code
Fixes
- Fixed possible NPE on specialized IDE start, #CAMELCADE-46 fixed
- Fixed exception on empty error element in inspection, #CAMELCADE-44 fixed
- Fixed possible NPE on files resolution, #CAMELCADE-43 fixed
- Fixed possible Icon not found exception on acitons menu opening, #CAMELCADE-42 fixed
- Fixed bug with creating top-level packages with main:: prefix, fixes #638
- Implemented proper parsing for stacked file operations _ handle, fixes #640
- Fixed parsing of print target handle if followed by expression in parens or negation, fixes #560
- Fixed indenting for single-argument nested calls, fixes #663
- Fixed semicolon and statement modifiers parsing in the Moose statements, fixes #678
- Braceless namespaces now being parsed the right way, fixes #674
- Fixed bug with occasional here-doc terminator indention on copy-paste or re-formatting, fixes #631
- Fixed bug with here-doc content re-formatting, fixes #628
- Fixed bug with quotes auto-closing in package and test files
- Fixed bug with auto-completion not opening after typing ->, fixes #763
- Fixed bug with inadequate auto-opened completion when typing special chars (dots, commas, etc.), fixes #781
Mason and Method::Signatures::Simple support
Features & Improvements
- Implemented wrapping of comma sequences
- Implemented aligning of arrows in comma sequences
- Implemented identifiers validation (NB: only ASCII allowed atm)
- return is now parsed as a keyword
- Implemented support for method and func constructions as documented in the Method::Signature::Simple
- Implemented parsing for Perl5 native signatures.
- Implemented smartkeys option for here-doc terminator auto-insertion, fixes #589
- Implemented formatting and alignment for ternary operator, fixes #591
- Implemented folding for qw lists, fixes #619
- Simple main:: subs resolution is now optional and configurable via Perl5 settings, fixes #633.
- Code style:
- Implemented Perl5-specific CodeStyle settings panel, fixes #422
- Implemented optional quotes automatic insertion/removing, fixes #135. NB: numeric values are not quoted/unquoted.
- Implemented optional dereference insertion/removing between hash/array indexes, fixes #123.
- Implemented optional parentheses insertion/removing in statement modifiers.
- Implemented conversion
$var->{key} to $ $var{key} and vice versa, fixes #575. - Implemented conversion @$array_ref to @{$array_ref} and vice versa (does not affects hash/array elements or slices).
- Implemented conversion main:: to :: and vice versa, fixes #491
- Implemented spacing settings for braces and brackets of anon hashes and arrays respectively, fixes #604
- Implemented spacing options for concatenation and range operators, fixes #630
- Moose and Moo (as far as it's compatible with Moose):
- Implemented proper use Moose; and use Moo; processing.
- Implemented Moose/Moo keywords parsing and autocompletion: inner, super, meta.
- Implemented extends and with statements support.
- Implemented resolution and refactoring in method modifiers: around, after, before and augment.
- Implemented parsing, resolution and refactoring for override statement (some annotations works).
- Implemented parsing, resolution and refactoring for has statement (some annotations works).
Fixes
- Chained resolution works well if there are spaces, new lines or comments between elements, fixes #525
- Here-doc markers and constants re-factoring in Embedded Perl and Mojo files should now work in-place, fixes #524
- SUPER methods now resolved properly even if invoked on unknown variable, fixes #534
- Here-doc reference should work fine after converting string to here-doc, fixes #541
- Removed redundant indetion of eval and do blocks on re-formatting, fixes #523
- POD is now properly treated as statement (which can, however, be before elsif/else/continue blocks), fixes #522
- Package names auto-completion now works in qw expression, fixes #540
- foreach compound live template now has default values which prevents formatting bugs on inserting, fixes #519
- Recursive inheritance inspection is absolutely redundant, disabled, fixes #517
- Local re-declarations of built-in variables are not marked as unused anymore (like $/), fixes #533
- Removed empty prototype from generated constructor, fixes #537
- Extra close parenthesis and brackets now handled smarter, should improve parser's recovery, fixes #503
- Error block contents now couldn't be re-formatted to avoid unexpected effects, fixes #506
- Fixed possible NPE on file renaming
- Fixed parsing of $$ ^ int expression, fixes #543
- Pragma namespaces are no more being decorated in variables, fixes #502
- Improved argumentless built-ins parsing in leftward calls, fixes #492
- Find usages working properly if entity is being used only in literals, fixes #496
- Improved comma sequence indention, fixes #417
- Fixed formatting for sub definition attributes
- Grep/map/sort blocks and one-statement blocks are not being butified anymore.
- Here-doc with unquoted opener is now properly treated as QQ here-doc.
- Fixed problem with unary plus/minus formatting, fixes #571
- Fixed bug with // formatting, fixes #594
- Fixed problems with indention inside ternar operator, fixes #592
- Fixed possible NPE on re-formatting line with here-doc opener, fixes CAMELCADE-28
- Implemented proper formatting for match and notmatch operators, fixes #629
- Fixed parsing for pow operator, fixes #626
- Fixed quotes typing process, fixes #626
Code style and optimizations
Features & Improvements
- Added icons for retina displays
- Implemented imports processing for subs with explicit code sigil.
- Implemented basic CodeStyle settings and basic formatter (use with care with version control). Need feedbacks.
- Implemented automatic heredoc closing marker insertion.
- Plugin now knows that use v5.12; # and above includes use strict;.
- Here-doc without injection now highlighted as an appropriate string
- Implemented auto-completion of defined package names in the strings content
- Implemented Run configuration settings
- Implemented use lib support
- Implemented package names resolution in the current directory
- Added stacktrace and files paths hyperlinks in consoles (doesn't include terminal)
- Implemented 'Create Perl5 Test' action and live templates for Test::More
- Implemented Code Folding settings for Perl entities (Default settings: imports, doc comments and method bodies being used too).
- Implemented exceptions reporting mechanism, by @VISTALL.
- Adjusted signature position according to last Perl5 changes (see perldoc).
- Improved sub and vars attributes lexing and parsing.
- Implemented parsing for bare glob operator like my @list = <some/path/*>
- Implemented support for empty here-doc markers
- Implemented proper block dereference parsing
- Significally improved nested code interpolation parsing (Onion parsing comparision)
- Implemented simple getters/setters generation
- Implemented simple constructor generation
Fixes
- Significally increased re-parsing performance on code typing
- It's not possible anymore to start identifier with digit, like $123abc
- Hexadecimal and binary numbers with underscores now being parsed right.
- Fixed parsing problem for concatenation of string and fractional number.
- Fixed parsing for simple dereferences like $$array_ref[1].
- Added requirement for 14 platform, no more buggy usages in outdated products.
- Fixed and tested interactions with perl process.
- Typeglobs for built-ins are not annotated as unused anymore.
- Fixed package file creation in specialized IDEs.
- Here-doc end marker, pod and formats are not being indented on block tabbing.
- Here-doc end marker is not being indented on live-template insertion.
- Tricky use vars declarations now being handled correctly. use vars @SOMELIST still not working. Also fixed declaration of hashes, code refs and typeglobs.
- Fixed bug with tail LF in convert string to here-doc intention.
- Fixed bug with lookup elements caching for subs.
- Cleaned up extended regex parsing.
- Replacement part of extended regex /x is now parsed properly.
- Fixed bug with broken line splitting in other languages.
- Fixed bug with print OF <<EOM; parsing.
- Suppressed livetemplates inside a string
- Suppressed string to namespace resolution for top-level namespaces.
- Pod block now may starts with =cut.
- Fixed an error creating new file outside of the module.
- Implemented distinction of array index from characters group in regexes.
- Improved parser recovery before compound statements.
- Fixed scoping problem for if/elsif/else compound statement.
- Fixed autocompletion behaviour problem with global variables auto-completion with short main:: form.
- Fixed problems with packages refactoring.
- Fixed recovery after annotations.
- Fixed POSIX character group classes within regex with bracketed delimiters.
- Fixed single-argument grep and map parsing.
- Improved anon hash from code block distinction.