diff options
| author | Maxime Coste <mawww@kakoune.org> | 2017-04-27 20:23:23 +0100 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2017-05-07 16:26:14 +0100 |
| commit | 5ee21ec932d1da0f1fbae8ee1f13b967b8014307 (patch) | |
| tree | 85caa9c6bcec24a1cec917910fe72a36a560d349 /src/buffer.cc | |
| parent | 57c2b32d2082d67f1d2c1a168cf88a0677c73e18 (diff) | |
Respect tabstop in Buffer::offset_coord
Diffstat (limited to 'src/buffer.cc')
| -rw-r--r-- | src/buffer.cc | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/buffer.cc b/src/buffer.cc index 06805e73..6d9321d6 100644 --- a/src/buffer.cc +++ b/src/buffer.cc @@ -2,6 +2,7 @@ #include "assert.hh" #include "buffer_manager.hh" +#include "buffer_utils.hh" #include "client.hh" #include "containers.hh" #include "context.hh" @@ -176,21 +177,21 @@ BufferCoord Buffer::clamp(BufferCoord coord) const return coord; } -BufferCoord Buffer::offset_coord(BufferCoord coord, CharCount offset) +BufferCoord Buffer::offset_coord(BufferCoord coord, CharCount offset, ColumnCount) { 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) +BufferCoordAndTarget Buffer::offset_coord(BufferCoordAndTarget coord, LineCount offset, ColumnCount tabstop) { - auto column = coord.target == -1 ? m_lines[coord.line].column_count_to(coord.column) : coord.target; + auto column = coord.target == -1 ? get_column(*this, tabstop, coord) : coord.target; auto line = Kakoune::clamp(coord.line + offset, 0_line, line_count()-1); StringView content = m_lines[line]; auto final_column = std::max(0_col, std::min(column, content.column_length() - 2)); - return {line, content.byte_count_to(final_column), column}; + return {line, get_byte_to_column(*this, tabstop, {line, final_column}), column}; } String Buffer::string(BufferCoord begin, BufferCoord end) const |
