# How to ignore LanguageInjection in kotlin PSI for value containing placeholder "\\${my-placeholder}"?

**URL:** <https://platform.jetbrains.com/t/how-to-ignore-languageinjection-in-kotlin-psi-for-value-containing-placeholder-my-placeholder/218>\
**Category:** IntelliJ Platform\
**Tags:** language-injection\
**Created:** [February 6, 2025, 9:15pm UTC](https://platform.jetbrains.com/t/how-to-ignore-languageinjection-in-kotlin-psi-for-value-containing-placeholder-my-placeholder/218 "2025-02-06T21:15:52Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![eltonsandre](https://sea1.discourse-cdn.com/flex001/user_avatar/platform.jetbrains.com/eltonsandre/32/210_2.png) [@eltonsandre](https://platform.jetbrains.com/u/eltonsandre)\
**Post date:** [February 6, 2025, 9:15pm UTC](https://platform.jetbrains.com/t/how-to-ignore-languageinjection-in-kotlin-psi-for-value-containing-placeholder-my-placeholder/218/1 "2025-02-06T21:15:52Z")

</div>

How to ignore **LanguageInjection** in **kotlin** PSI for value containing placeholder “${my-placeholder}”

I am using `ignore-pattern` as the value `\\\$\{.+\}` but it is ignored completely.

`injectionConfig`:

```xml
<injection language="RegExp" injector-id="kotlin">
<display name>...</display name>
<place><![CDATA[...]]></place>
<ignore-pattern>\\\$\{.+\}</ignore-pattern>
</injection>

```

Can anyone help me?

---

<div class="post-metadata">

**Author:** ![yuriy.artamonov](https://sea1.discourse-cdn.com/flex001/user_avatar/platform.jetbrains.com/yuriy.artamonov/32/48_2.png) [@yuriy.artamonov](https://platform.jetbrains.com/u/yuriy.artamonov)\
**Post date:** [February 7, 2025, 9:51am UTC](https://platform.jetbrains.com/t/how-to-ignore-languageinjection-in-kotlin-psi-for-value-containing-placeholder-my-placeholder/218/2 "2025-02-07T09:51:35Z")

</div>

Could you show an example where you want to ignore the injection? Which plugin sets the injection place?

---

<div class="post-metadata">

**Author:** ![eltonsandre](https://sea1.discourse-cdn.com/flex001/user_avatar/platform.jetbrains.com/eltonsandre/32/210_2.png) [@eltonsandre](https://platform.jetbrains.com/u/eltonsandre)\
**Post date:** [February 7, 2025, 5:37pm UTC](https://platform.jetbrains.com/t/how-to-ignore-languageinjection-in-kotlin-psi-for-value-containing-placeholder-my-placeholder/218/3 "2025-02-07T17:37:22Z")

</div>

Hi Yuriy,  
I’m still developing the plugin,  
In Java it works as expected, but in Kotlin it injects, but doesn’t ignore

the code is like this so far.

resources/META-INF/plugin.xml

```xml
<idea-plugin require-restart="false">
    <depends>com.intellij.modules.java</depends>
    <depends>com.intellij.modules.lang</depends>
    <depends>com.intellij.modules.platform</depends>

    <depends>com.intellij.java</depends>
    <depends>org.jetbrains.kotlin</depends>

    <extensions defaultExtensionNs="org.intellij.intelliLang">
        <injectionConfig config="javainjections.xml"/>
    </extensions>
   ...
</idea-plugin>

```

resources/javainjections.xml

```xml
<?xml version="1.0" encoding="UTF-8"?>
<component name="LanguageInjectionConfiguration">

    <injection language="RegExp" injector-id="java">
        <display-name>JsonFormat (com.fasterxml.jackson.annotation.JsonFormat)</display-name>
        <place><![CDATA[
            psiMethod().withName("pattern").withParameters().definedInClass("com.fasterxml.jackson.annotation.JsonFormat")
            ]]></place>
        <ignore-pattern>\$\{.+\}</ignore-pattern>
    </injection>
    
    <injection language="RegExp" injector-id="kotlin">
        <display-name>JsonFormat (com.fasterxml.jackson.annotation.JsonFormat)</display-name>
        <place><![CDATA[
            psiMethod().withName("pattern").withParameters().definedInClass("com.fasterxml.jackson.annotation.JsonFormat")
            ]]></place>
        <ignore-pattern>\\\$\{.+\}</ignore-pattern>
    </injection>

</component>

```

My test

```auto
package dev.sample;

import com.fasterxml.jackson.annotation.JsonFormat;

public class AnyTest {

    //Good ignored-pattern placeholder
    @JsonFormat(pattern = "${my-placeholder:(\\d{4})\\/(\\d{2})\\/(\\d{2})}")
    LocalDate dateWithPlaceholder;

    //Good
    @JsonFormat(pattern = "(\\d{4})\\/(\\d{2})\\/(\\d{2})")
    LocalDate dateWithoutPlaceholder;
}

```

```kotlin
package dev.sample

import com.fasterxml.jackson.annotation.JsonFormat

class KtAnyTest(

//bad: ignored-pattern placeholder failure
    @JsonFormat(pattern = "\${my-placeholder:(\\d{4})\\/(\\d{2})\\/(\\d{2})}")
    val dateWithPlaceholder: LocalDate?,

//good: injection OK
    @JsonFormat(pattern = "(\\d{4})\\/(\\d{2})\\/(\\d{2})")
    val dateWithoutPlaceholder: LocalDate?
)

```
