Code Monkey home page Code Monkey logo

jetbrains-plugin-st4's Introduction

IntelliJ Plugin for StringTemplate v4

Java CI Latest version Downloads

A plugin that adds support for StringTemplate v4 to IntelliJ-based IDEs (version 15.x and later).

It understands .stg and .st files. For example,

See the plugin page for more information.

Highlighting the target language

You can configure Template Data Languages to make the editor highlight the content around StringTemplate tags. For example, if your template is used to generate Java code, you can go to File | Settings | Languages & Frameworks | Template Data Languages and configure which language to highlight:

The editor will now highlight Java parts around ST tags:

Building and contributing

To build the plugin: gradlew buildPlugin

To run the plugin: gradlew runIde

When submitting a pull request, make sure your name is in the contributors.txt file.

jetbrains-plugin-st4's People

Contributors

bjansen avatar bjansen-caps avatar fhannes avatar parrt avatar syakovlevdalet avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

jetbrains-plugin-st4's Issues

Syntax highlighter breaks down on XML namespaces: mismatched input '=' expecting LPAREN

As the below screenshot shows, I get a bunch of errors on string template group files with XML. Most of these seem related to using XML namespaces, where the error shows mismatched input '=' expecting LPAREN on encountering something like s:mustUnderstand.
2022-10-13_09-13

This example, using § for variables (§messageId§) is sufficient to display the error:

saml.stg

SamlAssertionRequest(messageId, to, createdAt, expiresAt, accessToken, target) ::= <<
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
       <s:Header>
             <a:Action s:mustUnderstand="1">http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/Issue</a:Action>
             <a:MessageID>urn:uuid:§messageId§</a:MessageID>
             <a:ReplyTo>
                    <a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
             </a:ReplyTo>
       </s:Header>
</s:Envelope>
>>

Also seen that syntax highlighting breaks down on simple HTML too:
2022-10-13_09-15

To be honest, I am not totally sure what this plugin is supposed to apart from some syntax highlighting, but it works pretty well (i.e. no errors) on JSON.

Marked the files manually using the correct filetype:
2022-10-13_09-28

String template plugin in Rider (2022.3.1) fails to open template file (infinite spinning wheel)

Rider 2022.3.1 with Stringtemplate 0.9 and antlr 1.9.3-3 plugins installed.

Opening any string template file never succeeds, and just have an infinite (for my level of patience anyway) spinning wheel.

Using Intellij the same template files are opened with correct syntax highlighting etc.

The following error gets reported in the Rider idea.log after opening a string template file.

2023-01-11 11:07:02,614 [  62582] SEVERE - #o.j.c.AsyncPromise - Cannot invoke "java.util.List.get(int)" because "org.antlr.jetbrains.st4plugin.psi.STGroupTokenTypes.RULE_ELEMENT_TYPES" is null

java.lang.NullPointerException: Cannot invoke "java.util.List.get(int)" because "org.antlr.jetbrains.st4plugin.psi.STGroupTokenTypes.RULE_ELEMENT_TYPES" is null

at org.antlr.jetbrains.st4plugin.psi.STGroupTokenTypes.getRuleElementType(STGroupTokenTypes.java:19)

at org.antlr.jetbrains.st4plugin.psi.STGroupParserDefinition.createElement(STGroupParserDefinition.java:81)

at com.intellij.psi.impl.source.tree.CompositeElement.createPsiNoLock(CompositeElement.java:705)

at com.intellij.psi.impl.source.tree.CompositeElement.getPsi(CompositeElement.java:692)

at com.intellij.psi.impl.source.SourceTreeToPsiMap.treeElementToPsi(SourceTreeToPsiMap.java:16)

at com.intellij.psi.impl.source.tree.SharedImplUtil.getParent(SharedImplUtil.java:33)

at com.intellij.psi.impl.source.tree.LeafPsiElement.getParent(LeafPsiElement.java:70)

at com.intellij.completion.ml.common.RecentPlacesFeatures$StoreRecentPlacesListener.findDeclaration(RecentPlacesFeatures.kt:104)

at com.intellij.completion.ml.common.RecentPlacesFeatures$StoreRecentPlacesListener.recentPlaceAdded$lambda$1(RecentPlacesFeatures.kt:73)

at com.intellij.util.RunnableCallable.call(RunnableCallable.java:20)

at com.intellij.util.RunnableCallable.call(RunnableCallable.java:11)

at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$OTelMonitor.callWrapped(NonBlockingReadActionImpl.java:746)

at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$OTelMonitor$MonitoredComputation.call(NonBlockingReadActionImpl.java:778)

at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.insideReadAction(NonBlockingReadActionImpl.java:573)

at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.lambda$attemptComputation$3(NonBlockingReadActionImpl.java:537)

at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1086)

at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runInReadActionWithWriteActionPriority$0(ProgressIndicatorUtils.java:71)

at com.intellij.openapi.progress.util.ProgressIndicatorUtilService.runActionAndCancelBeforeWrite(ProgressIndicatorUtilService.java:63)

at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runActionAndCancelBeforeWrite(ProgressIndicatorUtils.java:128)

at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runWithWriteActionPriority$1(ProgressIndicatorUtils.java:109)

at com.intellij.openapi.progress.ProgressManager.lambda$runProcess$0(ProgressManager.java:68)

at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:188)

at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$13(CoreProgressManager.java:589)

at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:664)

at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:620)

at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:588)

at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:60)

at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:175)

at com.intellij.openapi.progress.ProgressManager.runProcess(ProgressManager.java:68)

at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runWithWriteActionPriority(ProgressIndicatorUtils.java:106)

at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runInReadActionWithWriteActionPriority(ProgressIndicatorUtils.java:71)

at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.attemptComputation(NonBlockingReadActionImpl.java:537)

at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.lambda$transferToBgThread$1(NonBlockingReadActionImpl.java:444)

at com.intellij.codeWithMe.ClientId$Companion.decorateRunnable$lambda$6(ClientId.kt:308)

