From 331e10266348556641bac81338325368f87ef3d2 Mon Sep 17 00:00:00 2001 From: jules Date: Fri, 17 Aug 2012 20:24:19 +0100 Subject: [PATCH] CodeDocument new method + internal tweaks. --- .../code_editor/juce_CodeDocument.cpp | 13 ++++++++++--- .../juce_gui_extra/code_editor/juce_CodeDocument.h | 5 +++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/modules/juce_gui_extra/code_editor/juce_CodeDocument.cpp b/modules/juce_gui_extra/code_editor/juce_CodeDocument.cpp index 40b96aa091..8ca410f780 100644 --- a/modules/juce_gui_extra/code_editor/juce_CodeDocument.cpp +++ b/modules/juce_gui_extra/code_editor/juce_CodeDocument.cpp @@ -552,7 +552,7 @@ void CodeDocument::deleteSection (const Position& startPosition, const Position& deleteSection (startPosition.getPosition(), endPosition.getPosition()); } -void CodeDocument::deleteSection (int start, int end) +void CodeDocument::deleteSection (const int start, const int end) { remove (start, end, true); } @@ -562,11 +562,18 @@ void CodeDocument::insertText (const Position& position, const String& text) insertText (position.getPosition(), text); } -void CodeDocument::insertText (int insertIndex, const String& text) +void CodeDocument::insertText (const int insertIndex, const String& text) { insert (text, insertIndex, true); } +void CodeDocument::replaceSection (const int start, const int end, const String& newText) +{ + insertText (start, newText); + const int newTextLen = newText.length(); + deleteSection (start + newTextLen, end + newTextLen); +} + void CodeDocument::replaceAllContent (const String& newContent) { TextDiff diff (getAllContent(), newContent); @@ -864,7 +871,7 @@ void CodeDocument::insert (const String& text, const int insertPos, const bool u { CodeDocument::Position& p = *positionsToMaintain.getUnchecked(i); - if (p.getPosition() >= insertPos) + if (p.getPosition() > insertPos) p.setPosition (p.getPosition() + newTextLength); } diff --git a/modules/juce_gui_extra/code_editor/juce_CodeDocument.h b/modules/juce_gui_extra/code_editor/juce_CodeDocument.h index c723c4dad4..a1e73e4542 100644 --- a/modules/juce_gui_extra/code_editor/juce_CodeDocument.h +++ b/modules/juce_gui_extra/code_editor/juce_CodeDocument.h @@ -222,6 +222,11 @@ public: */ void insertText (int insertIndex, const String& text); + /** Replaces a section of the text with a new string. + This operation is undoable. + */ + void replaceSection (int startIndex, int endIndex, const String& newText); + /** Clears the document and replaces it with some new text. This operation is undoable - if you're trying to completely reset the document, you