Browse Source

TextEditor: Add utility to keep a range of text within a line

Kyle Lanmon 2 years ago
parent
commit
9aa00a6d70

+ 13 - 0
Userland/Libraries/LibGUI/TextDocument.cpp

@@ -246,6 +246,19 @@ void TextDocumentLine::remove_range(TextDocument& document, size_t start, size_t
     document.update_views({});
 }
 
+void TextDocumentLine::keep_range(TextDocument& document, size_t start_index, size_t length)
+{
+    VERIFY(start_index + length < m_text.size());
+
+    Vector<u32> new_data;
+    new_data.ensure_capacity(m_text.size());
+    for (size_t i = start_index; i <= (start_index + length); i++)
+        new_data.append(m_text[i]);
+
+    m_text = move(new_data);
+    document.update_views({});
+}
+
 void TextDocumentLine::truncate(TextDocument& document, size_t length)
 {
     m_text.resize(length);

+ 1 - 0
Userland/Libraries/LibGUI/TextDocument.h

@@ -179,6 +179,7 @@ public:
     void truncate(TextDocument&, size_t length);
     void clear(TextDocument&);
     void remove_range(TextDocument&, size_t start, size_t length);
+    void keep_range(TextDocument&, size_t start_index, size_t end_index);
 
     size_t first_non_whitespace_column() const;
     Optional<size_t> last_non_whitespace_column() const;