diff --git a/autotests/folding/fix_d399348.addDelim.fold b/autotests/folding/fix_d399348.addDelim.fold
new file mode 100644
--- /dev/null
+++ b/autotests/folding/fix_d399348.addDelim.fold
@@ -0,0 +1,4 @@
+ keyword
+{keyword}
+`keyword`
+'keyword'
diff --git a/autotests/html/fix_d399348.addDelim.html b/autotests/html/fix_d399348.addDelim.html
new file mode 100644
--- /dev/null
+++ b/autotests/html/fix_d399348.addDelim.html
@@ -0,0 +1,11 @@
+
+
+
+fix_d399348.addDelim
+
+
+ keyword
+{keyword}
+`keyword`
+'keyword'
+
diff --git a/autotests/input/fix_d399348.addDelim b/autotests/input/fix_d399348.addDelim
new file mode 100644
--- /dev/null
+++ b/autotests/input/fix_d399348.addDelim
@@ -0,0 +1,4 @@
+ keyword
+{keyword}
+`keyword`
+'keyword'
diff --git a/autotests/input/syntax/fix_d399348_additional_deliminators.xml b/autotests/input/syntax/fix_d399348_additional_deliminators.xml
new file mode 100644
--- /dev/null
+++ b/autotests/input/syntax/fix_d399348_additional_deliminators.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+ - keyword
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/autotests/reference/fix_d399348.addDelim.ref b/autotests/reference/fix_d399348.addDelim.ref
new file mode 100644
--- /dev/null
+++ b/autotests/reference/fix_d399348.addDelim.ref
@@ -0,0 +1,4 @@
+ keyword
+{keyword}
+`keyword`
+'keyword'
diff --git a/src/lib/rule.cpp b/src/lib/rule.cpp
--- a/src/lib/rule.cpp
+++ b/src/lib/rule.cpp
@@ -101,15 +101,12 @@
void Rule::setDefinition(const Definition &def)
{
m_def = def;
-
- // cache for DefinitionData::wordDelimiters, is accessed VERY often
- m_wordDelimiter = &DefinitionData::get(m_def.definition())->wordDelimiters;
}
bool Rule::load(QXmlStreamReader &reader)
{
Q_ASSERT(reader.tokenType() == QXmlStreamReader::StartElement);
m_attribute = reader.attributes().value(QStringLiteral("attribute")).toString();
if (reader.name() != QLatin1String("IncludeRules")) // IncludeRules uses this with a different semantic
m_context.parse(reader.attributes().value(QStringLiteral("context")));
@@ -140,8 +137,11 @@
void Rule::resolveContext()
{
m_context.resolve(m_def.definition());
+
+ // cache for DefinitionData::wordDelimiters, is accessed VERY often
+ m_wordDelimiter = &DefinitionData::get(m_def.definition())->wordDelimiters;
}
void Rule::resolveAttributeFormat(Context *lookupContext)
{
/**