- my $xoids = xoids_for($self, $eml) // return;
- $docids //= [];
- @$docids = sort { $a <=> $b } values %$xoids;
- my $cur_kw = msg_keywords($self, $docids->[0]);
-
+ my $cur_kw;
+ if ($eml) {
+ my $xoids = xoids_for($self, $eml) // return;
+ $docids //= [];
+ @$docids = sort { $a <=> $b } values %$xoids;
+ if (!@$docids && $self->over) {
+ my $bin = git_sha(1, $eml)->digest;
+ @$docids = $self->over->oidbin_exists($bin);
+ }
+ }
+ for my $id (@$docids) {
+ $cur_kw = eval { msg_keywords($self, $id) } and last;
+ }
+ if (!defined($cur_kw) && $@) {
+ $docids = join(', num:', @$docids);
+ croak "E: num:$docids keyword lookup failure: $@";
+ }