r61086@onn: sartak | 2008-05-26 21:31:16 -0400
Sartak [Tue, 27 May 2008 01:31:53 +0000 (01:31 +0000)]
 Hack to make LexEnv + FindVariable work (which makes lexical-object method name completion work)

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

lib/Devel/REPL/Plugin/FindVariable.pm
lib/Devel/REPL/Plugin/LexEnv.pm

index 2b35755..6dbf4ca 100644 (file)
@@ -6,6 +6,12 @@ use namespace::clean -except => [ 'meta' ];
 sub find_variable {
     my ($self, $name) = @_;
 
+    # XXX: this code needs to live in LexEnv
+    if ($self->can('lexical_environment')) {
+        return \( $self->lexical_environment->get_context('_')->{$name} )
+            if exists $self->lexical_environment->get_context('_')->{$name};
+    }
+
     my $sigil = $name =~ s/^([\$\@\%\&\*])// ? $1 : '';
 
     my $default_package = $self->can('current_package')
index ea6d26b..4a272d1 100644 (file)
@@ -44,14 +44,17 @@ around 'execute' => sub {
   return $self->$orig($wrapped, @rest);
 };
 
-around 'find_variable' => sub {
-  my $orig = shift;
-  my ($self, $name) = @_;
-
-  return \( $self->lexical_environment->get_context('_')->{$name} )
-    if exists $self->lexical_environment->get_context('_')->{$name};
-
-  return $orig->(@_);
-};
+# this doesn't work! yarg. we now just check $self->can('lexical_environment')
+# in FindVariable
+
+#around 'find_variable' => sub {
+#  my $orig = shift;
+#  my ($self, $name) = @_;
+#
+#  return \( $self->lexical_environment->get_context('_')->{$name} )
+#    if exists $self->lexical_environment->get_context('_')->{$name};
+#
+#  return $orig->(@_);
+#};
 
 1;