at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)

at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)

at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:702)

at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:699)

at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)

at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:699)

at java.base/java.lang.Thread.run(Thread.java:833)

IntelliJ 2022.3.x NullPointer on startup with ST4 plugin 0.9

Issue in IntelliJ 2022.3.2 and some previous versions, on IDE start this gets reported:

Caused by: java.lang.NullPointerException: Cannot invoke "java.util.List.get(int)" because "org.antlr.jetbrains.st4plugin.psi.STTokenTypes.TOKEN_ELEMENT_TYPES" is null

Not sure how they can be null.

full trace:

com.intellij.diagnostic.PluginException: Cannot create class org.antlr.jetbrains.st4plugin.highlight.STBraceMatcher (classloader=PluginClassLoader(plugin=PluginDescriptor(name=StringTemplate v4, id=org.antlr.jetbrains.st4plugin, descriptorPath=plugin.xml, path=~/.local/share/JetBrains/Toolbox/apps/IDEA-U/ch-0/223.8617.56.plugins/jetbrains-plugin-st4, version=0.9, package=null, isBundled=false), packagePrefix=null, instanceId=171, state=active))
	at com.intellij.serviceContainer.ComponentManagerImpl.instantiateClass(ComponentManagerImpl.kt:989)
	at com.intellij.serviceContainer.ComponentManagerImpl.instantiateClass(ComponentManagerImpl.kt:1006)
	at com.intellij.serviceContainer.LazyExtensionInstance.createInstance(LazyExtensionInstance.java:55)
	at com.intellij.serviceContainer.LazyExtensionInstance.getInstance(LazyExtensionInstance.java:44)
	at com.intellij.serviceContainer.BaseKeyedLazyInstance.getInstance(BaseKeyedLazyInstance.java:38)
	at com.intellij.openapi.util.KeyedExtensionCollector.instantiate(KeyedExtensionCollector.java:177)
	at com.intellij.openapi.util.KeyedExtensionCollector.buildExtensionsFromExtensionPoint(KeyedExtensionCollector.java:164)
	at com.intellij.openapi.util.KeyedExtensionCollector.buildExtensions(KeyedExtensionCollector.java:139)
	at com.intellij.lang.LanguageExtension.buildExtensions(LanguageExtension.java:147)
	at com.intellij.lang.LanguageExtension.buildExtensions(LanguageExtension.java:16)
	at com.intellij.openapi.util.KeyedExtensionCollector.forKey(KeyedExtensionCollector.java:111)
	at com.intellij.lang.LanguageExtension.findForLanguage(LanguageExtension.java:101)
	at com.intellij.lang.LanguageExtension.forLanguage(LanguageExtension.java:93)
	at cn.aprilviolet.highlightbracketpair.highlighter.DefaultAbstractBracketHighlighter.refresh(DefaultAbstractBracketHighlighter.java:82)
	at cn.aprilviolet.highlightbracketpair.highlighter.DefaultAbstractBracketHighlighter.<clinit>(DefaultAbstractBracketHighlighter.java:38)
	at cn.aprilviolet.highlightbracketpair.highlighter.BracketHighlighterFactory.getBraceHighlighterInstance(BracketHighlighterFactory.java:42)
	at cn.aprilviolet.highlightbracketpair.component.HighlightEditorCartListener.highlightEditorCurrentPair(HighlightEditorCartListener.java:64)
	at cn.aprilviolet.highlightbracketpair.component.HighlightEditorCartListener.caretPositionChanged(HighlightEditorCartListener.java:54)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at com.intellij.util.EventDispatcher.dispatchVoidMethod(EventDispatcher.java:120)
	at com.intellij.util.EventDispatcher.lambda$createMulticaster$1(EventDispatcher.java:85)
	at jdk.proxy2/jdk.proxy2.$Proxy126.caretPositionChanged(Unknown Source)
	at com.intellij.openapi.editor.impl.CaretModelImpl.fireCaretPositionChanged(CaretModelImpl.java:543)
	at com.intellij.openapi.editor.impl.CaretImpl.doMoveToLogicalPosition(CaretImpl.java:461)
	at com.intellij.openapi.editor.impl.CaretImpl.moveToLogicalPosition(CaretImpl.java:606)
	at com.intellij.openapi.editor.impl.CaretImpl.lambda$moveToLogicalPosition$2(CaretImpl.java:318)
	at com.intellij.openapi.editor.impl.CaretModelImpl.doWithCaretMerging(CaretModelImpl.java:414)
	at com.intellij.openapi.editor.impl.CaretImpl.moveToLogicalPosition(CaretImpl.java:318)
	at com.intellij.openapi.editor.impl.CaretModelImpl.lambda$setCaretsAndSelections$4(CaretModelImpl.java:460)
	at com.intellij.openapi.editor.impl.CaretModelImpl.doWithCaretMerging(CaretModelImpl.java:419)
	at com.intellij.openapi.editor.impl.CaretModelImpl.setCaretsAndSelections(CaretModelImpl.java:447)
	at com.intellij.openapi.fileEditor.impl.text.TextEditorProvider.setStateImpl(TextEditorProvider.java:261)
	at com.intellij.openapi.fileEditor.impl.text.PsiAwareTextEditorProvider.setStateImpl(PsiAwareTextEditorProvider.java:101)
	at com.intellij.openapi.fileEditor.impl.text.AsyncEditorLoader.setEditorState(AsyncEditorLoader.kt:214)
	at com.intellij.openapi.fileEditor.impl.text.TextEditorImpl.setState(TextEditorImpl.java:163)
	at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.restoreEditorState(FileEditorManagerImpl.java:1239)
	at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.openFileImpl4Edt(FileEditorManagerImpl.java:1082)
	at com.intellij.openapi.fileEditor.impl.FileEditorManagerExImpl$openFileOnStartup$2.invokeSuspend$lambda$0(FileEditorManagerExImpl.kt:86)
	at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:113)
	at com.intellij.openapi.fileEditor.impl.FileEditorManagerExImpl$openFileOnStartup$2.invokeSuspend(FileEditorManagerExImpl.kt:82)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
	at com.intellij.openapi.application.TransactionGuardImpl$1.run(TransactionGuardImpl.java:194)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:838)
	at com.intellij.openapi.application.impl.ApplicationImpl$3.run(ApplicationImpl.java:454)
	at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:74)
	at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:114)
	at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:36)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:779)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:730)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:724)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:749)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:909)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:756)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$5(IdeEventQueue.java:437)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:787)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$6(IdeEventQueue.java:436)
	at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:105)
	at com.intellij.ide.IdeEventQueue.performActivity(IdeEventQueue.java:615)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:434)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:838)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:480)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)
