Add an Interrupt plugin for better handling of ^C
[p5sagit/Devel-REPL.git] / lib / Devel / REPL / Plugin / Interrupt.pm
diff --git a/lib/Devel/REPL/Plugin/Interrupt.pm b/lib/Devel/REPL/Plugin/Interrupt.pm
new file mode 100644 (file)
index 0000000..1d79bd8
--- /dev/null
@@ -0,0 +1,18 @@
+package Devel::REPL::Plugin::Interrupt;
+
+use Moose::Role;
+use namespace::clean -except => [ 'meta' ];
+
+around 'eval' => sub {
+    my $orig = shift;
+    my ($self, $line) = @_;
+
+    local $SIG{INT} = sub {
+        die "Interrupted.\n";
+    };
+
+    return $self->$orig($line);
+};
+
+1;
+