Buffer: allow insert_code_point() to be called outside of insert mode
This commit is contained in:
parent
21320d9ea7
commit
348d11e992
@ -166,26 +166,23 @@ void Buffer::exit_insert_mode()
|
||||
|
||||
void Buffer::insert_code_point(const Buffer::Iterator & position, uint32_t code_point, bool adjust_iterators)
|
||||
{
|
||||
if (m_insert_mode)
|
||||
Buffer::Iterator local_position = position;
|
||||
if ((code_point != '\n') && (size() == 0u))
|
||||
{
|
||||
Buffer::Iterator local_position = position;
|
||||
if ((code_point != '\n') && (size() == 0u))
|
||||
insert_code_point(position, '\n', false);
|
||||
}
|
||||
uint8_t encoded[Encoding::MAX_CODE_POINT_SIZE];
|
||||
uint8_t bytes = Encoding::encode(code_point, m_encoding, encoded);
|
||||
m_gap_buffer->insert(local_position.offset(), encoded, bytes);
|
||||
record_change(encoded, bytes, local_position.offset(), true);
|
||||
ssize_t lines = (code_point == '\n') ? 1 : 0;
|
||||
if (adjust_iterators)
|
||||
{
|
||||
for (auto iterator : m_iterators)
|
||||
{
|
||||
insert_code_point(position, '\n', false);
|
||||
}
|
||||
uint8_t encoded[Encoding::MAX_CODE_POINT_SIZE];
|
||||
uint8_t bytes = Encoding::encode(code_point, m_encoding, encoded);
|
||||
m_gap_buffer->insert(local_position.offset(), encoded, bytes);
|
||||
record_change(encoded, bytes, local_position.offset(), true);
|
||||
ssize_t lines = (code_point == '\n') ? 1 : 0;
|
||||
if (adjust_iterators)
|
||||
{
|
||||
for (auto iterator : m_iterators)
|
||||
if (*iterator >= local_position)
|
||||
{
|
||||
if (*iterator >= local_position)
|
||||
{
|
||||
iterator->warp(bytes, lines);
|
||||
}
|
||||
iterator->warp(bytes, lines);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user