From ec23bd9a3a9a2a972eff470fd424f2616703e865 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Tue, 25 Jun 2013 17:09:46 -0400 Subject: use the new track_require functionality in the AutoRefresh plugin --- lib/Reply/Plugin/AutoRefresh.pm | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/Reply/Plugin/AutoRefresh.pm b/lib/Reply/Plugin/AutoRefresh.pm index 06e4550..3a21dfb 100644 --- a/lib/Reply/Plugin/AutoRefresh.pm +++ b/lib/Reply/Plugin/AutoRefresh.pm @@ -4,12 +4,13 @@ use warnings; # ABSTRACT: automatically refreshes the external code you use use base 'Reply::Plugin'; -use Class::Refresh 0.04; +use Class::Refresh 0.05 (); =head1 SYNOPSIS ; .replyrc [AutoRefresh] + track_require = 1 =head1 DESCRIPTION @@ -17,8 +18,35 @@ This plugin automatically refreshes all loaded modules before every statement execution. It's useful if you are working on a module in a file and you want the changes to automatically be loaded in Reply. +It takes a single argument, C, which defaults to true. +If this option is set, the C functionality from +L will be enabled. + +Note that to use the C functionality, this module must +be loaded as early as possible (preferably first), so that other +modules correctly see the global override. + =cut +sub new { + my $class = shift; + my %opts = @_; + + $opts{track_require} = 1 + unless defined $opts{track_require}; + + Class::Refresh->import(track_require => $opts{track_require}); + + # so that when we load things after this plugin, they get a copy of + # Module::Runtime which has the call to require() rebound to our overridden + # copy. if this plugin is loaded first, these should be the only + # modules loaded so far which load arbitrary user-specified modules. + Class::Refresh->refresh_module('Module::Runtime'); + Class::Refresh->refresh_module('base'); + + return $class->SUPER::new(@_); +} + sub compile { my $self = shift; my ($next, @args) = @_; -- cgit v1.2.3-54-g00ecf