From 6d1bf18357b56cbec7d289c9c9434a7a8888b386 Mon Sep 17 00:00:00 2001 From: Neil Date: Fri, 29 Mar 2019 09:05:14 +1100 Subject: Feature [feature-requests:#1259]. Add SCI_SETCHARACTERCATEGORYOPTIMIZATION API to optimize speed of character category features. --- doc/ScintillaDoc.html | 11 +++++++++++ doc/ScintillaHistory.html | 6 ++++++ include/Scintilla.h | 2 ++ include/Scintilla.iface | 6 ++++++ lexlib/CharacterCategory.cxx | 31 +++++++++++++++++++++++++++++++ lexlib/CharacterCategory.h | 17 +++++++++++++++++ scripts/GenerateCharacterCategory.py | 20 +++++++++++++++----- src/Document.cxx | 10 +++++++++- src/Document.h | 3 +++ src/Editor.cxx | 7 +++++++ test/simpleTests.py | 5 +++++ 11 files changed, 112 insertions(+), 6 deletions(-) diff --git a/doc/ScintillaDoc.html b/doc/ScintillaDoc.html index 47d057ff4..e91f8ec3b 100644 --- a/doc/ScintillaDoc.html +++ b/doc/ScintillaDoc.html @@ -2470,6 +2470,8 @@ struct Sci_TextToFind { SCI_SETPUNCTUATIONCHARS(<unused>, const char *characters)
SCI_GETPUNCTUATIONCHARS(<unused>, char *characters) → int
SCI_SETCHARSDEFAULT
+ SCI_SETCHARACTERCATEGORYOPTIMIZATION(int countCharacters)
+ SCI_GETCHARACTERCATEGORYOPTIMIZATION → int

SCI_WORDENDPOSITION(int pos, bool onlyWordCharacters) → int
SCI_WORDSTARTPOSITION(int pos, bool onlyWordCharacters) → int
@@ -2597,6 +2599,15 @@ struct Sci_TextToFind { characters with codes less than 0x20, with word characters set to alphanumeric and '_'.

+

SCI_SETCHARACTERCATEGORYOPTIMIZATION(int countCharacters)
+ SCI_GETCHARACTERCATEGORYOPTIMIZATION → int
+ Optimize speed of character category features like determining whether a character is a space or number at the expense of memory. + Mostly used for Unicode documents. + The countCharacters parameter determines how many character starting from 0 are added to a look-up table with one byte used for each character. + It is reasonable to cover the set of characters likely to be used in a document so 0x100 for simple Roman text, + 0x1000 to cover most simple alphabets, 0x10000 to cover most of East Asian languages, and 0x110000 to cover all possible characters. +

+

Word keyboard commands are: