diff options
author | Neil <nyamatongwe@gmail.com> | 2019-04-25 11:11:19 +1000 |
---|---|---|
committer | Neil <nyamatongwe@gmail.com> | 2019-04-25 11:11:19 +1000 |
commit | 951a1102da2095604232a3efc76846f1f7de004a (patch) | |
tree | 0c8fdb7bea6ac86a96308daf6a0cd883ae4678fe | |
parent | 89b349be026a6fa7f0c34c8277dcb18593007763 (diff) | |
download | scintilla-mirror-951a1102da2095604232a3efc76846f1f7de004a.tar.gz |
Backport: Fix bug where changing identifier sets in lexers preserved previous identifiers.
Backport of changeset 7473:5d760343adde.
-rw-r--r-- | doc/ScintillaHistory.html | 3 | ||||
-rw-r--r-- | lexlib/SubStyles.h | 12 |
2 files changed, 15 insertions, 0 deletions
diff --git a/doc/ScintillaHistory.html b/doc/ScintillaHistory.html index fcd972567..07f4b01be 100644 --- a/doc/ScintillaHistory.html +++ b/doc/ScintillaHistory.html @@ -549,6 +549,9 @@ <li> Released 10 May 2019. </li> + <li> + Fix bug where changing identifier sets in lexers preserved previous identifiers. + </li> </ul> <h3> <a href="https://sourceforge.net/projects/scintilla/files/scintilla/3.10.5/scintilla3105.zip/download">Release 3.10.5</a> diff --git a/lexlib/SubStyles.h b/lexlib/SubStyles.h index 3e99efe83..f9bdfe65c 100644 --- a/lexlib/SubStyles.h +++ b/lexlib/SubStyles.h @@ -61,7 +61,19 @@ public: return (style >= firstStyle) && (style < (firstStyle + lenStyles)); } + void RemoveStyle(int style) { + std::map<std::string, int>::iterator it = wordToStyle.begin(); + while (it != wordToStyle.end()) { + if (it->second == style) { + it = wordToStyle.erase(it); + } else { + ++it; + } + } + } + void SetIdentifiers(int style, const char *identifiers) { + RemoveStyle(style); while (*identifiers) { const char *cpSpace = identifiers; while (*cpSpace && !(*cpSpace == ' ' || *cpSpace == '\t' || *cpSpace == '\r' || *cpSpace == '\n')) |