add Buffer::erase_code_point()

This commit is contained in:
josh committed 2016-12-26 14:01:24 -05:00
1 parent bbd38c76a2
commit 64a09fca0f
2 files changed
+19

No files matched your search

+18
View File
@@ -180,3 +180,21 @@ void Buffer::insert_code_point(uint32_t code_point)
m_insert_position += bytes;
}
}
void Buffer::erase_code_point(const Buffer::Iterator & position)
{
if (position.valid())
{
uint8_t bytes = 0u;
uint32_t code_point = Encoding::decode(m_encoding, position.address(), &bytes);
m_gap_buffer->erase(position.offset(), bytes);
ssize_t lines = (code_point == '\n') ? -1 : 0;
for (auto iterator : m_iterators)
{
if (*iterator > position)
{
iterator->warp(-(ssize_t)bytes, lines);
}
}
}
}
+1
View File
@@ -106,6 +106,7 @@ public:
void exit_insert_mode();
bool insert_mode() const { return m_insert_mode; }
void insert_code_point(uint32_t code_point);
void erase_code_point(const Buffer::Iterator & position);
protected:
bool m_eol_at_eof;