diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Document.cxx | 10 | ||||
| -rw-r--r-- | src/Document.h | 3 | ||||
| -rw-r--r-- | src/Editor.cxx | 7 | 
3 files changed, 19 insertions, 1 deletions
| diff --git a/src/Document.cxx b/src/Document.cxx index 4df512b1d..72dae5f5b 100644 --- a/src/Document.cxx +++ b/src/Document.cxx @@ -1707,7 +1707,7 @@ CharClassify::cc Document::WordCharacterClass(unsigned int ch) const {  	if (dbcsCodePage && (!UTF8IsAscii(ch))) {  		if (SC_CP_UTF8 == dbcsCodePage) {  			// Use hard coded Unicode class -			const CharacterCategory cc = CategoriseCharacter(ch); +			const CharacterCategory cc = charMap.CategoryFor(ch);  			switch (cc) {  				// Separator, Line/Paragraph @@ -2166,6 +2166,14 @@ int Document::GetCharsOfClass(CharClassify::cc characterClass, unsigned char *bu      return charClass.GetCharsOfClass(characterClass, buffer);  } +void Document::SetCharacterCategoryOptimization(int countCharacters) { +	charMap.Optimize(countCharacters); +} + +int Document::CharacterCategoryOptimization() const noexcept { +	return charMap.Size(); +} +  void SCI_METHOD Document::StartStyling(Sci_Position position) {  	endStyled = position;  } diff --git a/src/Document.h b/src/Document.h index de986ce2a..c5b078a72 100644 --- a/src/Document.h +++ b/src/Document.h @@ -230,6 +230,7 @@ private:  	int refCount;  	CellBuffer cb;  	CharClassify charClass; +	CharacterCategoryMap charMap;  	std::unique_ptr<CaseFolder> pcf;  	Sci::Position endStyled;  	int styleClock; @@ -444,6 +445,8 @@ public:  	void SetDefaultCharClasses(bool includeWordClass);  	void SetCharClasses(const unsigned char *chars, CharClassify::cc newCharClass);  	int GetCharsOfClass(CharClassify::cc characterClass, unsigned char *buffer) const; +	void SetCharacterCategoryOptimization(int countCharacters); +	int CharacterCategoryOptimization() const noexcept;  	void SCI_METHOD StartStyling(Sci_Position position) override;  	bool SCI_METHOD SetStyleFor(Sci_Position length, char style) override;  	bool SCI_METHOD SetStyles(Sci_Position length, const char *styles) override; diff --git a/src/Editor.cxx b/src/Editor.cxx index 72660dd1b..4bae9b44f 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -6253,6 +6253,13 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {  		pdoc->SetDefaultCharClasses(true);  		break; +	case SCI_SETCHARACTERCATEGORYOPTIMIZATION: +		pdoc->SetCharacterCategoryOptimization(static_cast<int>(wParam)); +		break; + +	case SCI_GETCHARACTERCATEGORYOPTIMIZATION: +		return pdoc->CharacterCategoryOptimization(); +  	case SCI_GETLENGTH:  		return pdoc->Length(); | 
