diff --git a/src/main/java/net/sjrx/intellij/plugins/systemdunitfiles/coloring/settings/UnitFileColorSettings.java b/src/main/java/net/sjrx/intellij/plugins/systemdunitfiles/coloring/settings/UnitFileColorSettings.java
index b1db238..96d39f3 100644
--- a/src/main/java/net/sjrx/intellij/plugins/systemdunitfiles/coloring/settings/UnitFileColorSettings.java
+++ b/src/main/java/net/sjrx/intellij/plugins/systemdunitfiles/coloring/settings/UnitFileColorSettings.java
@@ -25,7 +25,6 @@ public class UnitFileColorSettings implements ColorSettingsPage {
new AttributesDescriptor("Value//Enum (grammar)", UnitFileHighlighter.GRAMMAR_ENUM),
new AttributesDescriptor("Value//Literal (grammar)", UnitFileHighlighter.GRAMMAR_LITERAL),
new AttributesDescriptor("Value//Operator (grammar)", UnitFileHighlighter.GRAMMAR_OPERATOR),
- new AttributesDescriptor("Value//Identifier (grammar)", UnitFileHighlighter.GRAMMAR_IDENTIFIER),
};
@Nullable
@@ -53,7 +52,7 @@ public String getDemoText() {
+ "# (at your option) any later version.\n"
+ "\n"
+ "[Unit]\n"
- + "Description=Reload Configuration from the Real Root\n"
+ + "Description=Reload Configuration from the Real Root\n"
+ "DefaultDependencies=no\n"
+ "Requires=initrd-root-fs.target\n"
+ "After=initrd-root-fs.target\n"
@@ -81,7 +80,6 @@ public Map getAdditionalHighlightingTagToDescriptorMa
tags.put("gEnum", UnitFileHighlighter.GRAMMAR_ENUM);
tags.put("gLit", UnitFileHighlighter.GRAMMAR_LITERAL);
tags.put("gOp", UnitFileHighlighter.GRAMMAR_OPERATOR);
- tags.put("gId", UnitFileHighlighter.GRAMMAR_IDENTIFIER);
return tags;
}
diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/grammar/Coloring.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/grammar/Coloring.kt
index 9c9cd5d..f209343 100644
--- a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/grammar/Coloring.kt
+++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/grammar/Coloring.kt
@@ -37,8 +37,10 @@ fun defaultRole(terminal: TerminalCombinator): Role? = when (terminal) {
is IntegerTerminal -> Role.LITERAL
is LiteralChoiceTerminal -> if (terminal.choices.allPunctuation()) Role.OPERATOR else Role.ENUM
is FlexibleLiteralChoiceTerminal -> if (terminal.choices.allPunctuation()) Role.OPERATOR else Role.ENUM
- is RegexTerminal -> Role.IDENTIFIER
- else -> null // WhitespaceTerminal, and any future terminal types: uncoloured by default
+ // RegexTerminal (free-form names/strings: Description=, interface names, ...) and whitespace stay
+ // uncoloured by default — they keep the editor's normal value colour. The IDENTIFIER role is still
+ // available for grammars that opt in explicitly via Labeled (e.g. a single-token field like User=).
+ else -> null
}
private fun Array.allPunctuation(): Boolean =
diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/grammar/ColoringTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/grammar/ColoringTest.kt
index de899a7..d21e199 100644
--- a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/grammar/ColoringTest.kt
+++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/grammar/ColoringTest.kt
@@ -14,7 +14,7 @@ class ColoringTest {
assertEquals(Role.ENUM, defaultRole(FlexibleLiteralChoiceTerminal("AF_INET", "AF_INET6")))
assertEquals(Role.OPERATOR, defaultRole(LiteralChoiceTerminal(":")))
assertEquals(Role.OPERATOR, defaultRole(LiteralChoiceTerminal("~")))
- assertEquals(Role.IDENTIFIER, defaultRole(RegexTerminal("[a-z]+", "[a-z]+")))
+ assertEquals(null, defaultRole(RegexTerminal("[a-z]+", "[a-z]+"))) // free-form: keeps default value color
assertEquals(null, defaultRole(WhitespaceTerminal()))
}