From 85dbf75b11de81bbddd4b48b4b8c5111cde8df48 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Sat, 7 Jan 2017 15:03:51 -0500 Subject: [PATCH] add Buffer::add_cursor() --- src/core/Buffer.h | 7 +++++++ src/gui/BufferPane.cc | 2 +- test/src/test_Buffer.cc | 4 ++-- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/core/Buffer.h b/src/core/Buffer.h index 6b0daa9..a242140 100644 --- a/src/core/Buffer.h +++ b/src/core/Buffer.h @@ -105,6 +105,12 @@ public: m_iterators.push_back(iterator); return iterator; } + std::shared_ptr add_cursor() + { + auto iterator = add_iterator(); + m_cursors.push_back(iterator); + return iterator; + } auto get_string() { return m_gap_buffer->get_string(); } size_t size() const { return m_gap_buffer->size(); } uint8_t * address(size_t offset) const { return m_gap_buffer->address(offset); } @@ -130,6 +136,7 @@ protected: uint8_t m_tabstop; bool m_insert_mode; std::list> m_iterators; + std::list> m_cursors; std::shared_ptr m_eof_iterator; std::string m_filename; std::shared_ptr m_current_change_operation; diff --git a/src/gui/BufferPane.cc b/src/gui/BufferPane.cc index 8c2d022..a2daf48 100644 --- a/src/gui/BufferPane.cc +++ b/src/gui/BufferPane.cc @@ -5,7 +5,7 @@ BufferPane::BufferPane(Window * window, std::shared_ptr buffer) { m_cursor_screen_row = 0; m_scroll_offset = 5; - m_iterator = buffer->add_iterator(); + m_iterator = buffer->add_cursor(); m_target_column = 0; m_cursor_virtual_column = 0; } diff --git a/test/src/test_Buffer.cc b/test/src/test_Buffer.cc index 75d0103..6dc0f1f 100644 --- a/test/src/test_Buffer.cc +++ b/test/src/test_Buffer.cc @@ -34,7 +34,7 @@ TEST(BufferTest, writes_an_empty_file_for_an_empty_buffer) TEST(BufferTest, allows_navigating_using_iterators) { Buffer b("test/files/line_endings/lf_format.txt"); - auto iterator = b.add_iterator(); + auto iterator = b.add_cursor(); EXPECT_EQ(0u, iterator->line()); ASSERT_EQ((uint32_t)'H', **iterator); @@ -71,7 +71,7 @@ TEST(BufferTest, allows_navigating_using_iterators) TEST(BufferTest, allows_navigating_using_iterators2) { Buffer b("test/files/blank_lines.txt"); - auto iterator = b.add_iterator(); + auto iterator = b.add_cursor(); EXPECT_EQ(0u, iterator->line()); EXPECT_EQ((uint32_t)'a', **iterator);