summaryrefslogtreecommitdiff
path: root/src/buffer.cc
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2017-05-22 17:04:01 +0100
committerMaxime Coste <mawww@kakoune.org>2017-05-22 17:04:01 +0100
commit7ee3039a79c69325a467118b02b947c9a57b668d (patch)
tree2b46ec7c17c5cd9e8e1c97f04e361cf84912ec67 /src/buffer.cc
parent28bcb45b925427da1fb3204eac332fc43d74365e (diff)
Do not avoid eol in insert mode vertical movement
Diffstat (limited to 'src/buffer.cc')
-rw-r--r--src/buffer.cc6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/buffer.cc b/src/buffer.cc
index e5527693..1b5e1b1c 100644
--- a/src/buffer.cc
+++ b/src/buffer.cc
@@ -177,19 +177,19 @@ BufferCoord Buffer::clamp(BufferCoord coord) const
return coord;
}
-BufferCoord Buffer::offset_coord(BufferCoord coord, CharCount offset, ColumnCount)
+BufferCoord Buffer::offset_coord(BufferCoord coord, CharCount offset, ColumnCount, bool)
{
StringView line = m_lines[coord.line];
auto target = utf8::advance(&line[coord.column], offset < 0 ? line.begin() : line.end()-1, offset);
return {coord.line, (int)(target - line.begin())};
}
-BufferCoordAndTarget Buffer::offset_coord(BufferCoordAndTarget coord, LineCount offset, ColumnCount tabstop)
+BufferCoordAndTarget Buffer::offset_coord(BufferCoordAndTarget coord, LineCount offset, ColumnCount tabstop, bool avoid_eol)
{
const auto column = coord.target == -1 ? get_column(*this, tabstop, coord) : coord.target;
const auto line = Kakoune::clamp(coord.line + offset, 0_line, line_count()-1);
const auto max_column = get_column(*this, tabstop, {line, m_lines[line].length()-1});
- const auto final_column = std::max(0_col, std::min(column, max_column - 1));
+ const auto final_column = std::max(0_col, std::min(column, max_column - (avoid_eol ? 1 : 0)));
return {line, get_byte_to_column(*this, tabstop, {line, final_column}), column};
}