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 --- dist.ini | 2 +- lib/Reply/Plugin/AutoRefresh.pm | 30 +++++++++++++++++++++++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/dist.ini b/dist.ini index 69d56a3..46aa79f 100644 --- a/dist.ini +++ b/dist.ini @@ -29,7 +29,7 @@ skip = ^Proc::InvokeEditor$ [Prereqs / RuntimeRecommends] App::Nopaste = 0 -Class::Refresh = 0.04 +Class::Refresh = 0.05 Data::Dump = 0 Data::Printer = 0 Proc::InvokeEditor = 0 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