# fcscs - fast curses screen content select
-# Copyright (C) 2013-2016 Simon Ruderich
+# Copyright (C) 2013-2017 Simon Ruderich
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
return;
}
+
+ sub prompt {
+ my ($self, %settings) = @_;
+
+ foreach (keys %settings) {
+ die if not exists $self->{prompt}{$_};
+ $self->{prompt}{$_} = $settings{$_};
+ }
+ return;
+ }
+
+
+ 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;
+ }
+ $fh->autoflush(1);
+ }
+
+ foreach (@args) {
+ $_ = $self->encode($_);
+ }
+ say $fh "$module: @args" or die $!;
+ return;
+ }
sub die {
my ($self, @args) = @_;
$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;
- }
- $fh->autoflush(1);
- }
-
- foreach (@args) {
- $_ = $self->encode($_);
- }
- say $fh "$module: @args" or CORE::die $!;
- return;
- }
-
-
- sub prompt {
- my ($self, %settings) = @_;
-
- foreach (keys %settings) {
- CORE::die if not exists $self->{prompt}{$_};
- $self->{prompt}{$_} = $settings{$_};
- }
- return;
- }
# Wrapper for Curses.
sub width { return $Curses::COLS; }
# Necessary for GNU screen or it'll keep the window open until an
# external command has run.
- require File::Spec;
+ require File::Spec; # load here to speedup startup
my $devnull = File::Spec->devnull();
open STDIN, '<', $devnull or die $!;
open STDOUT, '>', $devnull or die $!;
$number = 1;
}
- $screen->draw_matches($config, $matches, []); # remove matches
+ $screen->draw_matches($config, $matches, []); # clear matches
foreach (@{$matches}) {
return { match => $_ } if $_->{id} == $number;
$screen->debug('handler_yank', 'started');
- require File::Temp;
+ require File::Temp; # load here to speedup startup
# Use a temporary file to prevent leaking the yanked data to other users
# with the command line, e.g. ps aux or top.
$screen->debug('handler_paste', 'started');
- require Time::HiRes;
+ require Time::HiRes; # load here to speedup startup
my @cmd;
if ($config->{setting}{multiplexer} eq 'screen') {
=head1 CONFIGURATION
-fcscs is configured through F<~/.fcscsrc> or F<~/.config/fcscs/fcscsrc> which
-is a normal Perl script with all of Perl's usual features.
+fcscs is configured through F<~/.fcscsrc> (preferred) or
+F<~/.config/fcscs/fcscsrc> which is a normal Perl script with all of Perl's
+usual features (only loaded if not writable by others).
All configuration values are stored in the hash C<%config>. All manually
defined keys overwrite the default settings.
# Draw numbers in bold yellow.
$config{attribute}{match_id} = color_pair(COLOR_YELLOW, -1)
| A_BOLD;
- # Disable Vim-like 'smartcase', ignore case until an upper character is
- # searched.
+ # Disable Vim-like 'smartcase' (ignore case until an upper character is
+ # searched) which is enabled by default.
$config{setting}{smartcase} = 0;
# Use chromium to open URLs if running under X, elinks otherwise.
=item B<paste_sleep> sleep x us before running paste command (C<100_000>)
-=item B<screen_msgwait> GNU Screen's msgwait variable, used when yanking (C<5>)
+=item B<screen_msgwait> GNU Screen's msgwait variable, overwritten with this value when yanking (C<5>)
=item B<alternative_return> additional accept key like return, set to C<\n> to disable (C<s>)
=head1 LICENSE AND COPYRIGHT
-Copyright (C) 2013-2016 by Simon Ruderich
+Copyright (C) 2013-2017 by Simon Ruderich
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by