Devel::IntelliPerl - Auto-completion for Perl


Devel-IntelliPerl documentation  | view source Contained in the Devel-IntelliPerl distribution.

Index


NAME

Top

Devel::IntelliPerl - Auto-completion for Perl

VERSION

Top

version 0.04

SYNOPSIS

Top

    use Devel::IntelliPerl;

    my $source = <<'SOURCE';
    package Foo;

    use Moose;

    has foobar => ( isa => 'Str', is => 'rw' );
    has foo => ( isa => 'Foo', is => 'rw' );

    sub bar {
        my ($self, $c) = @_;
        # $c isa Catalyst
        $self->
    }

    1;
    SOURCE




    my $ip = Devel::IntelliPerl->new(source => $source, line_number => 10, column => 12);

    my @methods = $ip->methods;

@methods contains bar, foo, and foobar amongst others. Method completion for $c works as well. Using the comment # $c isa Catalyst you can specify the variable $c as an object of the Catalyst class. This comment can be located anywhere in the current file.

Even though the example uses Moose, this module works also with non Moose classes.

See SCREENCASTS for usage examples.

ATTRIBUTES

Top

line_number (Int $line_number)

Required

Line number of the cursor. Starts at 1.

column (Int $column)

Required

Position of the cursor. Starts at 1.

source (Str $source)

Required

Source code.

filename

Optional

Store the filename of the current file. If this value is set @INC is extended by all lib directories found in any parent directory. This is useful if you want to have access to modules which are not in @INC but in your local lib folder. This method sets inc.

This value is NOT used to retrive the source code! Use source instead.

inc (ArrayRef[Str] $inc)

Optional

All directories specified will be prepended to @INC.

METHODS

Top

error (Str $error)

If an error occurs it is accessible via this method.

line (Str $line)

Sets or gets the current line.

keyword

This represents the current keyword.

Examples (_ stands for the cursor position):

  my $foo = MyClass->_ # keyword is MyClass
  my $foo->_           # keyword is $foo
  my $foo->bar->_      # keyword is $foo->bar

prefix

Part of a method which has been typed already.

Examples (_ stands for the cursor position):

  my $foo = MyClass->foo_ # keyword is MyClass, prefix is foo
  my $foo->bar_           # keyword is $foo,    prefix is bar

methods

Returns all methods which were found for keyword and prefix.

trimmed_methods

Returns methods truncated from the beginning by the length of prefix.

INTERNAL METHODS

Top

guess_class (Str $keyword)

Given a keyword (e.g. $foo->bar->file) this method tries to find the class from which to load the methods.

handle_class

Loads the selected class.

handle_self

Loads the current class.

handle_method

This method tries to resove the class of the returned value of a given method. It supports Moose attributes as well as MooseX::Method::Signatures.

Example for an instrospectable class:

    package Signatures;

    use Moose;
    use Path::Class::File;
    use MooseX::Method::Signatures;
    use Moose::Util::TypeConstraints;

    has dir => ( isa => 'Path::Class::Dir', is => 'rw' );

    BEGIN { class_type 'PathClassFile', { class => 'Path::Class::File' }; }

    method file returns (PathClassFile) {
        return new Path::Class::File;
    }

    1;

Given this class, Devel::IntelliPerl provides the following features:

  my $sig = new Signatures;
  $sig->_        # will suggest "dir" and "file" amongst others
  $sig->file->_  # will suggest all methods from Path::Class::File

handle_variable

Tries to find the variable's class using regexes. Supported syntaxes:

  $variable = MyClass->new
  $variable = MyClass->new(...)
  $variable = new MyClass
  # $variable isa MyClass

inject_statement (Str $statement)

Injects $statement at the current position.

update_inc

Trigger called by filename.

SCREENCASTS

Top

http://www.screencast.com/t/H5DdRNbQVt

http://www.screencast.com/t/djkraaYgpx

TODO

Top

Support for auto completion in the POD (e.g. L <Devel::IntelliPerl/[auto complete]>)

AUTHOR

Top

Moritz Onken, <onken at netcubed.de>

BUGS

Top

Please report any bugs or feature requests to bug-devel-intelliperl at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Devel-IntelliPerl. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

SUPPORT

Top

You can find documentation for this module with the perldoc command.

    perldoc Devel::IntelliPerl




You can also look for information at:

* RT: CPAN's request tracker

http://rt.cpan.org/NoAuth/Bugs.html?Dist=Devel-IntelliPerl

* AnnoCPAN: Annotated CPAN documentation

http://annocpan.org/dist/Devel-IntelliPerl

* CPAN Ratings

http://cpanratings.perl.org/d/Devel-IntelliPerl

* Search CPAN

http://search.cpan.org/dist/Devel-IntelliPerl/

COPYRIGHT & LICENSE

Top


Devel-IntelliPerl documentation  | view source Contained in the Devel-IntelliPerl distribution.