diff options
Diffstat (limited to 'vimput.pl')
| -rw-r--r-- | vimput.pl | 35 | 
1 files changed, 30 insertions, 5 deletions
| @@ -1,5 +1,7 @@  use strict; +use File::Temp qw(tempfile); +  use Irssi;  our $VERSION = '1.00'; @@ -16,22 +18,22 @@ use constant CTRL_X => 24;  # The location of the temporary file where prompt contents are written. -sub tempfile { +sub vimput_file {  	Irssi::get_irssi_dir() . '/VIMPUT_MSG';  } -# Write the given string to our tempfile. +# Write the given string to our vimput_file.  sub write_input {  	my ($message) = @_; -	open my $handle, '>', tempfile or die $!; +	open my $handle, '>', vimput_file or die $!;  	print $handle $message;  	close $handle;  } -# Open a Tmux split containing a Vim instance editing the tempfile. +# Open a Tmux split containing a Vim instance editing the vimput_file.  sub open_tmux_split {  	if (!$ENV{TMUX}) {  		print 'no tmux'; # TODO: Replace with Irssi print @@ -39,11 +41,33 @@ sub open_tmux_split {  		return;  	} -	my $command = "vim ${\tempfile}"; +	my $command = "vim ${\vimput_file}";  	system('tmux', 'split-window', $command);  } +sub update_input_line_when_finished { +	my ($handle, $filename) = tempfile(); +	print $filename; + +	open $handle, '<', $filename or die $!; +	# my $x = 0; +	while (<$handle>) { +		print $_; +		if ($_) { +			print $_; +			Irssi::gui_input_set($_); + +			close $handle; +			last; +		} +		# print $_; +		# sleep 2; +		# $x++; +	} +} + +  # TODO: Find out if it's possible to do this is a command  Irssi::signal_add_last 'gui key pressed' => sub {  	my ($key) = @_; @@ -51,5 +75,6 @@ Irssi::signal_add_last 'gui key pressed' => sub {  	if ($key eq CTRL_X) {  		write_input(Irssi::parse_special('$L', undef, 0));  		open_tmux_split(); +		update_input_line_when_finished();  	}  }; | 
