]> ruderich.org/simon Gitweb - fcscs/fcscs.git/blobdiff - bin/fcscs
expose debug to config API
[fcscs/fcscs.git] / bin / fcscs
index ade298a6114e57a3d8ee7a77b1fff068fc1f041d..8cffebd6ff049e78dbcc54f0ae2634e4747e89e0 100755 (executable)
--- a/bin/fcscs
+++ b/bin/fcscs
@@ -729,7 +729,7 @@ sub handler_paste {
 sub handler_url {
     my ($screen, $config, $match) = @_;
 
-    debug $config, 'handler_url', 'started';
+    debug $config, 'handler_url', "opening $match->{value}";
 
     run_in_background($config, sub {
         my @cmd = map { $screen->encode($_) } (
@@ -1034,6 +1034,7 @@ Used as mappings, see L</MAPPINGS> above.
 
 Used as handler to yank, paste selection or open URL in browser.
 
+    debug()
     get_regex_matches()
     select_match()
     run_command()
@@ -1066,6 +1067,8 @@ package Fcscs {
     sub handler_paste { return main::handler_paste(@_); }
     sub handler_url { return main::handler_url(@_); }
 
+    sub debug { return main::debug(@_); }
+
     sub get_regex_matches { return main::get_regex_matches(@_); }
     sub select_match { return main::select_match(@_); }
 
@@ -1211,10 +1214,20 @@ RESULT:
             }
 
             debug \%config, 'input', 'running handler';
-            my $handler = $config{state}{handler};                 # set by user
-            $handler = $result->{handler} unless defined $handler; # set by mapping
-            $handler = $config{handler}{yank} unless defined $handler; # fallback
-            $handler->($screen, \%config, $result->{match});
+
+            # Choose handler with falling priority.
+            my @handlers = (
+                $config{state}{handler},     # set by user
+                $result->{match}->{handler}, # set by match
+                $result->{handler},          # set by mapping
+                $config{handler}{yank},      # fallback
+            );
+            foreach my $handler (@handlers) {
+                next unless defined $handler;
+
+                $handler->($screen, \%config, $result->{match});
+                last;
+            }
             last;
         }