summaryrefslogtreecommitdiffstats
path: root/lib/Language/TECO/Buffer.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Language/TECO/Buffer.pm')
-rw-r--r--lib/Language/TECO/Buffer.pm19
1 files changed, 19 insertions, 0 deletions
diff --git a/lib/Language/TECO/Buffer.pm b/lib/Language/TECO/Buffer.pm
index bc0f7c8..65c0e93 100644
--- a/lib/Language/TECO/Buffer.pm
+++ b/lib/Language/TECO/Buffer.pm
@@ -51,4 +51,23 @@ sub print {
print substr $self->{buffer}, $start, $end - $start;
}
+sub get_line_offset {
+ my $self = shift;
+ my $num = shift;
+
+ if ($num > 0) {
+ pos $self->{buffer} = $self->{pointer};
+ $self->{buffer} =~ /(?:.*(?:\n|$)){$num}/g;
+ return ($-[0], $+[0]);
+ }
+ else {
+ $num = -$num;
+ my $rev = reverse $self->{buffer};
+ my $len = length $self->{buffer};
+ pos $rev = $len - $self->{pointer};
+ $rev =~ /.*?(?:\n.*?){$num}(?=\n|$)/g;
+ return ($len - $+[0], $len - $-[0]);
+ }
+}
+
1;