Changeset 13614e7 for perl


Ignore:
Timestamp:
Jul 27, 2009, 11:23:57 PM (12 years ago)
Author:
Nelson Elhage <nelhage@mit.edu>
Branches:
master, release-1.4, release-1.5, release-1.6, release-1.7, release-1.8, release-1.9
Children:
d7bcff8
Parents:
8eac1a5
git-author:
Nelson Elhage <nelhage@mit.edu> (07/25/09 00:37:50)
git-committer:
Nelson Elhage <nelhage@mit.edu> (07/27/09 23:23:57)
Message:
Context.pm: Return the boundaries of the current word.

We need this in order to be able to replace it when completing.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • perl/lib/BarnOwl/Completion/Context.pm

    r8eac1a5 r13614e7  
    4141use base qw(Class::Accessor::Fast);
    4242
    43 __PACKAGE__->mk_ro_accessors(qw(line point words word word_point));
     43__PACKAGE__->mk_ro_accessors(qw(line point words word word_point
     44                                word_start word_end));
    4445
    4546sub new {
     
    5051    my $line  = $before_point . $after_point;
    5152    my $point = length ($before_point);
    52     my ($words, $word, $word_point) = tokenize($line, $point);
     53    my ($words, $word, $word_point,
     54        $word_start, $word_end) = tokenize($line, $point);
    5355
    5456    my $self = {
     
    5759        words => $words,
    5860        word  => $word,
    59         word_point => $word_point
     61        word_point => $word_point,
     62        word_start => $word_start,
     63        word_end   => $word_end
    6064       };
    6165    return bless($self, $class);
     
    8993    my @words = ();
    9094    my $cword = 0;
     95    my $cword_start;
     96    my $cword_end;
    9197    my $word_point;
    9298
    9399    my $word = '';
     100    my $wstart = 0;
    94101    my $skipped = 0;
    95102
     
    114121            push @words, $word;
    115122            $cword++ unless $wend >= $point;
    116             if ($wend >= $point && !defined($word_point)) {
     123            if(($wend >= $point) && !defined($word_point)) {
    117124                $word_point = length($word) - ($wend - $point) + $skipped;
     125                $cword_start = $wstart;
     126                $cword_end   = $wend;
    118127            }
    119128            $word = '';
     129            $wstart = pos($line);
    120130            $skipped = 0;
    121131        }
     
    124134    if(length($word)) { die("Internal error, leftover=$word"); }
    125135
    126     $word_point = 0 unless defined($word_point);
     136    unless(defined($word_point)) {
     137        $word_point = 0;
     138        $cword_start = $cword_end = 0;
     139    }
    127140
    128     return (\@words, $cword, $word_point);
     141    return (\@words, $cword, $word_point, $cword_start, $cword_end);
    129142}
    130143
Note: See TracChangeset for help on using the changeset viewer.