diff --git a/gradle.properties b/gradle.properties index 6f391a0..1a28bfc 100644 --- a/gradle.properties +++ b/gradle.properties @@ -15,7 +15,7 @@ platformVersion = 2023.2.4 # Plugin Dependencies -> https://plugins.jetbrains.com/docs/intellij/plugin-dependencies.html # Example: platformPlugins = com.intellij.java, com.jetbrains.php:203.4449.22 -platformPlugins = org.jetbrains.plugins.textmate +platformPlugins = org.jetbrains.plugins.textmate, org.jetbrains.plugins.go:232.10203.2 pluginSinceBuild = 232 diff --git a/src/main/kotlin/com/templ/templ/file/TemplFileViewProvider.kt b/src/main/kotlin/com/templ/templ/file/TemplFileViewProvider.kt index 6159fab..7b92197 100644 --- a/src/main/kotlin/com/templ/templ/file/TemplFileViewProvider.kt +++ b/src/main/kotlin/com/templ/templ/file/TemplFileViewProvider.kt @@ -1,5 +1,6 @@ package com.templ.templ.file +import com.goide.GoLanguage import com.intellij.lang.Language import com.intellij.lang.LanguageParserDefinitions import com.intellij.lang.html.HTMLLanguage @@ -30,12 +31,18 @@ class TemplFileViewProvider(manager: PsiManager, virtualFile: VirtualFile, event } } + private val goLanguageType = object : TemplateDataElementType("Go inside Templ", GoLanguage.INSTANCE, TemplTypes.GO_ROOT_FRAGMENT, TemplLeafElementType("TEMPL_NOT_GO")) { + override fun getTemplateFileLanguage(viewProvider: TemplateLanguageFileViewProvider): Language { + return GoLanguage.INSTANCE + } + } + override fun getBaseLanguage(): Language { return TemplLanguage } override fun getLanguages(): Set { - return setOf(baseLanguage, HTMLLanguage.INSTANCE) + return setOf(baseLanguage, HTMLLanguage.INSTANCE, GoLanguage.INSTANCE) } override fun getTemplateDataLanguage(): Language { @@ -43,11 +50,15 @@ class TemplFileViewProvider(manager: PsiManager, virtualFile: VirtualFile, event } override fun createFile(lang: Language): PsiFile? { - if (lang === HTMLLanguage.INSTANCE) { - val file = LanguageParserDefinitions.INSTANCE.forLanguage(lang).createFile(this) as PsiFileImpl - file.contentElementType = htmlElementType - return file - } else if (lang === baseLanguage) { + if (lang === GoLanguage.INSTANCE) { + val file = LanguageParserDefinitions.INSTANCE.forLanguage(lang).createFile(this) as PsiFileImpl + file.contentElementType = goLanguageType + return file + } else if (lang === HTMLLanguage.INSTANCE) { + val file = LanguageParserDefinitions.INSTANCE.forLanguage(lang).createFile(this) as PsiFileImpl + file.contentElementType = htmlElementType + return file + } else if (lang === baseLanguage) { return LanguageParserDefinitions.INSTANCE.forLanguage(lang).createFile(this) as PsiFileImpl } else { return null diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index f5fa199..80a867e 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -12,6 +12,7 @@ com.intellij.modules.platform com.intellij.modules.ultimate org.jetbrains.plugins.textmate + org.jetbrains.plugins.go