anchor.diff:  
     override x.GetResults(searchCallback, pattern, token) =
   
  -    let addResult (solution: Solution, m: Match, rank) = 
  +    let addResult (solution: Solution, m: Match, rank, scriptPath) = 
         if token.IsCancellationRequested then ()
         else
  -        let sr = FakeSearchResult(solution, pattern.Pattern, m.Groups.[1].Value, rank)
  +        let sr = FakeSearchResult(solution, pattern.Pattern, m.Groups.[1].Value, rank, scriptPath)
           searchCallback.ReportResult sr
   
       Task.Run(
  
positive.code:          let matcher = StringMatcher.GetMatcher (pattern.Pattern, false)
           async {
             for solution in IdeApp.Workspace.GetAllSolutions() do
               let root = solution.BaseDirectory
               let fakeScriptPath = Path.Combine([|string root; "build.fsx"|])
               if File.Exists(fakeScriptPath) then
                 let fakeScript = File.ReadAllText fakeScriptPath
                 Regex.Matches(fakeScript, "Target \"([\\w.]+)\"")
                   |> Seq.cast<Match> 
                   |> Seq.map (fun m -> (solution, m, matcher.CalcMatchRank ("FAKE " + m.Groups.[1].Value)))
                   |> Seq.choose (fun x -> match x with
                                           | (p, m, (true, r)) -> Some (p, m, r) 
                                           | _ -> None)
                   |> Seq.iter addResult }
           |> Async.Start ), token)
  
negative.code:     let font = Pango.FontDescription.FromString(fontName)
      view.SetFont(font)
  
  type FakeSearchResult(solution: Solution, match', matchedString, rank, scriptPath) =
    inherit SearchResult(match', matchedString, rank)
  
    override x.SearchResultType =
      SearchResultType.Type
  
    override x.Description =
      sprintf "Runs the FAKE %s task in %s" matchedString solution.Name
  
    override x.PlainText = "FAKE " + matchedString
  
  