Caused by: java.lang.ExceptionInInitializerError
	at java.base/jdk.internal.misc.Unsafe.allocateInstance(Native Method)
	at java.base/java.lang.invoke.DirectMethodHandle.allocateInstance(DirectMethodHandle.java:520)
	at com.intellij.serviceContainer.ComponentManagerImpl.instantiateClass(ComponentManagerImpl.kt:950)
	... 73 more
Caused by: java.lang.NullPointerException: Cannot invoke "java.util.List.get(int)" because "org.antlr.jetbrains.st4plugin.psi.STTokenTypes.TOKEN_ELEMENT_TYPES" is null
	at org.antlr.jetbrains.st4plugin.psi.STTokenTypes.getTokenElementType(STTokenTypes.java:23)
	at org.antlr.jetbrains.st4plugin.highlight.STBraceMatcher.<clinit>(STBraceMatcher.java:16)
	... 76 more

runtime environment

IntelliJ IDEA 2022.3.2 (Ultimate Edition)
Runtime version: 17.0.5+1-b653.25 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.

Plugin version 0.9, installed via IntelliJ Marketplace from inside the IDE plugin management.
(Most recent entry in "What's New" relates to #37)

PluginException on Rider start

When I start Rider with this plugin installed there pop ups 2 exceptions:

com.intellij.diagnostic.PluginException: Cannot create extension (class=org.antlr.jetbrains.st4plugin.highlight.STColorSettingsPage) [Plugin: org.antlr.jetbrains.st4plugin]
	at com.intellij.serviceContainer.ComponentManagerImpl.createError(ComponentManagerImpl.kt:1467)
	at com.intellij.openapi.extensions.impl.XmlExtensionAdapter.doCreateInstance(XmlExtensionAdapter.kt:71)
	at com.intellij.openapi.extensions.impl.XmlExtensionAdapter.createInstance(XmlExtensionAdapter.kt:32)
	at com.intellij.openapi.extensions.impl.ExtensionPointImpl.processAdapter(ExtensionPointImpl.java:468)
	at com.intellij.openapi.extensions.impl.ExtensionPointImpl.processAdapters(ExtensionPointImpl.java:416)
	at com.intellij.openapi.extensions.impl.ExtensionPointImpl.getExtensionList(ExtensionPointImpl.java:249)
	at com.jetbrains.rdclient.daemon.components.FrontendHighlighterRegistrationHost.shouldRegister(FrontendHighlighterRegistrationHost.kt:133)
	at com.jetbrains.rdclient.daemon.components.FrontendHighlighterRegistrationHost.g(FrontendHighlighterRegistrationHost.kt:99)
	at com.jetbrains.rdclient.daemon.components.FrontendHighlighterRegistrationHost.access$registerColorSettingsPage(FrontendHighlighterRegistrationHost.kt:33)
	at com.jetbrains.rdclient.daemon.components.FrontendHighlighterRegistrationHost$handleDefaultRegistry$3.invoke(FrontendHighlighterRegistrationHost.kt:83)
	at com.jetbrains.rdclient.daemon.components.FrontendHighlighterRegistrationHost$handleDefaultRegistry$3.invoke(FrontendHighlighterRegistrationHost.kt:82)
	at com.jetbrains.rd.util.reactive.Signal.fire(Signal.kt:32)
	at com.jetbrains.rd.framework.impl.RdSignal$onWireReceived$2.invoke(RdSignal.kt:32)
	at com.jetbrains.rd.framework.impl.RdSignal$onWireReceived$2.invoke(RdSignal.kt:31)
	at com.jetbrains.rd.framework.MessageBroker$RdWireableDispatchHelper$doDispatch$2.invoke(MessageBroker.kt:122)
	at com.jetbrains.rd.framework.MessageBroker$RdWireableDispatchHelper$doDispatch$2.invoke(MessageBroker.kt:115)
	at com.jetbrains.rdclient.protocol.RdDispatcher.flushAll(RdDispatcher.kt:109)
	at com.jetbrains.rdclient.protocol.RdDispatcher.flushAllRunnable$lambda$0(RdDispatcher.kt:33)
	at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:209)
	at com.intellij.openapi.application.TransactionGuardImpl.access$100(TransactionGuardImpl.java:22)
	at com.intellij.openapi.application.TransactionGuardImpl$1.run(TransactionGuardImpl.java:191)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:857)
	at com.intellij.openapi.application.impl.ApplicationImpl$4.run(ApplicationImpl.java:477)
	at com.intellij.openapi.application.impl.RwLockHolder.runWithEnabledImplicitRead(RwLockHolder.kt:75)
	at com.intellij.openapi.application.impl.RwLockHolder.runWithImplicitRead(RwLockHolder.kt:67)
	at com.intellij.openapi.application.impl.ApplicationImpl.runWithImplicitRead(ApplicationImpl.java:1444)
	at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:82)
	at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:124)
	at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:44)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:792)
	at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:739)
	at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:733)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:761)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:695)
	at com.intellij.ide.IdeEventQueue._dispatchEvent$lambda$12(IdeEventQueue.kt:589)
	at com.intellij.openapi.application.impl.RwLockHolder.runWithoutImplicitRead(RwLockHolder.kt:44)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:589)
	at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:72)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:355)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:354)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:793)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:354)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:349)
	at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:1014)
	at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:106)
	at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:1014)
	at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$7(IdeEventQueue.kt:349)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:862)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:391)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)
