Plugins
Usage
- install Padre-Plugin-Fix
- enable in Plug-in Manager
- {{{Tools/Fix/Simplify}}}
TODO
- Create a '''Suggestions table panel''' that contains the following columns:
- Suggestion
- Path
- Line
- Run all suggestion checkers in the background and populate the '''Suggestions table panel'''.
- Provide a way to specify which suggestions are enabled for the current project. (Maybe read custom entries from '''padre.yml''')
- Move beginner checks from Padre here:
Padre::Document::Perl::Beginner - Move {{{::QuickFix}}} from Padre here:
Padre::QuickFix Padre::Document::Perl::QuickFix Padre::Document::Perl::QuickFix::StrictWarnings Padre::Document::Perl::QuickFix::IncludeModule - Revisit syntax errors in [http://szabgab.com/scalar-found-where-operator-expected.html Scalar found where operator expected]
- Use [https://metacpan.org/module/PPI::Transform PPI::Transform API]?
- Convert constant to uppercase
use constant pi => 3.14;
# OR
use constant {
pi => 3.14,
};
to this
use constant PI => 3.14;
# OR
use constant {
PI => 3.14,
};
* From ticket:502, Find code between subs:
sub a {
}
die "hello world";
sub b {
}
* From ticket:1200, Replace one or all occurrences of indirect notations such as this:
new Something("bla");
should become
Something->new("bla");
- Over selection text range, provide the ability to quote it and choose qq{} or q{}
- Negate if block form with unless and vice versa
if(defined $fh) {
say "File is open";
} else {
say "File is not open!";
}
should become
unless(defined $fh) {
say "File is not open!";
} else {
say "File is open";
}
Transform if single statement into postfix form and vice versa:
if(defined $fh) {
print "File is open";
}
should become
print "File is open" if defined $fh;
- Add forgotten else clause to if block
- Transform qq{string} where string does not contain escape sequences into q{string} or 'string'
- if {{{use v5.10;}}} or greater is used, then {{{print "something\n"}}} can be transformed into {{{say "something"}}}
- Transform {{{my $param1 = shift}}} into {{{my ($param1) = @_; }}} and vice versa
- if-elsif-else transformation into given-when. Please see [http://perldoc.perl.org/perlsyn.html#Switch-statements Switch statements]
if($type eq 'a') {
} elsif($type eq 'b') {
} else {
}
should become
given($type) {
when ('a') { }
when ('b') { }
default { }
}
* Add ''{{{Padre::Document::Perl::Beginner}}}'' checks and convert them to '''PPI'''
Test Sample
* assuming modern perl
#!/usr/bin/env perl
use 5.014;
use strict;
use warnings;
use Carp;
# Turn on $OUTPUT_AUTOFLUSH
$| = 1;
use feature 'unicode_strings';
#1, the following " -> ' try for your self
open ( my $filehandle, "<:utf8", "test.bin") or die $!;
#2, food for thought only
#before open ( my $filehandle, "<:utf8", "test.bin") or die $!;
#after use Carp;
#after my $filehandle = undef;
#after open ( $filehandle, '<:encoding(UTF-8)', 'test.bin') or croak $!;
my $word = readline $filehandle;
#3, food for thought only
#before print "word = $word\n";
#after say 'word ='.$word;
#4, food for thought only, an evil null if =~ fails
#before my ($untainted) = $word =~ /^(\w+)$/;
#after my $untainted = undef;
#after $untainted = $word =~ /^(\w+)$/;
say "untainted = $untainted";
if ($untainted) {
# It passed the regex, so it is "safe".
system "echo $untainted";
}
1;
__END__



