diff --git a/web/regex_demo.html b/web/regex_demo.html
index 1d95808..33223ff 100644
--- a/web/regex_demo.html
+++ b/web/regex_demo.html
@@ -152,7 +152,9 @@ sub newsamp {
}
$addsamp->click(sub { newsamp('')->click });
-our $re_debug=0; #TODO Later: this is actually a parameter to update()
+# $re_debug is actually a parameter to update()/actual_update(), but since
+# we register &update as a event handler, it'll get passed varying parameters
+our $re_debug=0;
my $ta_debugout = $jq->('#debugout');
my $re_debug_hide = $jq->('#re_debug_hide');
$jq->('#re_debug')->click(sub {
@@ -260,6 +262,13 @@ sub run_code {
}
sub update {
+ state $timeout_id;
+ state $window = js('window');
+ $window->clearTimeout($timeout_id) if defined $timeout_id;
+ if ($re_debug) { $timeout_id=undef; actual_update() }
+ else { $timeout_id = $window->setTimeout(\&actual_update, 100) }
+}
+sub actual_update {
my $regex = $ta_regex->val;
my $flags = $ta_flags->val;
my $precode = $precode_ta->is(':visible') ? $precode_ta->val : '';