add Buffer::add_cursor()

This commit is contained in:
Josh Holtrop 2017-01-07 15:03:51 -05:00
parent 924d005020
commit 85dbf75b11
3 changed files with 10 additions and 3 deletions

View File

@ -105,6 +105,12 @@ public:
m_iterators.push_back(iterator);
return iterator;
}
std::shared_ptr<Iterator> 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<std::shared_ptr<Iterator>> m_iterators;
std::list<std::shared_ptr<Iterator>> m_cursors;
std::shared_ptr<Iterator> m_eof_iterator;
std::string m_filename;
std::shared_ptr<ChangeOperation> m_current_change_operation;

View File

@ -5,7 +5,7 @@ BufferPane::BufferPane(Window * window, std::shared_ptr<Buffer> 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;
}

View File

@ -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);