package Kephra::Edit::Special;
$VERSION = '0.01';
use strict;
use warnings;
sub _ep_ref { Kephra::App::EditPanel::_ref() }
sub copy_surrounding_string { # Edit String (surrounding string encapsulated by "" or '')
my $ep = _ep_ref();
my $pos = $ep->GetCurrentPos;
my $line = $ep->GetCurrentLine;
my $lpos = $ep->PositionFromLine($line);
my $befor_text = $ep->GetTextRange($lpos, $pos);
my $after_text = $ep->GetTextRange($pos+1, $ep->GetLineEndPosition($line));
my $sq_start = rindex $befor_text, '\'';
my $sq_stop = index $after_text, '\'';
my $dq_start = rindex $befor_text, '"';
my $dq_stop = index $after_text, '"';
return if ($sq_start == -1 or $sq_stop == -1)
and ($dq_start == -1 or $dq_stop == -1);
Kephra::Edit::_save_positions();
if ($sq_start > $dq_start){$ep->SetSelection($lpos+$sq_start+1, $pos+$sq_stop+1)}
else {$ep->SetSelection($lpos+$dq_start+1, $pos+$dq_stop+1)}
Kephra::Edit::copy();
Kephra::Edit::_restore_positions();
}
sub insert_last_perl_var {
my $ep = _ep_ref();
my $lnr = $ep->GetCurrentLine;
return unless $lnr;
my $pos = $ep->GetCurrentPos;
my $var; # store catched var name into that scalar
my $nl = ''; # namespace level, how nested is current ns?
while (1){
# go up and get me the conent of the line
my $line = $ep->GetLine(--$lnr);
# catch the perl var
my $result = $line =~ /([\$@%]\w+)[\[{ -=\(\r\n]/;
$nl++ if $line =~ /^\s*\}/;
$nl-- if $line =~ /\{\s*(#.*)?$/;
$var = $nl ? '' : $1;
# exit loop if found something in this , no subnamespace,
# or reached end of file or end of block
last if $var or $lnr == 0 or ($nl and $nl < 0);
}
return unless $var;
$ep->InsertText( $pos, $var);
$ep->GotoPos($pos + length $var);
}
sub insert_time_date {
my @t = localtime;
Kephra::Edit::insert( sprintf(
"%02d:%02d %02d.%02d.%d",
$t[2],$t[1],$t[3],1+$t[4],1900+$t[5]
) );
}
1;