From: Simon Ruderich Date: Wed, 27 Jan 2016 16:23:26 +0000 (+0100) Subject: move debug() to Screen class X-Git-Url: https://ruderich.org/simon/gitweb/?a=commitdiff_plain;h=f124504b5d88971f1740b01faed809a63825fe17;p=fcscs%2Ffcscs.git move debug() to Screen class --- diff --git a/bin/fcscs b/bin/fcscs index 29499d2..5b68c2b 100755 --- a/bin/fcscs +++ b/bin/fcscs @@ -341,6 +341,23 @@ package Screen { $self->deinit; exit 1; } + sub debug { + my ($self, $module, @args) = @_; + + return if not $self->{debug}; + + state $fh; # only open the file once per run + if (not defined $fh) { + # Ignore errors if the directory doesn't exist. + if (not open $fh, '>', "$ENV{HOME}/.config/fcscs/log") { + $fh = undef; # a failed open still writes a value to $fh + return; + } + } + + say $fh "$module: @args"; + return; + } sub prompt { @@ -365,25 +382,6 @@ package Screen { # FUNCTIONS -sub debug { - my ($config, $module, @args) = @_; - - return if not $config->{setting}{debug}; - - state $fh; # only open the file once per run - if (not defined $fh) { - # Ignore errors if the directory doesn't exist. - if (not open $fh, '>', "$ENV{HOME}/.config/fcscs/log") { - $fh = undef; # a failed open still writes a value to $fh - return; - } - } - - say $fh "$module: @args"; - return; -} - - sub prepare_input { my ($screen, $input_ref) = @_; @@ -432,9 +430,9 @@ sub get_regex_matches { sub run_command { - my ($config, $cmd) = @_; + my ($screen, $config, $cmd) = @_; - debug $config, 'run_command', "running @{$cmd}"; + $screen->debug('run_command', "running @{$cmd}"); my $exit = do { # Perl's system() combined with a $SIG{__WARN__} which die()s has @@ -474,9 +472,9 @@ sub run_command { return; } sub run_in_background { - my ($config, $sub) = @_; + my ($screen, $sub) = @_; - debug $config, 'run_in_background', "running $sub"; + $screen->debug('run_in_background', "running $sub"); my $pid = fork; defined $pid or die $!; @@ -508,7 +506,7 @@ sub run_in_background { sub select_match { my ($name, $screen, $config, $input, $matches) = @_; - debug $config, 'select_match', 'started'; + $screen->debug('select_match', 'started'); return if @{$matches} == 0; # Don't return on initial run to give the user a chance to select another @@ -572,7 +570,7 @@ sub select_match { foreach (@{$matches}) { return { match => $_ } if $_->{id} == $number; } - debug $config, 'select_match', 'no match selected'; + $screen->debug('select_match', 'no match selected'); return { match => undef }; } @@ -599,7 +597,7 @@ sub extend_match_regex_right { sub extend_match { my ($screen, $config, $input, $match) = @_; - debug $config, 'extend_match', 'started'; + $screen->debug('extend_match', 'started'); $screen->prompt(name => 'extend', value => undef); $screen->draw_prompt($config); @@ -651,7 +649,7 @@ sub extend_match { $screen->refresh; } - debug $config, 'extend_match', 'done'; + $screen->debug('extend_match', 'done'); return { match => $match }; } @@ -660,7 +658,7 @@ sub extend_match { sub mapping_paste { my ($key, $screen, $config, $input) = @_; - debug $config, 'mapping_paste', 'started'; + $screen->debug('mapping_paste', 'started'); $config->{state}{handler} = $config->{handler}{paste}; @@ -673,7 +671,7 @@ sub mapping_paste { sub mapping_yank { my ($key, $screen, $config, $input) = @_; - debug $config, 'mapping_yank', 'started'; + $screen->debug('mapping_yank', 'started'); $config->{state}{handler} = $config->{handler}{yank}; @@ -704,7 +702,7 @@ The following normal modes are available: sub mapping_mode_path { my ($key, $screen, $config, $input) = @_; - debug $config, 'mapping_mode_path', 'started'; + $screen->debug('mapping_mode_path', 'started'); my @matches = get_regex_matches($input, $config->{regex}{path}); return { @@ -716,7 +714,7 @@ sub mapping_mode_path { sub mapping_mode_url { my ($key, $screen, $config, $input) = @_; - debug $config, 'mapping_mode_url', 'started'; + $screen->debug('mapping_mode_url', 'started'); my @matches = get_regex_matches($input, $config->{regex}{url}); return { @@ -763,7 +761,7 @@ characters (C<\S+>), just like in Vim. sub mapping_mode_search { my ($key, $screen, $config, $input) = @_; - debug $config, 'mapping_mode_search', 'started'; + $screen->debug('mapping_mode_search', 'started'); $screen->cursor(1); @@ -831,7 +829,7 @@ sub mapping_quit { sub handler_yank { my ($screen, $config, $match) = @_; - debug $config, 'handler_yank', 'started'; + $screen->debug('handler_yank', 'started'); require File::Temp; @@ -842,18 +840,18 @@ sub handler_yank { close $fh or die $!; if ($config->{setting}{multiplexer} eq 'screen') { - debug $config, 'handler_yank', 'using screen'; + $screen->debug('handler_yank', 'using screen'); # GNU screen displays an annoying "Slurping X characters into buffer". # Use 'msgwait 0' as a hack to disable it. my $msgwait = $config->{setting}{screen_msgwait}; - run_command($config, ['screen', '-X', 'msgwait', 0]); - run_command($config, ['screen', '-X', 'readbuf', $tmp]); - run_command($config, ['screen', '-X', 'msgwait', $msgwait]); + run_command($screen, $config, ['screen', '-X', 'msgwait', 0]); + run_command($screen, $config, ['screen', '-X', 'readbuf', $tmp]); + run_command($screen, $config, ['screen', '-X', 'msgwait', $msgwait]); } elsif ($config->{setting}{multiplexer} eq 'tmux') { - debug $config, 'handler_yank', 'using tmux'; + $screen->debug('handler_yank', 'using tmux'); - run_command($config, ['tmux', 'load-buffer', $tmp]); + run_command($screen, $config, ['tmux', 'load-buffer', $tmp]); } else { die 'unsupported multiplexer'; } @@ -864,22 +862,22 @@ sub handler_yank { sub handler_paste { my ($screen, $config, $match) = @_; - debug $config, 'handler_paste', 'started'; + $screen->debug('handler_paste', 'started'); require Time::HiRes; my @cmd; if ($config->{setting}{multiplexer} eq 'screen') { - debug $config, 'handler_paste', 'using screen'; + $screen->debug('handler_paste', 'using screen'); @cmd = qw( screen -X paste . ); } elsif ($config->{setting}{multiplexer} eq 'tmux') { - debug $config, 'handler_paste', 'using tmux'; + $screen->debug('handler_paste', 'using tmux'); @cmd = qw( tmux paste-buffer ); } else { die 'unsupported multiplexer'; } - run_in_background($config, sub { + run_in_background($screen, sub { # We need to get the data in the paste buffer before we can paste # it. handler_yank($screen, $config, $match); @@ -887,21 +885,21 @@ sub handler_paste { # Sleep until we switch back to the current window. Time::HiRes::usleep($config->{setting}{paste_sleep}); - run_command($config, \@cmd); + run_command($screen, $config, \@cmd); }); return; } sub handler_url { my ($screen, $config, $match) = @_; - debug $config, 'handler_url', "opening $match->{value}"; + $screen->debug('handler_url', "opening $match->{value}"); - run_in_background($config, sub { + run_in_background($screen, sub { my @cmd = map { $screen->encode($_) } ( @{$config->{setting}{browser}}, $match->{value}, ); - run_command($config, \@cmd); + run_command($screen, $config, \@cmd); }); return; } @@ -1152,8 +1150,9 @@ Example: my ($screen, $config, $match) = @_; if ($match->{value} =~ m{^https://www.youtube.com/}) { - return run_in_background($config, sub { - run_command($config, ['youtube-dl-wrapper', $match->{value}]); + return run_in_background($screen, sub { + run_command($screen, $config, + ['youtube-dl-wrapper', $match->{value}]); }); } handler_url(@_); @@ -1340,7 +1339,7 @@ eval { while (1) { if (not defined $mapping) { $key = $screen->getch unless defined $key; - debug \%config, 'input', "got key '$key'"; + $screen->debug('input', "got key '$key'"); $mapping = $config{mapping}{mode}{$key}; $mapping = $config{mapping}{simple}{$key} unless defined $mapping; @@ -1350,22 +1349,22 @@ eval { } } - debug \%config, 'input', 'running mapping'; + $screen->debug('input', 'running mapping'); my $result = $mapping->($key, $screen, \%config, $input); $mapping = undef; RESULT: if (defined $result->{quit}) { - debug \%config, 'input', 'quitting'; + $screen->debug('input', 'quitting'); last; } if (defined $result->{key}) { $key = $result->{key}; # lookup another mapping - debug \%config, 'input', "processing new key: '$key'"; + $screen->debug('input', "processing new key: '$key'"); next; } if (defined $result->{select}) { - debug \%config, 'input', 'selecting match'; + $screen->debug('input', 'selecting match'); my $tmp = $result; $result = select_match($result->{select}, $screen, \%config, $input, @@ -1375,7 +1374,7 @@ RESULT: goto RESULT; # reprocess special entries in result } if (defined $result->{extend}) { - debug \%config, 'input', 'extending match'; + $screen->debug('input', 'extending match'); $result = extend_match($screen, \%config, $input, $result->{match}); goto RESULT; # reprocess special entries in result @@ -1385,7 +1384,7 @@ RESULT: $result->{match}{value} = $result->{match}{string}; } - debug \%config, 'input', 'running handler'; + $screen->debug('input', 'running handler'); # Choose handler with falling priority. my @handlers = (