@@ -15,44 +15,42 @@ void VirtualFile::UpdateFile(vscode::Range range, std::string&& content)
1515 return UpdateFile (std::move (content));
1616 }
1717
18+ std::string text;
19+ text.swap (_luaFile->GetSource ());
1820 auto startOffset = _luaFile->GetOffsetFromPosition (range.start .line , range.start .character );
1921 auto endOffset = _luaFile->GetOffsetFromPosition (range.end .line , range.end .character );
20- auto oldSize = _text .size ();
22+ auto oldSize = text .size ();
2123 auto newSize = oldSize + (content.size () - (endOffset - startOffset));
22- if (newSize > _text .capacity ())
24+ if (newSize > text .capacity ())
2325 {
2426 auto suitableCapacity = newSize + 4096 ;
25- _text .reserve (suitableCapacity);
27+ text .reserve (suitableCapacity);
2628 }
2729
2830 if (newSize > oldSize)
2931 {
30- _text .resize (newSize);
31- std::copy_backward (_text .begin () + endOffset, _text .begin () + oldSize, _text .end ());
32- std::copy (content.begin (), content.end (), _text .begin () + startOffset);
32+ text .resize (newSize);
33+ std::copy_backward (text .begin () + endOffset, text .begin () + oldSize, text .end ());
34+ std::copy (content.begin (), content.end (), text .begin () + startOffset);
3335 }
3436 else
3537 {
36- std::copy (_text .begin () + endOffset, _text .end (), _text .begin () + startOffset + content.size ());
38+ std::copy (text .begin () + endOffset, text .end (), text .begin () + startOffset + content.size ());
3739 if (content.size () > 0 )
3840 {
39- std::copy (content.begin (), content.end (), _text .begin () + startOffset);
41+ std::copy (content.begin (), content.end (), text .begin () + startOffset);
4042 }
41- _text .resize (newSize);
43+ text .resize (newSize);
4244 }
4345
44- std::string fileText = _text;
4546 _luaFile = std::make_shared<LuaFile>(std::filesystem::path (url::UrlToFilePath (_fileUri)).filename ().string (),
46- std::move (fileText));
47- MakeParser ();
47+ std::move (text));
4848}
4949
5050void VirtualFile::UpdateFile (std::string&& text)
5151{
52- _text = text;
5352 _luaFile = std::make_shared<LuaFile>(std::filesystem::path (url::UrlToFilePath (_fileUri)).filename ().string (),
5453 std::move (text));
55- MakeParser ();
5654}
5755
5856void VirtualFile::Reset ()
0 commit comments