From 046b280114d11ff24b179dbe4df44127e80d39b5 Mon Sep 17 00:00:00 2001 From: Neil Date: Sat, 17 Jul 2021 10:00:55 +1000 Subject: Extract word edge detection to prepare for fixing bug. This change does not affect behaviour. --- src/Document.cxx | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/Document.cxx b/src/Document.cxx index 96bee868e..3a3627fdc 100644 --- a/src/Document.cxx +++ b/src/Document.cxx @@ -1907,6 +1907,15 @@ Sci::Position Document::NextWordEnd(Sci::Position pos, int delta) const { return pos; } +namespace { + +constexpr bool IsWordEdge(CharacterClass cc, CharacterClass ccNext) noexcept { + return (cc != ccNext) && + (cc == CharacterClass::word || cc == CharacterClass::punctuation); +} + +} + /** * Check that the character at the given position is a word or punctuation character and that * the previous character is of a different character class. @@ -1916,11 +1925,8 @@ bool Document::IsWordStartAt(Sci::Position pos) const { return false; if (pos > 0) { const CharacterExtracted cePos = CharacterAfter(pos); - const CharacterClass ccPos = WordCharacterClass(cePos.character); const CharacterExtracted cePrev = CharacterBefore(pos); - const CharacterClass ccPrev = WordCharacterClass(cePrev.character); - return (ccPos == CharacterClass::word || ccPos == CharacterClass::punctuation) && - (ccPos != ccPrev); + return IsWordEdge(WordCharacterClass(cePos.character), WordCharacterClass(cePrev.character)); } return true; } @@ -1934,11 +1940,8 @@ bool Document::IsWordEndAt(Sci::Position pos) const { return false; if (pos < LengthNoExcept()) { const CharacterExtracted cePos = CharacterAfter(pos); - const CharacterClass ccPos = WordCharacterClass(cePos.character); const CharacterExtracted cePrev = CharacterBefore(pos); - const CharacterClass ccPrev = WordCharacterClass(cePrev.character); - return (ccPrev == CharacterClass::word || ccPrev == CharacterClass::punctuation) && - (ccPrev != ccPos); + return IsWordEdge(WordCharacterClass(cePrev.character), WordCharacterClass(cePos.character)); } return true; } -- cgit v1.2.3