investflow / mqlidea

MQL4 plugin for Intellij Idea
http://investflow.ru/mqlidea
GNU General Public License v3.0
52 stars 20 forks source link

IDEA & PyCharm 2021.2.4 Compatibility issue #17

Open Lhfcws opened 2 years ago

Lhfcws commented 2 years ago

I both tested mqlidea(211.1.0) in IDEA and PyCharm.

1. IDEA mqh file identification issue

In IDEA, highlight feature in mq4 file looks fine, while it seems to be incapable to identify mqh files (no hightlight, no navigation, just like nothing activated). image

However, mqh identification looks fine in PyCharm.

2. An IDE stacktrace reported

Everytime I start IDEA or PyCharm, an IDE error report is always popped up. Click it and find it with a stacktrace as below. I’m not familiar with Intellij plugin codes, so I'm not sure if it is important or it has something to do with the first problem I proposed above.

Calling `ClassLoader#getResource` with leading slash doesn't work; strip

com.intellij.diagnostic.PluginException: /mql/doc/mql4-constants.json [Plugin: ru.investflow.mql]
    at com.intellij.ide.plugins.cl.PluginClassLoader.doFindResource(PluginClassLoader.java:492)
    at com.intellij.ide.plugins.cl.PluginClassLoader.getResourceAsStream(PluginClassLoader.java:462)
    at ru.investflow.mql.doc.MQL4DocumentationProvider.loadResource(MQL4DocumentationProvider.java:61)
    at ru.investflow.mql.doc.MQL4DocumentationProvider.ensureResourcesAreLoaded(MQL4DocumentationProvider.java:52)
    at ru.investflow.mql.doc.MQL4DocumentationProvider.getEntryByText(MQL4DocumentationProvider.java:77)
    at ru.investflow.mql.editor.MQL4SyntaxHighlighter$MQL4HighlighterLexer.advance(MQL4SyntaxHighlighter.java:111)
    at com.intellij.lexer.FlexAdapter.locateToken(FlexAdapter.java:93)
    at com.intellij.lexer.FlexAdapter.getTokenType(FlexAdapter.java:52)
    at com.intellij.openapi.editor.ex.util.ValidatingLexerWrapper.getTokenType(ValidatingLexerWrapper.java:50)
    at com.intellij.openapi.editor.ex.util.ValidatingLexerWrapper.advance(ValidatingLexerWrapper.java:87)
    at com.intellij.openapi.editor.ex.util.LexerEditorHighlighter.doSetText(LexerEditorHighlighter.java:453)
    at com.intellij.openapi.editor.ex.util.LexerEditorHighlighter.setText(LexerEditorHighlighter.java:420)
    at com.intellij.openapi.fileEditor.impl.text.TextEditorImpl.loadEditorInBackground(TextEditorImpl.java:74)
    at com.intellij.openapi.fileEditor.impl.text.PsiAwareTextEditorImpl.loadEditorInBackground(PsiAwareTextEditorImpl.java:42)
    at com.intellij.openapi.fileEditor.impl.text.AsyncEditorLoader.lambda$scheduleLoading$0(AsyncEditorLoader.java:95)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:825)
    at com.intellij.openapi.fileEditor.impl.text.AsyncEditorLoader.lambda$scheduleLoading$1(AsyncEditorLoader.java:93)
    at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.insideReadAction(NonBlockingReadActionImpl.java:521)
    at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.lambda$attemptComputation$3(NonBlockingReadActionImpl.java:486)
    at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1078)
    at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runInReadActionWithWriteActionPriority$0(ProgressIndicatorUtils.java:78)
    at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runActionAndCancelBeforeWrite(ProgressIndicatorUtils.java:161)
    at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runWithWriteActionPriority$1(ProgressIndicatorUtils.java:118)
    at com.intellij.openapi.progress.ProgressManager.lambda$runProcess$0(ProgressManager.java:57)
    at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:183)
    at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:705)
    at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:647)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:63)
    at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:170)
    at com.intellij.openapi.progress.ProgressManager.runProcess(ProgressManager.java:57)
    at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runWithWriteActionPriority(ProgressIndicatorUtils.java:115)
    at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runInReadActionWithWriteActionPriority(ProgressIndicatorUtils.java:78)
    at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.attemptComputation(NonBlockingReadActionImpl.java:486)
    at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.lambda$transferToBgThread$1(NonBlockingReadActionImpl.java:407)
    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:213)
    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:829)

Thank you for the mqlidea project. A great work for mql devs.