Caused by: com.intellij.diagnostic.PluginException: Cannot create class org.antlr.jetbrains.st4plugin.highlight.STColorSettingsPage (classloader=PluginClassLoader(plugin=PluginDescriptor(name=StringTemplate v4, id=org.antlr.jetbrains.st4plugin, descriptorPath=plugin.xml, path=~\AppData\Roaming\JetBrains\Rider2023.3\plugins\jetbrains-plugin-st4, version=0.9, package=null, isBundled=false), packagePrefix=null, state=active))
	at com.intellij.serviceContainer.ComponentManagerImpl.doInstantiateClass(ComponentManagerImpl.kt:1397)
	at com.intellij.serviceContainer.ComponentManagerImpl.instantiateClass(ComponentManagerImpl.kt:1373)
	at com.intellij.openapi.extensions.impl.XmlExtensionAdapter.instantiateClass(XmlExtensionAdapter.kt:80)
	at com.intellij.openapi.extensions.impl.SimpleConstructorInjectionAdapter.instantiateClass(XmlExtensionAdapter.kt:100)
	at com.intellij.openapi.extensions.impl.XmlExtensionAdapter.doCreateInstance(XmlExtensionAdapter.kt:51)
	... 56 more
Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.antlr.jetbrains.st4plugin.highlight.STColorSettingsPage
	at java.base/jdk.internal.misc.Unsafe.allocateInstance(Native Method)
	at java.base/java.lang.invoke.DirectMethodHandle.allocateInstance(DirectMethodHandle.java:520)
	at com.intellij.serviceContainer.ComponentManagerImpl.findConstructorAndInstantiateClass(ComponentManagerImpl.kt:1379)
	at com.intellij.serviceContainer.ComponentManagerImpl.doInstantiateClass(ComponentManagerImpl.kt:1388)
	... 60 more
Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.ExceptionInInitializerError [in thread "AWT-EventQueue-0"]
	at org.antlr.jetbrains.st4plugin.highlight.STColorSettingsPage.<clinit>(STColorSettingsPage.java:19)
	at java.base/jdk.internal.misc.Unsafe.allocateInstance(Native Method)
	at java.base/java.lang.invoke.DirectMethodHandle.allocateInstance(DirectMethodHandle.java:520)
	at com.intellij.serviceContainer.ComponentManagerImpl.findConstructorAndInstantiateClass(ComponentManagerImpl.kt:1379)
	at com.intellij.serviceContainer.ComponentManagerImpl.doInstantiateClass(ComponentManagerImpl.kt:1388)
	at com.intellij.serviceContainer.ComponentManagerImpl.instantiateClass(ComponentManagerImpl.kt:1373)
	at com.intellij.openapi.extensions.impl.XmlExtensionAdapter.instantiateClass(XmlExtensionAdapter.kt:80)
	at com.intellij.openapi.extensions.impl.SimpleConstructorInjectionAdapter.instantiateClass(XmlExtensionAdapter.kt:100)
	at com.intellij.openapi.extensions.impl.XmlExtensionAdapter.doCreateInstance(XmlExtensionAdapter.kt:51)
	at com.intellij.openapi.extensions.impl.XmlExtensionAdapter.createInstance(XmlExtensionAdapter.kt:32)
	at com.intellij.openapi.extensions.impl.ExtensionPointImpl.processAdapter(ExtensionPointImpl.java:468)
	at com.intellij.openapi.extensions.impl.ExtensionPointImpl.processAdapters(ExtensionPointImpl.java:416)
	at com.intellij.openapi.extensions.impl.ExtensionPointImpl.getExtensions(ExtensionPointImpl.java:267)
	at com.intellij.openapi.extensions.ExtensionPointName.getExtensions(ExtensionPointName.kt:41)
	at com.jetbrains.rd.platform.daemon.TextAttributesKeysStorage.g(TextAttributesKeysStorage.kt:36)
	at com.jetbrains.rd.platform.daemon.TextAttributesKeysStorage.register(TextAttributesKeysStorage.kt:27)
	at com.jetbrains.rd.platform.daemon.TextAttributesRegistrationHost.getTextAttributesKey(TextAttributesRegistrationHost.kt:39)
	at com.jetbrains.rdclient.daemon.components.FrontendHighlighterRegistrationHost.g(FrontendHighlighterRegistrationHost.kt:160)
	at com.jetbrains.rdclient.daemon.components.FrontendHighlighterRegistrationHost.access$patchIdeaColorsScheme(FrontendHighlighterRegistrationHost.kt:33)
	at com.jetbrains.rdclient.daemon.components.FrontendHighlighterRegistrationHost$handleDefaultRegistry$1.invoke(FrontendHighlighterRegistrationHost.kt:77)
	at com.jetbrains.rdclient.daemon.components.FrontendHighlighterRegistrationHost$handleDefaultRegistry$1.invoke(FrontendHighlighterRegistrationHost.kt:76)
	... 47 more

and

