type input = { row : string; package : string; anchor : Tracker.Core.Anchor.t } let location (loc : Tracker.Anchor.location) = let address = Git_outline.Address.of_string loc.address in Git_outline.Address.path address ^ ":" ^ string_of_int loc.range.start_line let resolve ~cache ~sources inputs = let index = Tracker.Anchor.index ~cache sources in List.map (fun input -> let state = match Tracker.Anchor.resolve index input.anchor with | Tracker.Anchor.Exact loc -> `Exact (location loc) | Tracker.Anchor.Edited loc -> `Edited (location loc) | Tracker.Anchor.Moved loc -> `Moved (location loc) | Tracker.Anchor.Gone -> `Gone in { View.row = input.row; package = input.package; at = Tracker.Core.Anchor.at input.anchor; state; }) inputs