aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorNeil <nyamatongwe@gmail.com>2019-04-25 11:11:19 +1000
committerNeil <nyamatongwe@gmail.com>2019-04-25 11:11:19 +1000
commit749af53f4ce6b6701f307750614f81fe59fae9a6 (patch)
tree64626b8ec78d65e5a2bcaf9de4f0d8dfdb2dd7bc
parent34d3c3e8695de9eb5f2ad37ff288cfa3ab2f3185 (diff)
downloadscintilla-mirror-749af53f4ce6b6701f307750614f81fe59fae9a6.tar.gz
Fix bug where changing identifier sets in lexers preserved previous identifiers.
-rw-r--r--doc/ScintillaHistory.html3
-rw-r--r--lexlib/SubStyles.h12
2 files changed, 15 insertions, 0 deletions
diff --git a/doc/ScintillaHistory.html b/doc/ScintillaHistory.html
index d9bdc951b..cff81ed87 100644
--- a/doc/ScintillaHistory.html
+++ b/doc/ScintillaHistory.html
@@ -560,6 +560,9 @@
<li>
Released 17 April 2019.
</li>
+ <li>
+ Fix bug where changing identifier sets in lexers preserved previous identifiers.
+ </li>
</ul>
<h3>
<a href="https://www.scintilla.org/scite415.zip">Release 4.1.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'))