com.intellij.diagnostic.PluginException: Cannot create extension (class=org.antlr.jetbrains.st4plugin.highlight.STColorSettingsPage) [Plugin: org.antlr.jetbrains.st4plugin]
	at com.intellij.serviceContainer.ComponentManagerImpl.createError(ComponentManagerImpl.kt:1467)
	at com.intellij.openapi.extensions.impl.XmlExtensionAdapter.doCreateInstance(XmlExtensionAdapter.kt:71)
	at com.intellij.openapi.extensions.impl.XmlExtensionAdapter.createInstance(XmlExtensionAdapter.kt:32)
	at com.intellij.openapi.extensions.impl.ExtensionPointImpl.processAdapter(ExtensionPointImpl.java:468)
	at com.intellij.openapi.extensions.impl.ExtensionPointImpl.processAdapters(ExtensionPointImpl.java:416)
	at com.intellij.openapi.extensions.impl.ExtensionPointImpl.getExtensions(ExtensionPointImpl.java:267)
	at com.intellij.openapi.extensions.ExtensionPointName.getExtensions(ExtensionPointName.kt:41)
	at com.jetbrains.rd.platform.daemon.TextAttributesKeysStorage.g(TextAttributesKeysStorage.kt:36)
	at com.jetbrains.rd.platform.daemon.TextAttributesKeysStorage.register(TextAttributesKeysStorage.kt:27)
	at com.jetbrains.rd.platform.daemon.TextAttributesRegistrationHost.getTextAttributesKey(TextAttributesRegistrationHost.kt:39)
	at com.jetbrains.rdclient.daemon.components.FrontendHighlighterRegistrationHost.g(FrontendHighlighterRegistrationHost.kt:160)
	at com.jetbrains.rdclient.daemon.components.FrontendHighlighterRegistrationHost.access$patchIdeaColorsScheme(FrontendHighlighterRegistrationHost.kt:33)
	at com.jetbrains.rdclient.daemon.components.FrontendHighlighterRegistrationHost$handleDefaultRegistry$1.invoke(FrontendHighlighterRegistrationHost.kt:77)
	at com.jetbrains.rdclient.daemon.components.FrontendHighlighterRegistrationHost$handleDefaultRegistry$1.invoke(FrontendHighlighterRegistrationHost.kt:76)
	at com.jetbrains.rd.util.reactive.Signal.fire(Signal.kt:32)
	at com.jetbrains.rd.framework.impl.RdSignal$onWireReceived$2.invoke(RdSignal.kt:32)
	at com.jetbrains.rd.framework.impl.RdSignal$onWireReceived$2.invoke(RdSignal.kt:31)
	at com.jetbrains.rd.framework.MessageBroker$RdWireableDispatchHelper$doDispatch$2.invoke(MessageBroker.kt:122)
	at com.jetbrains.rd.framework.MessageBroker$RdWireableDispatchHelper$doDispatch$2.invoke(MessageBroker.kt:115)
	at com.jetbrains.rdclient.protocol.RdDispatcher.flushAll(RdDispatcher.kt:109)
	at com.jetbrains.rdclient.protocol.RdDispatcher.flushAllRunnable$lambda$0(RdDispatcher.kt:33)
	at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:209)
	at com.intellij.openapi.application.TransactionGuardImpl.access$100(TransactionGuardImpl.java:22)
	at com.intellij.openapi.application.TransactionGuardImpl$1.run(TransactionGuardImpl.java:191)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:857)
	at com.intellij.openapi.application.impl.ApplicationImpl$4.run(ApplicationImpl.java:477)
	at com.intellij.openapi.application.impl.RwLockHolder.runWithEnabledImplicitRead(RwLockHolder.kt:75)
	at com.intellij.openapi.application.impl.RwLockHolder.runWithImplicitRead(RwLockHolder.kt:67)
	at com.intellij.openapi.application.impl.ApplicationImpl.runWithImplicitRead(ApplicationImpl.java:1444)
	at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:82)
	at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:124)
	at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:44)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:792)
	at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:739)
	at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:733)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:761)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:695)
	at com.intellij.ide.IdeEventQueue._dispatchEvent$lambda$12(IdeEventQueue.kt:589)
	at com.intellij.openapi.application.impl.RwLockHolder.runWithoutImplicitRead(RwLockHolder.kt:44)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:589)
	at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:72)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:355)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:354)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:793)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:354)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:349)
	at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:1014)
	at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:106)
	at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:1014)
	at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$7(IdeEventQueue.kt:349)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:862)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:391)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)
Caused by: com.intellij.diagnostic.PluginException: Cannot create class org.antlr.jetbrains.st4plugin.highlight.STColorSettingsPage (classloader=PluginClassLoader(plugin=PluginDescriptor(name=StringTemplate v4, id=org.antlr.jetbrains.st4plugin, descriptorPath=plugin.xml, path=~\AppData\Roaming\JetBrains\Rider2023.3\plugins\jetbrains-plugin-st4, version=0.9, package=null, isBundled=false), packagePrefix=null, state=active))
	at com.intellij.serviceContainer.ComponentManagerImpl.doInstantiateClass(ComponentManagerImpl.kt:1397)
	at com.intellij.serviceContainer.ComponentManagerImpl.instantiateClass(ComponentManagerImpl.kt:1373)
	at com.intellij.openapi.extensions.impl.XmlExtensionAdapter.instantiateClass(XmlExtensionAdapter.kt:80)
	at com.intellij.openapi.extensions.impl.SimpleConstructorInjectionAdapter.instantiateClass(XmlExtensionAdapter.kt:100)
	at com.intellij.openapi.extensions.impl.XmlExtensionAdapter.doCreateInstance(XmlExtensionAdapter.kt:51)
	... 59 more
Caused by: java.lang.ExceptionInInitializerError
	at org.antlr.jetbrains.st4plugin.highlight.STColorSettingsPage.<clinit>(STColorSettingsPage.java:19)
	at java.base/jdk.internal.misc.Unsafe.allocateInstance(Native Method)
	at java.base/java.lang.invoke.DirectMethodHandle.allocateInstance(DirectMethodHandle.java:520)
	at com.intellij.serviceContainer.ComponentManagerImpl.findConstructorAndInstantiateClass(ComponentManagerImpl.kt:1379)
	at com.intellij.serviceContainer.ComponentManagerImpl.doInstantiateClass(ComponentManagerImpl.kt:1388)
	... 63 more