IntelliJ IDEA 2021.2.4 (Ultimate Edition) Build #IU-212.5712.43, built on December 21, 2021 Licensed to Lhfcws Wu Subscription is active until June 15, 2022. Runtime version: 11.0.13+8-b1504.49 x86_64 VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o. macOS 11.5.2 GC: ParNew, ConcurrentMarkSweep Memory: 2014M Cores: 4 Non-Bundled Plugins: Pythonid (212.5712.43), ru.investflow.mql (211.1.0) Kotlin: 212-1.6.10-release-923-IJ5457.46

PyCharm 2021.2.4 (Professional Edition) Build #PY-212.5712.39, built on December 21, 2021 Licensed to Lhfcws Wu Subscription is active until June 15, 2022. Runtime version: 11.0.13+8-b1504.49 x86_64 VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o. macOS 11.5.2 GC: ParNew, ConcurrentMarkSweep Memory: 2014M Cores: 4 Non-Bundled Plugins: com.mallowigi.imageicon (10.0.0), ru.investflow.mql (211.1.0), com.jetbrains.intellij.datalore (0.1.14-212)

sxp commented 2 years ago

I fix it on #18 .

You can update it from here: https://github.com/sxp/mqlidea/releases/tag/v211.1.0-sxp-bugfix

Lhfcws commented 2 years ago

I fix it on #18 .

You can update it from here: https://github.com/sxp/mqlidea/releases/tag/v211.1.0-sxp-bugfix

Thank you! Although syntax highlight of .mqh still doesn't work somehow, no error stacktrace alert anymore!

PinkPanther-ny commented 9 months ago

Thank you, the plugin can support Pycharm, clion, intellij at 2023.2 version. Code insight works, but new error occur when adding new 'MQL Build' configuration, (cannot add config)

