summaryrefslogtreecommitdiff
path: root/src/buffer.hh
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2016-09-22 20:36:26 +0100
committerMaxime Coste <frrrwww@gmail.com>2016-10-01 13:45:00 +0100
commit35559b65ddf107fea2a4dda92fcbd664986976d9 (patch)
tree58840b2523abb01459afb09ad2480df07b9ddd2d /src/buffer.hh
parent6e17ecfb6eadc157cc5229f3c36f2962cfe1fcdf (diff)
Support codepoints of variable width
Add a ColumnCount type and use it in place of CharCount whenever more appropriate, take column size of codepoints into account for vertical movements and docstring wrapping. Fixes #811
Diffstat (limited to 'src/buffer.hh')
-rw-r--r--src/buffer.hh54
1 files changed, 27 insertions, 27 deletions
diff --git a/src/buffer.hh b/src/buffer.hh
index 447089dd..d95d41bc 100644
--- a/src/buffer.hh
+++ b/src/buffer.hh
@@ -58,7 +58,7 @@ public:
using iterator_category = std::random_access_iterator_tag;
BufferIterator() : m_buffer(nullptr) {}
- BufferIterator(const Buffer& buffer, ByteCoord coord);
+ BufferIterator(const Buffer& buffer, BufferCoord coord);
bool operator== (const BufferIterator& iterator) const;
bool operator!= (const BufferIterator& iterator) const;
@@ -83,12 +83,12 @@ public:
BufferIterator operator++ (int);
BufferIterator operator-- (int);
- const ByteCoord& coord() const { return m_coord; }
+ const BufferCoord& coord() const { return m_coord; }
private:
SafePtr<const Buffer> m_buffer;
StringView m_line;
- ByteCoord m_coord;
+ BufferCoord m_coord;
LineCount m_last_line;
};
@@ -125,9 +125,9 @@ public:
bool set_name(String name);
void update_display_name();
- ByteCoord insert(ByteCoord pos, StringView content);
- ByteCoord erase(ByteCoord begin, ByteCoord end);
- ByteCoord replace(ByteCoord begin, ByteCoord end, StringView content);
+ BufferCoord insert(BufferCoord pos, StringView content);
+ BufferCoord erase(BufferCoord begin, BufferCoord end);
+ BufferCoord replace(BufferCoord begin, BufferCoord end, StringView content);
size_t timestamp() const;
timespec fs_timestamp() const;
@@ -139,24 +139,24 @@ public:
bool move_to(size_t history_id) noexcept;
size_t current_history_id() const noexcept;
- String string(ByteCoord begin, ByteCoord end) const;
+ String string(BufferCoord begin, BufferCoord end) const;
- const char& byte_at(ByteCoord c) const;
- ByteCount distance(ByteCoord begin, ByteCoord end) const;
- ByteCoord advance(ByteCoord coord, ByteCount count) const;
- ByteCoord next(ByteCoord coord) const;
- ByteCoord prev(ByteCoord coord) const;
+ const char& byte_at(BufferCoord c) const;
+ ByteCount distance(BufferCoord begin, BufferCoord end) const;
+ BufferCoord advance(BufferCoord coord, ByteCount count) const;
+ BufferCoord next(BufferCoord coord) const;
+ BufferCoord prev(BufferCoord coord) const;
- ByteCoord char_next(ByteCoord coord) const;
- ByteCoord char_prev(ByteCoord coord) const;
+ BufferCoord char_next(BufferCoord coord) const;
+ BufferCoord char_prev(BufferCoord coord) const;
- ByteCoord back_coord() const;
- ByteCoord end_coord() const;
+ BufferCoord back_coord() const;
+ BufferCoord end_coord() const;
- bool is_valid(ByteCoord c) const;
- bool is_end(ByteCoord c) const;
+ bool is_valid(BufferCoord c) const;
+ bool is_end(BufferCoord c) const;
- ByteCoord last_modification_coord() const;
+ BufferCoord last_modification_coord() const;
BufferIterator begin() const;
BufferIterator end() const;
@@ -169,13 +169,13 @@ public:
{ return m_lines.get_storage(line); }
// returns an iterator at given coordinates. clamp line_and_column
- BufferIterator iterator_at(ByteCoord coord) const;
+ BufferIterator iterator_at(BufferCoord coord) const;
// returns nearest valid coordinates from given ones
- ByteCoord clamp(ByteCoord coord) const;
+ BufferCoord clamp(BufferCoord coord) const;
- ByteCoord offset_coord(ByteCoord coord, CharCount offset);
- ByteCoordAndTarget offset_coord(ByteCoordAndTarget coord, LineCount offset);
+ BufferCoord offset_coord(BufferCoord coord, CharCount offset);
+ BufferCoordAndTarget offset_coord(BufferCoordAndTarget coord, LineCount offset);
const String& name() const { return m_name; }
const String& display_name() const { return m_display_name; }
@@ -200,8 +200,8 @@ public:
enum Type : char { Insert, Erase };
Type type;
bool at_end;
- ByteCoord begin;
- ByteCoord end;
+ BufferCoord begin;
+ BufferCoord end;
};
ConstArrayView<Change> changes_since(size_t timestamp) const;
@@ -214,8 +214,8 @@ private:
void on_option_changed(const Option& option) override;
- ByteCoord do_insert(ByteCoord pos, StringView content);
- ByteCoord do_erase(ByteCoord begin, ByteCoord end);
+ BufferCoord do_insert(BufferCoord pos, StringView content);
+ BufferCoord do_erase(BufferCoord begin, BufferCoord end);
struct Modification;