Caused by: java.lang.NullPointerException: Cannot invoke "java.util.List.get(int)" because "org.antlr.jetbrains.st4plugin.psi.STGroupTokenTypes.TOKEN_ELEMENT_TYPES" is null
	at org.antlr.jetbrains.st4plugin.psi.STGroupTokenTypes.getTokenElementType(STGroupTokenTypes.java:23)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:992)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
	at org.antlr.jetbrains.st4plugin.highlight.STGroupSyntaxHighlighter.<clinit>(STGroupSyntaxHighlighter.java:39)
	... 68 more

JetBrains Rider 2023.3 EAP 4
Build #RD-233.10527.19, built on October 20, 2023
Licensed to JetBrains Rider EAP user: Oliver Ehrenmüller
Expiration date: November 19, 2023
Runtime version: 17.0.8.1+7-b1072.1 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Windows 11.0
.NET Core v7.0.10 x64 (Server GC)
GC: G1 Young Generation, G1 Old Generation
Memory: 16384M
Cores: 24
Registry:
editor.config.csharp.support=true
vcs.log.index.enable=true
ide.find.use.editor.font=true
ide.experimental.ui=true
markdown.open.vcs.log.link=true
ide.images.show.chessboard=true
Non-Bundled Plugins:
com.intellij.ideolog (222.1.0.0)
com.intellij.plugins.riderkeymap (201.6251.22)
com.intellij.plugin.adernov.powershell (2.3.0)
org.antlr.jetbrains.st4plugin (0.9)
Abc.MoqComplete.Rider (2023.2.0.1)
com.intellij.resharper.StructuredLogging (2023.3.0.315-eap04)
tanvd.grazi (233.10527.14)
com.intellij.ml.llm (233.10527.14)
mobi.hsz.idea.gitignore (4.5.2)

Include antlr4 commands used in README

Wanted to give the colorization work a quick look, tried opening the project as-is and got stuck on antlr/grammars-v4#274. This leads me to think I'm doing something wrong. Without a doubt it's been a long time since I worked with ANTLR and what little skill I had then is long-gone now...

Maybe including the correct incantations in the README.MD would make things go more smoothly?

NullPointerException after update to 0.9

Just updated to 0.9. Got following exception:

com.intellij.diagnostic.PluginException: Cannot create extension (class=org.antlr.jetbrains.st4plugin.highlight.STColorSettingsPage) [Plugin: org.antlr.jetbrains.st4plugin]
	at com.intellij.serviceContainer.ComponentManagerImpl.createError(ComponentManagerImpl.kt:934)
	at com.intellij.openapi.extensions.impl.XmlExtensionAdapter.createInstance(XmlExtensionAdapter.java:88)
	at com.intellij.openapi.extensions.impl.ExtensionPointImpl.processAdapter(ExtensionPointImpl.java:489)
	at com.intellij.openapi.extensions.impl.ExtensionPointImpl.processAdapters(ExtensionPointImpl.java:437)
	at com.intellij.openapi.extensions.impl.ExtensionPointImpl.getExtensions(ExtensionPointImpl.java:264)
	at com.intellij.openapi.extensions.ExtensionPointName.getExtensions(ExtensionPointName.java:35)
	at com.jetbrains.rd.platform.daemon.TextAttributesKeysStorage.s(TextAttributesKeysStorage.kt:36)
	at com.jetbrains.rd.platform.daemon.TextAttributesKeysStorage.register(TextAttributesKeysStorage.kt:27)
	at com.jetbrains.rd.platform.daemon.TextAttributesRegistrationHost.getTextAttributesKey(TextAttributesRegistrationHost.kt:40)
	at com.jetbrains.rdclient.daemon.components.FrontendHighlighterRegistrationHost.S(FrontendHighlighterRegistrationHost.kt:159)
	at com.jetbrains.rdclient.daemon.components.FrontendHighlighterRegistrationHost.access$patchIdeaColorsScheme(FrontendHighlighterRegistrationHost.kt:37)
	at com.jetbrains.rdclient.daemon.components.FrontendHighlighterRegistrationHost$handleDefaultRegistry$1.invoke(FrontendHighlighterRegistrationHost.kt:79)
	at com.jetbrains.rdclient.daemon.components.FrontendHighlighterRegistrationHost$handleDefaultRegistry$1.invoke(FrontendHighlighterRegistrationHost.kt:37)
	at com.jetbrains.rd.util.reactive.Signal.fire(Signal.kt:32)
	at com.jetbrains.rd.framework.impl.RdSignal.onWireReceived(RdSignal.kt:42)
	at com.jetbrains.rd.framework.MessageBroker$invoke$2$2.invoke(MessageBroker.kt:56)
	at com.jetbrains.rd.framework.MessageBroker$invoke$2$2.invoke(MessageBroker.kt:11)
	at com.jetbrains.rd.framework.impl.ProtocolContexts.readMessageContextAndInvoke(ProtocolContexts.kt:151)
	at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:55)
	at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:11)
	at com.jetbrains.rdclient.protocol.RdDispatcher.flushAll(RdDispatcher.kt:97)
	at com.jetbrains.rdclient.protocol.RdDispatcher.access$flushAll(RdDispatcher.kt:18)
	at com.jetbrains.rdclient.protocol.RdDispatcher$flushAllRunnable$1.run(RdDispatcher.kt:23)
	at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:214)
	at com.intellij.openapi.application.TransactionGuardImpl.access$200(TransactionGuardImpl.java:21)
	at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:196)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:805)
	at com.intellij.openapi.application.impl.ApplicationImpl.lambda$invokeLater$4(ApplicationImpl.java:348)
	at com.intellij.codeWithMe.ClientId$Companion.withClientId(ClientId.kt:141)
	at com.intellij.codeWithMe.ClientId.withClientId(ClientId.kt)
	at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:81)
	at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:133)
	at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:46)
	at com.intellij.openapi.application.impl.FlushQueue$FlushNow.run(FlushQueue.java:189)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:891)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:760)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$6(IdeEventQueue.java:447)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:818)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:446)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:805)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:492)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: com.intellij.diagnostic.PluginException: Cannot create class org.antlr.jetbrains.st4plugin.highlight.STColorSettingsPage (classloader=PluginClassLoader(plugin=PluginDescriptor(name=StringTemplate v4, id=org.antlr.jetbrains.st4plugin, descriptorPath=plugin.xml, path=~\AppData\Local\JetBrains\Toolbox\apps\Rider\ch-1\213.4928.4.plugins\jetbrains-plugin-st4, version=0.9, package=null, isBundled=false), packagePrefix=null, instanceId=15, state=active))
	at com.intellij.serviceContainer.ComponentManagerImpl.instantiateClass(ComponentManagerImpl.kt:872)
	at com.intellij.openapi.extensions.impl.XmlExtensionAdapter.instantiateClass(XmlExtensionAdapter.java:99)
	at com.intellij.openapi.extensions.impl.XmlExtensionAdapter$SimpleConstructorInjectionAdapter.instantiateClass(XmlExtensionAdapter.java:116)
	at com.intellij.openapi.extensions.impl.XmlExtensionAdapter.createInstance(XmlExtensionAdapter.java:66)
	... 52 more
