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())) }