diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2016-03-15 23:06:49 +0000 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2016-03-15 23:15:57 +0000 |
| commit | d2dfb9ecb18cf36dfafc89571eb94a3152fe1752 (patch) | |
| tree | 4a29c13efb48ebd90006c4b76f05dfce9c9f0a30 /src/buffer.cc | |
| parent | 5fe2872904b78adf5cb252e8daac6d6eb901e966 (diff) | |
Slight cleanup in Buffer::do_insert
Diffstat (limited to 'src/buffer.cc')
| -rw-r--r-- | src/buffer.cc | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/src/buffer.cc b/src/buffer.cc index c0e25f0a..f56d5d2e 100644 --- a/src/buffer.cc +++ b/src/buffer.cc @@ -344,10 +344,10 @@ ByteCoord Buffer::do_insert(ByteCoord pos, StringView content) ByteCoord begin; ByteCoord end; - bool at_end = false; + const bool at_end = is_end(pos); // if we inserted at the end of the buffer, we have created a new // line without inserting a '\n' - if (is_end(pos)) + if (at_end) { ByteCount start = 0; for (ByteCount i = 0; i < content.length(); ++i) @@ -363,7 +363,6 @@ ByteCoord Buffer::do_insert(ByteCoord pos, StringView content) begin = pos.column == 0 ? pos : ByteCoord{ pos.line + 1, 0 }; end = ByteCoord{ line_count(), 0 }; - at_end = true; } else { @@ -377,20 +376,15 @@ ByteCoord Buffer::do_insert(ByteCoord pos, StringView content) { if (content[i] == '\n') { - StringView line_content = content.substr(start, i + 1 - start); - if (start == 0) - new_lines.emplace_back(StringData::create(prefix + line_content)); - else - new_lines.push_back(StringData::create(line_content)); + StringView line = content.substr(start, i + 1 - start); + new_lines.push_back(StringData::create(start == 0 ? prefix + line : line)); start = i + 1; } } if (start == 0) - new_lines.emplace_back(StringData::create(prefix + content + suffix)); + new_lines.push_back(StringData::create(prefix + content + suffix)); else if (start != content.length() or not suffix.empty()) - new_lines.emplace_back(StringData::create(content.substr(start) + suffix)); - - LineCount last_line = pos.line + new_lines.size() - 1; + new_lines.push_back(StringData::create(content.substr(start) + suffix)); auto line_it = m_lines.begin() + (int)pos.line; *line_it = std::move(*new_lines.begin()); @@ -399,6 +393,7 @@ ByteCoord Buffer::do_insert(ByteCoord pos, StringView content) std::make_move_iterator(new_lines.end())); begin = pos; + const LineCount last_line = pos.line + new_lines.size() - 1; end = ByteCoord{ last_line, m_lines[last_line].length() - suffix.length() }; } |