Caused by: java.lang.ExceptionInInitializerError
	at org.antlr.jetbrains.st4plugin.highlight.STColorSettingsPage.<clinit>(STColorSettingsPage.java:19)
	at java.base/jdk.internal.misc.Unsafe.allocateInstance(Native Method)
	at java.base/java.lang.invoke.DirectMethodHandle.allocateInstance(DirectMethodHandle.java:482)
	at com.intellij.serviceContainer.ComponentManagerImpl.instantiateClass(ComponentManagerImpl.kt:833)
	... 55 more
Caused by: java.lang.NullPointerException
	at org.antlr.jetbrains.st4plugin.psi.STGroupTokenTypes.getTokenElementType(STGroupTokenTypes.java:23)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
	at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
	at org.antlr.jetbrains.st4plugin.highlight.STGroupSyntaxHighlighter.<clinit>(STGroupSyntaxHighlighter.java:39)
	... 59 more

Word Autocompletion

Add autocompletion (Ctrl-Space) for the following things:

  • attributes, templates and functions: given foo(bar) ::= << ... >>, < Ctrl-Spacefoo(), bar, first(), length(), etc.
  • options: <foo; for Ctrl-Spaceformat; <foo; Ctrl-Spaceseparator, format, null, etc. Maybe it could also insert the trailing =
  • other reserved words in their respective contexts

Double-click word selection is broken

When double-clicking within a template to select a word, only a single letter is selected instead. This happens only for verbatim text, not for keywords or insertions.

Here's a recording, with the following steps:

  1. Press Alt-Shift-Left to select the verbatim word (works as intended).
  2. Double-click with the intention to select the verbatim word, but it only selects one letter.
  3. Double-click to select the word within the attribute insertion (works as intended).
  4. Double-click to select the keyword if (also works as intended).

It's not in the recording, but double-click also works for template and attribute names. So the problem seems to occur only in verbatim text.

recording

incompatible to IntelliJ 2018

Installation of ST4 plugin fails on IntelliJ 2018 versions.
Error messages suggest it needs a different packaging (?).
Reported to IntelliJ, got delegated here. They consider disabling the plugin (if not fixed).

Code Folding

It would be really useful if one could fold template bodies in .stg files. See attached screenshot for an example, using IntelliJs custom folding regions (which unfortunately don't work very well when the code changes):

Screenshot 2019-12-17 at 13 30 42

Antlr-based PSI?

Hi, I'd like to ask whether it is possible to somehow generate PSI classes from the antlr grammar, as PSI is needed to provide some advanced features such as code completion, etc. Or would that require rewriting the grammar into BNF/Flex?

Error markers have no tooltip

Most (all?) errors are highlighted, but have no tooltip that gives further information about the problem. See attached screenshot (hovering the mouse over the red text does nothing).

Screenshot 2019-12-17 at 13 34 05

Bug: common NullPointerException in StringTemplate v4 (0.8) plugin in IntelliJ IDEA 2020.3 IDE

java.lang.NullPointerException
	at org.antlr.jetbrains.st4plugin.structview.STGroupTemplateDefItemPresentation.getIcon(STGroupTemplateDefItemPresentation.java:68)
	at com.intellij.ide.projectView.PresentationData.updateFrom(PresentationData.java:191)
	at com.intellij.ide.util.treeView.smartTree.TreeElementWrapper.update(TreeElementWrapper.java:42)
	at com.intellij.ide.util.treeView.PresentableNodeDescriptor.getUpdatedPresentation(PresentableNodeDescriptor.java:76)
	at com.intellij.ide.util.treeView.PresentableNodeDescriptor.update(PresentableNodeDescriptor.java:29)
	at com.intellij.ui.tree.StructureTreeModel$Node.update(StructureTreeModel.java:453)
	at com.intellij.ui.tree.StructureTreeModel$Node.<init>(StructureTreeModel.java:435)
	at com.intellij.ui.tree.StructureTreeModel$Node.<init>(StructureTreeModel.java:427)
	at com.intellij.ui.tree.StructureTreeModel.getValidChildren(StructureTreeModel.java:389)
	at com.intellij.ui.tree.StructureTreeModel.validateChildren(StructureTreeModel.java:298)
	at com.intellij.ui.tree.StructureTreeModel.getNode(StructureTreeModel.java:292)
	at com.intellij.ui.tree.StructureTreeModel.getChildren(StructureTreeModel.java:312)
	at com.intellij.ui.tree.AsyncTreeModel$CmdGetChildren.getNode(AsyncTreeModel.java:561)
	at com.intellij.ui.tree.AsyncTreeModel$Command.get(AsyncTreeModel.java:456)
	at com.intellij.ui.tree.AsyncTreeModel$Command.get(AsyncTreeModel.java:422)
	at com.intellij.util.concurrency.Invoker$Task.run(Invoker.java:316)
	at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1137)
	at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runInReadActionWithWriteActionPriority$0(ProgressIndicatorUtils.java:76)
	at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runActionAndCancelBeforeWrite(ProgressIndicatorUtils.java:152)
	at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runWithWriteActionPriority$1(ProgressIndicatorUtils.java:113)
	at com.intellij.openapi.progress.ProgressManager.lambda$runProcess$0(ProgressManager.java:59)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:178)
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:658)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:610)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:65)
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:165)
	at com.intellij.openapi.progress.ProgressManager.runProcess(ProgressManager.java:59)
	at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runWithWriteActionPriority(ProgressIndicatorUtils.java:110)
	at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runInReadActionWithWriteActionPriority(ProgressIndicatorUtils.java:76)
	at com.intellij.util.concurrency.Invoker.invokeSafely(Invoker.java:205)
	at com.intellij.util.concurrency.Invoker.lambda$offerSafely$0(Invoker.java:183)
	at com.intellij.util.concurrency.Invoker$Background.lambda$offer$0(Invoker.java:541)
	at com.intellij.util.concurrency.BoundedTaskExecutor.doRun(BoundedTaskExecutor.java:216)
	at com.intellij.util.concurrency.BoundedTaskExecutor.access$200(BoundedTaskExecutor.java:27)
	at com.intellij.util.concurrency.BoundedTaskExecutor$1.execute(BoundedTaskExecutor.java:195)
	at com.intellij.util.ConcurrencyUtil.runUnderThreadName(ConcurrencyUtil.java:208)
	at com.intellij.util.concurrency.BoundedTaskExecutor$1.run(BoundedTaskExecutor.java:184)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:668)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:665)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:665)
	at java.base/java.lang.Thread.run(Thread.java:834)

