Skip to content

Releases: Camelcade/Perl5-IDEA

Release 2.111

01 Jul 17:08
Compare
Choose a tag to compare

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

18 Jun 09:42
Compare
Choose a tag to compare

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
  • 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

05 Jun 05:41
Compare
Choose a tag to compare

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

28 May 05:22
Compare
Choose a tag to compare

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

04 May 17:17
Compare
Choose a tag to compare

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

27 Apr 16:24
Compare
Choose a tag to compare

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

21 Mar 17:39
Compare
Choose a tag to compare

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

01 Feb 16:04
Compare
Choose a tag to compare

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
    • Self-object reference variable names are now configurable in Perl5 settings, fixes #706
    • Automatic language injection in here-doc is now configurable (on/off) in Perl5 settings, fixes #636
  • Code Style and Formatting
    • Spacing control for call arguments, fixes #664
    • Spaces removal around array index, hash index and dereference, fixes #662
    • Conversion ${$hasref}{key} to $hashref->{key} on pre-formatting, fixes #803
  • 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
      • Live-templates for Moose constructions
      • Moose super call resolution, fixes #553
      • Moose inner call resolution, fixes #555
    • Exporter
      • Resolution for @export and @EXPORT_OK assigned strings, fixes #364
      • Auto-completion for @export and @EXPORT_OK assigned strings, fixes #469
      • Unresolved subs inspection now also check Exporter's arrays, fixes #799
    • 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

12 Dec 05:31
Compare
Choose a tag to compare

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

12 Dec 05:33
Compare
Choose a tag to compare

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.