BEGIN
{
use
vars
qw ($VERSION
@ISA
@EXPORT
@EXPORT_OK
%EXPORT_TAGS
);
$VERSION
= 0.01;
@ISA
=
qw (Exporter);
@EXPORT
=
qw ();
@EXPORT_OK
=
qw ();
%EXPORT_TAGS
= ();
}
sub
SetTabSize {
$_
[0]->{
'Text::Editor::Vip::Buffer::Display::TAB_SIZE'
} =
$_
[1] ;}
sub
GetTabSize {
return
(
$_
[0]->{
'Text::Editor::Vip::Buffer::Display::TAB_SIZE'
}) ;}
sub
GetCharacterPositionInText
{
my
(
$this
,
$line_index
,
$position
,
$line_text
) =
@_
;
$line_text
||=
$this
->GetLineText(
$line_index
) ;
my
(
$character_position
,
$display_position
) = (0, 0) ;
for
(
split
//,
$line_text
)
{
if
(
$_
eq
"\t"
)
{
$display_position
+=
$this
->{
'Text::Editor::Vip::Buffer::Display::TAB_SIZE'
} ;
}
else
{
$display_position
++ ;
}
last
if
$display_position
>
$position
;
$character_position
++ ;
}
if
(
$display_position
<
$position
)
{
return
(
length
(
$line_text
) + (
$position
-
$display_position
)) ;
}
else
{
return
(
$character_position
) ;
}
}
sub
GetCharacterDisplayPosition
{
my
(
$this
,
$line_index
,
$position
,
$line_text
) =
@_
;
$line_text
=
$this
->GetLineText(
$line_index
) ;
substr
(
$line_text
,
$position
) =
''
if
$position
<
length
(
$line_text
) ;
return
((
$line_text
=~
tr
/\t/\t/ * (
$this
->{
'Text::Editor::Vip::Buffer::Display::TAB_SIZE'
} - 1)) +
$position
) ;
}
1 ;