I believe the right thing to do for the "Scope.File" case is to reuse the currentName and checkResults you already computed in GetFSharpSymbol (though that is not yet returned).  In that way, local renamings can work without forcing the file to be saved to disk.  That is

   1. Get symbol based on buffer text
   2. Check if it is in the current project
   3. Offer modal dialog
   4. If file scope, replace in buffer without saving
   5. If project scope, save all files, get all symbol references, make replacement

What you have is probably ok for now though