Show templates in symbol search

In Jetbrains IDEs, it is possible to search for symbols (like fields, methods, ...) either by using "Search Everywhere" or selecting the symbol search tab:

Screenshot 2020-01-16 at 13 10 46

Being able to find templates in stg files this way would greatly improve navigation.

Incorrect highlighting inside strings

I've defined a map inside one of my templates:

typeMap ::= [
  "list<int>": "std::vector<int>",
  "list<long>": "std::vector<long>",
  "list<float>": "std::vector<float>",
  "list<double>": "std::vector<double>"
]

In the above code, <int>, <long>, ... are highlighted like attribute references.

Tab-to-indent does not respect indentation settings

I'm in an environment where the tab size is set to 3 (via an .editorconfig file, but not sure if that matters). When pressing Tab to indent a line within a template, it always indents by 4 spaces. Interestingly, when pressing Shift-Tab to de-indent, it removes 3 spaces. The correct behaviour would be that Tab indents by 3 spaces as well.

recording

Support `.st` files

Support .st file highlighting - I'm using Intellij and st4 to generate HTML and this would be awesome.

I'm willing to help, just not sure where to start with Intellij plugins. Any insight as to where to start would be helpful, too.

Setting custom delimiters doesn't work with new highlighting

Previously for group files it was possible to declare custom delimiters and the highlighter acted accordingly.

delimiters "%", "%"

base(a, b) ::= <<
<root>
  <first>%a%</first>
  <second>%b%</second>
</root>
>>

Now it always highlights only < and >

Looking at the old code, this was removed:

final Collection<ParseTree> delimiterStrings = XPath.findAll(tree, "//delimiters/STRING", parser);
int i = 0;
for (ParseTree s : delimiterStrings) {
delimiters[i++] = s.getText().charAt(1);
}

@Override
public Lexer getLexer(String text) {
STLexer lexer = new STLexer(new ANTLR3StringStream(text), templateToken, groupHighlighter.delimiters[0], groupHighlighter.delimiters[1]);
return lexer;
}

Highlight missing <endif>

Since there is no completion (#20) yet, it is easy to miss an <endif>. As such, it would be very useful if this fact were highlighted with an error indicator.

At runtime, this problem is reported as premature EOF at a seemingly random line in the file, which is very hard to figure out.

Screenshot 2019-12-19 at 12 59 47

Color settings page

Allow the syntax highlighting colors to be configured with a settings page.

Project should is not ready for checkout

It should be way to clone and build project somehow but now it is just dead. I even can't generate parser by antlr4 tool

so I was expecting the following flow

  1. clone
  2. generate parsers, aka './generate.sh`
  3. open project, select IDEA SDK
  4. Chose run configuration and run

Colors unusable in Dracula scheme

I am using dark Idea scheme Dracula and when I open the stg file, the colors are very bad because the default white palette is expected. It prevents the plugin to be usable.

The colors should take existing scheme or be configurable.
image

Auto-closing paired symbols

When typing new templates, it would be very useful if certain opening/closing constructs were autocompleted. This applies to:

  • the closing parenthesis after the argument list: foo( )
  • the template delimiters: << >>, <% %>, " "
  • placeholders < > (also for custom delimiters?)
  • ifs: <if( )> <endif>
  • anonymous templates: <foo:{ }>
  • ...?

Seems to make Java code yellow in 15.x

14 is ok but intellij 15.0.1 has all it's java code turn yellow but template names as black. template names should be yellow and it shouldn't touch java code.

Java can't find .stg files in IntelliJ

I'm using IntelliJ 15, ANTLR4, ST4 on Windows 7. PrettyPrint.stg is in the same directory as TestMain.java.

When I moved everything to Cloud9 it worked fine.

"C:\Program Files\Java\jdk1.8.0_65\bin\java" . . .
Exception in thread "main" java.lang.IllegalArgumentException: No such group file: PrettyPrint.stg
    at org.stringtemplate.v4.STGroupFile.<init>(STGroupFile.java:69)
    at org.stringtemplate.v4.STGroupFile.<init>(STGroupFile.java:48)
    at ms3.TestMain.main(TestMain.java:27)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)

Process finished with exit code 1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.