From 1b6038a3cd627eecb5dd4d8eb7727d56666d5317 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Wed, 7 Dec 2016 23:09:06 -0500 Subject: [PATCH] remove tabstop from GapBuffer --- src/core/Buffer.cc | 2 +- src/core/Buffer.h | 2 +- src/core/Cursor.cc | 5 ++--- src/core/Cursor.h | 4 +++- src/core/GapBuffer.cc | 2 -- src/core/GapBuffer.h | 2 -- 6 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/core/Buffer.cc b/src/core/Buffer.cc index 5010aea..ff50261 100644 --- a/src/core/Buffer.cc +++ b/src/core/Buffer.cc @@ -104,7 +104,7 @@ bool Buffer::write_to_file(const char * filename) m_gap_buffer->compact(); - Cursor start_of_line(&*m_gap_buffer, m_encoding); + Cursor start_of_line(&*m_gap_buffer, m_encoding, 4u); size_t bytes_written = 0u; while (start_of_line.valid()) diff --git a/src/core/Buffer.h b/src/core/Buffer.h index 27ca7a6..47b8de7 100644 --- a/src/core/Buffer.h +++ b/src/core/Buffer.h @@ -18,7 +18,7 @@ public: std::shared_ptr add_cursor() { - return std::make_shared(&*m_gap_buffer, m_encoding); + return std::make_shared(&*m_gap_buffer, m_encoding, 4u); } auto get_string() { return m_gap_buffer->get_string(); } diff --git a/src/core/Cursor.cc b/src/core/Cursor.cc index a99f1e6..3807d5c 100644 --- a/src/core/Cursor.cc +++ b/src/core/Cursor.cc @@ -154,8 +154,7 @@ bool Cursor::go_right(bool allow_eol) uint32_t chr = *m_iterator; if (chr == '\t') { - uint8_t tabstop = m_iterator.gap_buffer()->tabstop; - m_column += tabstop - (m_column + 1u) % tabstop; + m_column += m_tabstop - (m_column + 1u) % m_tabstop; } else { @@ -203,7 +202,7 @@ void Cursor::init_column() { if (*m_iterator == '\t') { - m_column = m_iterator.gap_buffer()->tabstop - 1u; + m_column = m_tabstop - 1u; } else { diff --git a/src/core/Cursor.h b/src/core/Cursor.h index d5aae0f..f05934f 100644 --- a/src/core/Cursor.h +++ b/src/core/Cursor.h @@ -55,10 +55,11 @@ protected: class Cursor { public: - Cursor(GapBuffer * gap_buffer, Encoding::Type encoding) + Cursor(GapBuffer * gap_buffer, Encoding::Type encoding, uint8_t tabstop) : m_iterator(gap_buffer, encoding) { m_line = 0u; + m_tabstop = tabstop; init_column(); } bool is_start_of_line(); @@ -86,6 +87,7 @@ protected: Iterator m_iterator; size_t m_line; size_t m_column; + uint8_t m_tabstop; void init_column(); void forward_to_column(size_t target_column); diff --git a/src/core/GapBuffer.cc b/src/core/GapBuffer.cc index 9cfbcfc..dd798b5 100644 --- a/src/core/GapBuffer.cc +++ b/src/core/GapBuffer.cc @@ -8,7 +8,6 @@ GapBuffer::GapBuffer() m_buffer_size = System::page_size; m_size = 0u; m_gap_position = 0u; - tabstop = 4u; } GapBuffer::GapBuffer(uint8_t * buffer, size_t buffer_size, size_t size) @@ -17,7 +16,6 @@ GapBuffer::GapBuffer(uint8_t * buffer, size_t buffer_size, size_t size) m_buffer_size = buffer_size; m_size = size; m_gap_position = size; - tabstop = 4u; } GapBuffer::~GapBuffer() diff --git a/src/core/GapBuffer.h b/src/core/GapBuffer.h index 8fd6a03..54caf6d 100644 --- a/src/core/GapBuffer.h +++ b/src/core/GapBuffer.h @@ -10,8 +10,6 @@ class GapBuffer { public: - uint8_t tabstop; - GapBuffer(); GapBuffer(uint8_t * buffer, size_t buffer_size, size_t size); ~GapBuffer();