diff options
| author | Neil <nyamatongwe@gmail.com> | 2021-07-17 10:00:55 +1000 | 
|---|---|---|
| committer | Neil <nyamatongwe@gmail.com> | 2021-07-17 10:00:55 +1000 | 
| commit | 046b280114d11ff24b179dbe4df44127e80d39b5 (patch) | |
| tree | deff08977ef7aec630c1a16bd894e11c9c109aea /src | |
| parent | 39be73514c317e7d672e0a09862571e64f8979da (diff) | |
| download | scintilla-mirror-046b280114d11ff24b179dbe4df44127e80d39b5.tar.gz | |
Extract word edge detection to prepare for fixing bug.
This change does not affect behaviour.
Diffstat (limited to 'src')
| -rw-r--r-- | src/Document.cxx | 19 | 
1 files changed, 11 insertions, 8 deletions
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;  }  | 
