insert a \n to follow new content when inserting into an empty buffer
This commit is contained in:
parent
723b96f624
commit
38d615ecc4
@ -162,22 +162,29 @@ void Buffer::exit_insert_mode()
|
||||
m_insert_mode = false;
|
||||
}
|
||||
|
||||
void Buffer::insert_code_point(uint32_t code_point)
|
||||
void Buffer::insert_code_point(uint32_t code_point, bool adjust_iterators)
|
||||
{
|
||||
if (m_insert_mode)
|
||||
{
|
||||
if ((code_point != '\n') && (size() == 0u))
|
||||
{
|
||||
insert_code_point('\n', false);
|
||||
}
|
||||
uint8_t encoded[Encoding::MAX_CODE_POINT_SIZE];
|
||||
uint8_t bytes = Encoding::encode(code_point, m_encoding, encoded);
|
||||
m_gap_buffer->insert(m_insert_position, encoded, bytes);
|
||||
ssize_t lines = (code_point == '\n') ? 1 : 0;
|
||||
for (auto iterator : m_iterators)
|
||||
if (adjust_iterators)
|
||||
{
|
||||
if (iterator->offset() >= m_insert_position)
|
||||
for (auto iterator : m_iterators)
|
||||
{
|
||||
iterator->warp(bytes, lines);
|
||||
if (iterator->offset() >= m_insert_position)
|
||||
{
|
||||
iterator->warp(bytes, lines);
|
||||
}
|
||||
}
|
||||
m_insert_position += bytes;
|
||||
}
|
||||
m_insert_position += bytes;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -105,7 +105,7 @@ public:
|
||||
void enter_insert_mode(const Buffer::Iterator & position);
|
||||
void exit_insert_mode();
|
||||
bool insert_mode() const { return m_insert_mode; }
|
||||
void insert_code_point(uint32_t code_point);
|
||||
void insert_code_point(uint32_t code_point, bool adjust_iterators = true);
|
||||
void erase_code_point(const Buffer::Iterator & position);
|
||||
|
||||
protected:
|
||||
|
Loading…
x
Reference in New Issue
Block a user