Browse Source

Made CodeDocument:: replaceAllContent apply a diff of only the changed regions.

tags/2021-05-28
jules 13 years ago
parent
commit
85e5fae0fd
2 changed files with 14 additions and 7 deletions
  1. +3
    -5
      extras/Introjucer/Source/Code Editor/jucer_SourceCodeEditor.cpp
  2. +11
    -2
      modules/juce_gui_extra/code_editor/juce_CodeDocument.cpp

+ 3
- 5
extras/Introjucer/Source/Code Editor/jucer_SourceCodeEditor.cpp View File

@@ -38,6 +38,7 @@ CodeDocument& SourceCodeDocument::getCodeDocument()
{
codeDoc = new CodeDocument();
reloadInternal();
codeDoc->clearUndoHistory();
}
return *codeDoc;
@@ -61,11 +62,8 @@ void SourceCodeDocument::reloadInternal()
{
jassert (codeDoc != nullptr);
modDetector.updateHash();
ScopedPointer <InputStream> in (modDetector.getFile().createInputStream());
if (in != nullptr)
codeDoc->loadFromStream (*in);
codeDoc->replaceAllContent (modDetector.getFile().loadFileAsString());
codeDoc->setSavePoint();
}
bool SourceCodeDocument::save()


+ 11
- 2
modules/juce_gui_extra/code_editor/juce_CodeDocument.cpp View File

@@ -569,8 +569,17 @@ void CodeDocument::insertText (int insertIndex, const String& text)
void CodeDocument::replaceAllContent (const String& newContent)
{
remove (0, getNumCharacters(), true);
insert (newContent, 0, true);
TextDiff diff (getAllContent(), newContent);
for (int i = 0; i < diff.changes.size(); ++i)
{
const TextDiff::Change& c = diff.changes.getReference(i);
if (c.isDeletion())
remove (c.start, c.start + c.length, true);
else
insert (c.insertedText, c.start, true);
}
}
bool CodeDocument::loadFromStream (InputStream& stream)


Loading…
Cancel
Save