From 749af53f4ce6b6701f307750614f81fe59fae9a6 Mon Sep 17 00:00:00 2001 From: Neil Date: Thu, 25 Apr 2019 11:11:19 +1000 Subject: Fix bug where changing identifier sets in lexers preserved previous identifiers. --- lexlib/SubStyles.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'lexlib') 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::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')) -- cgit v1.2.3