document the optional features
[p5sagit/Devel-REPL.git] / lib / Devel / REPL.pm
index 2e69891..b844931 100644 (file)
@@ -2,32 +2,32 @@ package Devel::REPL;
 
 use Term::ReadLine;
 use Moose;
-use namespace::clean -except => [ 'meta' ];
+use namespace::autoclean;
 use 5.008001; # backwards compat, doesn't warn like 5.8.1
 
-our $VERSION = '1.003013';
-
 with 'MooseX::Object::Pluggable';
 
 use Devel::REPL::Error;
 
 has 'term' => (
-  is => 'rw', required => 1,
+  is => 'rw',
+  lazy => 1,
   default => sub { Term::ReadLine->new('Perl REPL') }
 );
 
 has 'prompt' => (
-  is => 'rw', required => 1,
+  is => 'rw',
   default => sub { '$ ' }
 );
 
 has 'out_fh' => (
-  is => 'rw', required => 1, lazy => 1,
+  is => 'rw',
+  lazy => 1,
   default => sub { shift->term->OUT || \*STDOUT; }
 );
 
 has 'exit_repl' => (
-  is => 'rw', required => 1,
+  is => 'rw',
   default => sub { 0 }
 );
 
@@ -245,7 +245,7 @@ filename like so:
 
  system$ re.pl --rcfile myproject.pc
 
-If the filename happens to contain a forwardslash, then it's used absolutely,
+If the filename happens to contain a forward slash, then it's used absolutely,
 or realive to the current working directory:
 
  system$ re.pl --rcfile /path/to/my/project/repl.rc
@@ -259,7 +259,9 @@ To allow for the sharing of run control files, you can fashion them into a
 Perl module for distribution (perhaps via the CPAN). For more information on
 this feature, please see the L<Devel::REPL::Profile> manual page.
 
-A default profile ships with C<Devel::REPL>; it loads the following plugins:
+A C<Standard> profile ships with C<Devel::REPL>; it loads the following plugins
+(note that some of these require optional features -- or you can also use the
+C<Minimal> profile):
 
 =over 4
 
@@ -319,7 +321,7 @@ L<Devel::REPL::Plugin::ReadlineHistory>
 
 =head2 Plugins
 
-Plugins are a way to add funcionality to the REPL shell, and take advantage of
+Plugins are a way to add functionality to the REPL shell, and take advantage of
 C<Devel::REPL> being based on the L<Moose> object system for Perl 5. This
 means it's simple to 'hook into' many steps of the R-E-P-L process. Plugins
 can change the way commands are interpreted, or the way their results are
@@ -353,94 +355,37 @@ control files have already been executed:
  1
  $_
 
-=head1 REQUIREMENTS
-
-In addition to the contents of the standard Perl distribution, you will need
-the following:
-
-=over 4
-
-=item *
-
-L<Moose> >= 0.74
-
-=item *
-
-L<MooseX::Object::Pluggable> >= 0.0009
-
-=item *
-
-L<MooseX::Getopt> >= 0.18
-
-=item *
-
-L<MooseX::AttributeHelpers> >= 0.16
-
-=item *
-
-L<namespace::clean>
-
-=item *
-
-L<File::HomeDir>
-
-=item *
-
-L<Task::Weaken>
-
-=item *
-
-L<B::Concise>
+=head1 OPTIONAL FEATURES
 
-=item *
+In addition to the prerequisites declared in this distribution, which should be automatically installed by your L<CPAN> client, there are a number of optional features, used by
+additional plugins. You can install any of these features by installing this
+distribution interactively (e.g. C<cpanm --interactive Devel::REPL>).
 
-L<Term::ANSIColor>
-
-=item *
-
-L<Devel::Peek>
-
-=back
-
-Optionally, some plugins if installed will require the following modules:
+=for comment I hope to automatically generate this data via a Pod::Weaver section
 
 =over 4
 
-=item *
-
-L<PPI>
-
-=item *
-
-L<Data::Dump::Streamer>
+=item * Completion plugin - extensible tab completion
 
-=item *
+=item * DDS plugin - better format results with Data::Dump::Streamer
 
-L<Data::Dumper::Concise>
+=item * DDC plugin - even better format results with Data::Dumper::Concise
 
-=item *
+=item * INC completion driver - tab complete module names in use and require
 
-L<File::Next>
+=item * Interrupt plugin - traps SIGINT to kill long-running lines
 
-=item *
+=item * Keywords completion driver - tab complete Perl keywords and operators
 
-L<Sys::SigAction>
+=item * LexEnv plugin - variables declared with "my" persist between statements
 
-=item *
+=item * MultiLine::PPI plugin - continue reading lines until all blocks are closed
 
-L<B::Keywords>
+=item * Nopaste plugin - upload a session\'s input and output to a Pastebin
 
-=item *
+=item * PPI plugin - PPI dumping of Perl code
 
-L<Lexical::Persistence>
-
-=item *
-
-L<App::Nopaste>
-
-=item *
-
-L<Module::Refresh>
+=item * Refresh plugin - automatically reload libraries with Module::Refresh
 
 =back
 
@@ -472,6 +417,8 @@ Matt S Trout - mst (at) shadowcatsystems.co.uk (L<http://www.shadowcatsystems.co
 
 =item Chris Marshall
 
+=item Karen Etheridge C<< <ether@cpan.org> >>
+
 =back
 
 =head1 LICENSE