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); m_iterators.push_back(iterator);
return 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(); } auto get_string() { return m_gap_buffer->get_string(); }
size_t size() const { return m_gap_buffer->size(); } size_t size() const { return m_gap_buffer->size(); }
uint8_t * address(size_t offset) const { return m_gap_buffer->address(offset); } uint8_t * address(size_t offset) const { return m_gap_buffer->address(offset); }
@ -130,6 +136,7 @@ protected:
uint8_t m_tabstop; uint8_t m_tabstop;
bool m_insert_mode; bool m_insert_mode;
std::list<std::shared_ptr<Iterator>> m_iterators; std::list<std::shared_ptr<Iterator>> m_iterators;
std::list<std::shared_ptr<Iterator>> m_cursors;
std::shared_ptr<Iterator> m_eof_iterator; std::shared_ptr<Iterator> m_eof_iterator;
std::string m_filename; std::string m_filename;
std::shared_ptr<ChangeOperation> m_current_change_operation; 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_cursor_screen_row = 0;
m_scroll_offset = 5; m_scroll_offset = 5;
m_iterator = buffer->add_iterator(); m_iterator = buffer->add_cursor();
m_target_column = 0; m_target_column = 0;
m_cursor_virtual_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) TEST(BufferTest, allows_navigating_using_iterators)
{ {
Buffer b("test/files/line_endings/lf_format.txt"); Buffer b("test/files/line_endings/lf_format.txt");
auto iterator = b.add_iterator(); auto iterator = b.add_cursor();
EXPECT_EQ(0u, iterator->line()); EXPECT_EQ(0u, iterator->line());
ASSERT_EQ((uint32_t)'H', **iterator); ASSERT_EQ((uint32_t)'H', **iterator);
@ -71,7 +71,7 @@ TEST(BufferTest, allows_navigating_using_iterators)
TEST(BufferTest, allows_navigating_using_iterators2) TEST(BufferTest, allows_navigating_using_iterators2)
{ {
Buffer b("test/files/blank_lines.txt"); Buffer b("test/files/blank_lines.txt");
auto iterator = b.add_iterator(); auto iterator = b.add_cursor();
EXPECT_EQ(0u, iterator->line()); EXPECT_EQ(0u, iterator->line());
EXPECT_EQ((uint32_t)'a', **iterator); EXPECT_EQ((uint32_t)'a', **iterator);