r61346@onn: sartak | 2008-05-31 12:56:47 -0400
Sartak [Sat, 31 May 2008 16:57:05 +0000 (16:57 +0000)]
 Avoid using BEFORE_PLUGIN and AFTER_PLUGIN in Completion. it does not play well with role-role composition

git-svn-id: http://dev.catalyst.perl.org/repos/bast/trunk/Devel-REPL@4447 bd8105ee-0ff8-0310-8827-fb3f25b6796d

lib/Devel/REPL/Plugin/Completion.pm

index b4bbb88..05fca4f 100644 (file)
@@ -24,23 +24,21 @@ has no_term_class_warning => (
   default => 0,
 );
 
-sub BEFORE_PLUGIN {
+before 'read' => sub {
   my ($self) = @_;
 
+  unless ($self->term->isa("Term::ReadLine::Gnu") and !$self->no_term_class_warning) {
+    warn "Term::ReadLine::Gnu is required for the Completion plugin to work";
+    $self->no_term_class_warning(1);
+  }
+
   my $weakself = $self;
   weaken($weakself);
 
   $self->term->Attribs->{attempted_completion_function} = sub {
     $weakself->_completion(@_);
   };
-}
-
-sub AFTER_PLUGIN {
-  my ($self) = @_;
-
-  warn "Term::ReadLine::Gnu is required for the Completion plugin to work"
-    unless $self->term->isa("Term::ReadLine::Gnu") and !$self->no_term_class_warning;
-}
+};
 
 sub _completion {
   my ($self, $text, $line, $start, $end) = @_;