[Bast-commits] r4400 -
trunk/Devel-REPL/lib/Devel/REPL/Plugin/CompletionDriver
Sartak at dev.catalyst.perl.org
Sartak at dev.catalyst.perl.org
Sun May 25 18:49:06 BST 2008
Author: Sartak
Date: 2008-05-25 18:49:05 +0100 (Sun, 25 May 2008)
New Revision: 4400
Modified:
trunk/Devel-REPL/lib/Devel/REPL/Plugin/CompletionDriver/INC.pm
Log:
Various improvements and cleanups in CompletionDriver::INC
Modified: trunk/Devel-REPL/lib/Devel/REPL/Plugin/CompletionDriver/INC.pm
===================================================================
--- trunk/Devel-REPL/lib/Devel/REPL/Plugin/CompletionDriver/INC.pm 2008-05-25 17:33:28 UTC (rev 4399)
+++ trunk/Devel-REPL/lib/Devel/REPL/Plugin/CompletionDriver/INC.pm 2008-05-25 17:49:05 UTC (rev 4400)
@@ -24,19 +24,27 @@
my $package = shift @elements;
my $outsep = '::';
- my $insep = '::';
+ my $insep = "::";
my $keep_extension = 0;
+ my $prefix = '';
- # require "Module"
- if ($package->isa('PPI::Token::Quote'))
+ # require "Foo/Bar.pm" -- not supported yet, ->string doesn't work for
+ # partially completed elements
+ #if ($package->isa('PPI::Token::Quote'))
+ #{
+ # # we need to strip off the leading quote and stash it
+ # $package = $package->string;
+ # my $start = index($package->quote, $package);
+ # $prefix = substr($package->quote, 0, $start);
+
+ # # we're completing something like: require "Foo/Bar.pm"
+ # $outsep = $insep = '/';
+ # $keep_extension = 1;
+ #}
+ if ($package =~ /'/)
{
- $outsep = $insep = '/';
- $keep_extension = 1;
- }
- elsif ($package =~ /'/)
- {
# the goofball is using the ancient ' package sep, we'll humor him
- $outsep = q{'};
+ $outsep = "'";
$insep = "'|::";
}
@@ -49,16 +57,25 @@
my @found;
+ my %ignored =
+ (
+ '.' => 1,
+ '..' => 1,
+ '.svn' => 1,
+ );
+
my $add_recursively;
$add_recursively = sub {
my ($path, $iteration, @more) = @_;
opendir((my $dirhandle), $path);
- for (readdir $dirhandle)
+ for (grep { !$ignored{$_} } readdir $dirhandle)
{
- next if /^\.+$/; # skip . and ..
- next if $iteration == 0 && $_ !~ $final_re;
+ my $match = $_;
- my $match = $_;
+ # if this is the first time around, we need respect whatever the user had
+ # at the very end when he pressed tab
+ next if $iteration == 0 && $match !~ $final_re;
+
my $fullmatch = File::Spec->rel2abs($match, $path);
if (-d $fullmatch)
{
@@ -67,7 +84,8 @@
else
{
$match =~ s/\..*// unless $keep_extension;
- push @found, join $outsep, @directories, @more, $match;
+ push @found, join '', $prefix,
+ join $outsep, @directories, @more, $match;
}
}
};
More information about the Bast-commits
mailing list