java.lang.IllegalArgumentException: Argument for @NotNull parameter 'field' of com/intellij/execution/configuration/BrowseModuleValueActionListener.setField must not be null at com.intellij.execution.configuration.BrowseModuleValueActionListener.$$$reportNull$$$0(BrowseModuleValueActionListener.java) at com.intellij.execution.configuration.BrowseModuleValueActionListener.setField(BrowseModuleValueActionListener.java) at ru.investflow.mql.runconfig.ui.MQL4CompilerRunnerEditor.(MQL4CompilerRunnerEditor.java:40) at ru.investflow.mql.runconfig.MQL4RunCompilerConfiguration.getConfigurationEditor(MQL4RunCompilerConfiguration.java:75) at com.intellij.execution.impl.ConfigurationSettingsEditorWrapper.createWrapper(ConfigurationSettingsEditorWrapper.java:193) at com.intellij.execution.impl.SingleConfigurationConfigurable.(SingleConfigurationConfigurable.java:77) at com.intellij.execution.impl.SingleConfigurationConfigurable.editSettings(SingleConfigurationConfigurable.java:116) at com.intellij.execution.impl.RunConfigurable.createNewConfiguration(RunConfigurable.kt:876) at com.intellij.execution.impl.RunConfigurable.createNewConfiguration(RunConfigurable.kt:911) at com.intellij.execution.impl.RunConfigurable$MyToolbarAddAction$showAddPopup$popup$1.invoke(RunConfigurable.kt:951) at com.intellij.execution.impl.RunConfigurable$MyToolbarAddAction$showAddPopup$popup$1.invoke(RunConfigurable.kt:948) at com.intellij.execution.impl.RunConfigurable$MyToolbarAddAction.showAddPopup$lambda$0(RunConfigurable.kt:951) at com.intellij.execution.impl.NewRunConfigurationPopup$5.onChosen(NewRunConfigurationPopup.java:246) at com.intellij.ui.popup.tree.TreePopupImpl.handleSelect(TreePopupImpl.java:318) at com.intellij.ui.popup.tree.TreePopupImpl$MyMouseListener.mousePressed(TreePopupImpl.java:267) at java.desktop/java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:288) at java.desktop/java.awt.Component.processMouseEvent(Component.java:6654) at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3385) at com.intellij.ui.treeStructure.Tree.processMouseEvent(Tree.java:437) at java.desktop/java.awt.Component.processEvent(Component.java:6422) at java.desktop/java.awt.Container.processEvent(Container.java:2266) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5027) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4855) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4954) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4578) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4522) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2808) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4855) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:794) 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.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:766) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:764) 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:763) at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:685) at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.kt:633) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:588) at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:67) at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:369) at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:368) at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:787) at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:368) at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:363) at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:992) at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:105) at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:992) at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$7(IdeEventQueue.kt:363) at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:861) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:405) 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.pumpEventsForFilter(EventDispatchThread.java:121) at java.desktop/java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:191) at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:236) at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:234) at java.base/java.security.AccessController.doPrivileged(AccessController.java:318) at java.desktop/java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:234) at java.desktop/java.awt.Dialog.lambda$show$2(Dialog.java:1081) at java.desktop/sun.awt.SunToolkit.performOnMainThreadIfNeeded(SunToolkit.java:2164) at java.desktop/java.awt.Dialog.show(Dialog.java:1041) at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.show(DialogWrapperPeerImpl.java:737) at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show(DialogWrapperPeerImpl.java:462) at com.intellij.openapi.ui.DialogWrapper.doShow(DialogWrapper.java:1685) at com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:1643) at com.intellij.execution.actions.EditRunConfigurationsAction.actionPerformed(EditRunConfigurationsAction.java:39) at com.intellij.openapi.actionSystem.ex.ActionUtil.doPerformActionOrShowPopup(ActionUtil.java:339) at com.intellij.openapi.actionSystem.ex.ActionUtil.lambda$performActionDumbAwareWithCallbacks$4(ActionUtil.java:313) at com.intellij.openapi.actionSystem.ex.ActionUtil.performDumbAwareWithCallbacks(ActionUtil.java:362) at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAwareWithCallbacks(ActionUtil.java:313) at com.intellij.openapi.actionSystem.ex.ActionUtil.invokeAction(ActionUtil.java:538) at com.intellij.ui.popup.ActionPopupStep.performAction(ActionPopupStep.java:266) at com.intellij.ui.popup.ActionPopupStep.lambda$onChosen$3(ActionPopupStep.java:243) at com.intellij.ui.popup.AbstractPopup.lambda$dispose$18(AbstractPopup.java:1625) at com.intellij.openapi.wm.impl.FocusManagerImpl.lambda$doWhenFocusSettlesDown$3(FocusManagerImpl.java:173) at com.intellij.util.ui.EdtInvocationManager.invokeLaterIfNeeded(EdtInvocationManager.java:33) at com.intellij.ide.IdeEventQueue.ifFocusEventsInTheQueue(IdeEventQueue.kt:210) at com.intellij.ide.IdeEventQueue.executeWhenAllFocusEventsLeftTheQueue(IdeEventQueue.kt:176) at com.intellij.openapi.wm.impl.FocusManagerImpl.doWhenFocusSettlesDown(FocusManagerImpl.java:169) at com.intellij.openapi.wm.impl.FocusManagerImpl.doWhenFocusSettlesDown(FocusManagerImpl.java:163) at com.intellij.ui.popup.AbstractPopup.dispose(AbstractPopup.java:1623) at com.intellij.ui.popup.WizardPopup.dispose(WizardPopup.java:165) at com.intellij.ui.popup.list.ListPopupImpl.dispose(ListPopupImpl.java:394) at com.intellij.ui.popup.PopupFactoryImpl$ActionGroupPopup.dispose(PopupFactoryImpl.java:293) at com.intellij.openapi.util.ObjectTree.runWithTrace(ObjectTree.java:129) at com.intellij.openapi.util.ObjectTree.executeAll(ObjectTree.java:161) at com.intellij.openapi.util.Disposer.dispose(Disposer.java:262) at com.intellij.openapi.util.Disposer.dispose(Disposer.java:250) at com.intellij.ui.popup.WizardPopup.disposeAllParents(WizardPopup.java:273) at com.intellij.ui.popup.list.ListPopupImpl.disposePopup(ListPopupImpl.java:496) at com.intellij.ui.popup.list.ListPopupImpl.handleNextStep(ListPopupImpl.java:523) at com.intellij.ui.popup.list.ListPopupImpl._handleSelect(ListPopupImpl.java:483) at com.intellij.ui.popup.list.ListPopupImpl.handleSelect(ListPopupImpl.java:429) at com.intellij.ui.popup.PopupFactoryImpl$ActionGroupPopup.handleSelect(PopupFactoryImpl.java:305) at com.intellij.ui.popup.list.ListPopupImpl$MyMouseListener.mouseReleased(ListPopupImpl.java:699) at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:298) at java.desktop/java.awt.Component.processMouseEvent(Component.java:6657) at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3385) at com.intellij.ui.popup.list.ListPopupImpl$MyList.processMouseEvent(ListPopupImpl.java:764) at java.desktop/java.awt.Component.processEvent(Component.java:6422) at java.desktop/java.awt.Container.processEvent(Container.java:2266) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5027) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4855) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4954) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4581) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4522) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2808) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4855) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:794) 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.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:766) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:764) 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:763) at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:685) at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.kt:633) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:588) at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:67) at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:369) at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:368) at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:787) at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:368) at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:363) at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:992) at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:113) at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:992) at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$7(IdeEventQueue.kt:363) at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:861) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:405) 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)