diff --git a/src/buffer.hh b/src/buffer.hh index ce336e96..71c5cd51 100644 --- a/src/buffer.hh +++ b/src/buffer.hh @@ -75,6 +75,8 @@ public: const char& operator[](size_t n) const noexcept; size_t operator- (const BufferIterator& iterator) const; + explicit operator bool() const { return static_cast(m_buffer); } + BufferIterator operator+ (ByteCount size) const; BufferIterator operator- (ByteCount size) const; diff --git a/src/buffer.inl.hh b/src/buffer.inl.hh index 4f264c0d..4f6866bf 100644 --- a/src/buffer.inl.hh +++ b/src/buffer.inl.hh @@ -104,7 +104,8 @@ inline BufferIterator::BufferIterator(const Buffer& buffer, BufferCoord coord) n inline bool BufferIterator::operator==(const BufferIterator& iterator) const noexcept { - return m_buffer == iterator.m_buffer and m_coord == iterator.m_coord; + kak_assert(m_buffer == iterator.m_buffer); + return m_coord == iterator.m_coord; } inline std::strong_ordering BufferIterator::operator<=>(const BufferIterator& iterator) const noexcept diff --git a/src/regex.hh b/src/regex.hh index 5b0ab7fc..07a58959 100644 --- a/src/regex.hh +++ b/src/regex.hh @@ -39,7 +39,7 @@ struct MatchResults { SubMatch() = default; SubMatch(Iterator begin, Iterator end) - : std::pair{begin, end}, matched{begin != Iterator{}} + : std::pair{begin, end}, matched{static_cast(begin)} {} bool matched = false; diff --git a/src/selectors.cc b/src/selectors.cc index b4e57e36..3d9b453d 100644 --- a/src/selectors.cc +++ b/src/selectors.cc @@ -483,7 +483,7 @@ select_sentence(const Context& context, const Selection& selection, BufferIterator first = buffer.iterator_at(selection.cursor()); BufferIterator last; - for (++count; count > 0; --count) + for (int i = 0; i <= count; ++i) { if (not (flags & ObjectFlags::ToEnd) and first != buffer.begin()) { @@ -494,7 +494,7 @@ select_sentence(const Context& context, const Selection& selection, first = prev_non_blank; } - if (last == BufferIterator{}) + if (i == 0) last = first; if (flags & ObjectFlags::ToBegin) @@ -552,7 +552,7 @@ select_paragraph(const Context& context, const Selection& selection, BufferIterator first = buffer.iterator_at(selection.cursor()); BufferIterator last; - for (++count; count > 0; --count) + for (int i = 0; i <= count; ++i) { if (not (flags & ObjectFlags::ToEnd) and first.coord() > BufferCoord{0,1} and is_eol(*(first-1)) and first-1 != buffer.begin() and is_eol(*(first-2))) @@ -561,7 +561,7 @@ select_paragraph(const Context& context, const Selection& selection, first != buffer.begin() and (first+1) != buffer.end() and is_eol(*(first-1)) and is_eol(*first)) ++first; - if (last == BufferIterator{}) + if (i == 0) last = first; if ((flags & ObjectFlags::ToBegin) and first != buffer.begin())