App-VTide
view release on metacpan or search on metacpan
lib/App/VTide/Command/NewWindow.pm view on Meta::CPAN
package App::VTide::Command::NewWindow;
# Created on: 2016-03-22 15:42:06
# Create by: Ivan Wills
# $Id$
# $Revision$, $HeadURL$, $Date$
# $Revision$, $Source$, $Date$
use Moo;
use warnings;
use version;
use Carp;
use English qw/ -no_match_vars /;
use YAML::Syck;
use File::chdir;
use Data::Dumper qw/Dumper/;
extends 'App::VTide::Command::Run';
our $VERSION = version->new('1.0.6');
our $NAME = 'new-window';
our $OPTIONS = [ 'force|f!', 'number|n=s', 'test|t!', 'verbose|v+', ];
our $LOCAL = 1;
sub details_sub { return ( $NAME, $OPTIONS, $LOCAL ) }
sub run {
my ($self) = @_;
my $terminals = $self->config->get->{terminals};
my $number = $self->defaults->{number};
my $term = $terminals->{$number};
# list panes in current session
# $ tmux list-panes -s
# 1.0: [180x96] [history 3781/4096, 2233336 bytes] %213 (active)
# 1.1: [180x24] [history 2856/4096, 2107575 bytes] %214
# 1.2: [180x71] [history 0/4096, 4236 bytes] %216
# 2.0: [361x96] [history 291/4096, 366910 bytes] %217 (active)
# 3.0: [361x96] [history 579/4096, 903096 bytes] %218 (active)
# 4.0: [361x96] [history 1467/4096, 2054430 bytes] %219 (active)
# 5.0: [361x96] [history 0/4096, 6591 bytes] %220 (active)
# 6.0: [361x96] [history 0/4096, 6591 bytes] %221 (active)
# 7.0: [361x96] [history 0/4096, 6591 bytes] %222 (active)
# 8.0: [361x96] [history 0/4096, 6591 bytes] %223 (active)
# 9.0: [361x96] [history 0/4096, 6591 bytes] %224 (active)
# 10.0: [361x96] [history 0/4096, 6591 bytes] %225 (active)
my $session = $self->get_panes(1);
if ( $session->{$number} && !$self->defaults->{force} ) {
system 'tmux', 'select-window', '-t', $number;
return;
}
if ( !$session->{ $number - 1 } ) {
warn "Sessions will be out of order!\n";
return if !$self->defaults->{force};
}
my @verbose = $self->defaults->{verbose} ? ('--verbose') : ();
my @test = $self->defaults->{test} ? ('--test') : ();
$ENV{VTIDE_TERM} = $number;
if ( $term->{dir} ) {
$CWD = $term->{dir};
}
system 'tmux', 'new-window', "vtide run @test @verbose $number && sleep 15";
if ( $term->{split} ) {
system 'vtide', 'split', @test, @verbose, $term->{split};
}
#my @panes = keys %{ $self->get_panes()->{''} };
#for my $pane (@panes) {
# next if $pane == 0;
# my $letter = 'a' + $pane;
# warn "$number$letter";
# next if !$terminals->{"$number$letter"};
#}
return;
}
sub get_panes {
my ( $self, $all ) = @_;
my %session;
my $session = $all ? ' -s' : '';
for my $pane (`tmux list-panes $session`) {
my ( $window, $pane ) = $pane =~ /^(?:(\d+).)?(\d+)/;
$session{ $window || '' }{$pane}++;
}
return \%session;
}
sub auto_complete {
( run in 0.864 second using v1.01-cache-2.11-cpan-39bf76dae61 )