Plugin that I always had and always will have. Since 2024.3.2 its finally integrated in PhpStorm. Absolutely a must-have. Never had issues with it, except the occasional bug report I had to submit, but even then It still worked great.
Excellent plugin. I find a lot of open Tracker and support tickets asking for this from JB. Perhaps you could bundle it in? Some web searching shows many users still unclear to use this plugin.
Note: presently the plugin is out of date w.r.t. 2025.1 EAP.
java.lang.NoClassDefFoundError: Could not initialize class ru.adelf.idea.dotenv.util.EnvironmentVariablesProviderUtil
at ru.adelf.idea.dotenv.indexing.DotEnvKeyValuesIndex.lambda$getInputFilter$1(DotEnvKeyValuesIndex.java:64)
at com.intellij.util.indexing.FileBasedIndexEx.acceptsInput(FileBasedIndexEx.java:705)
at com.intellij.util.indexing.RequiredIndexesEvaluator$inputFilerToIndexedFilePredicate$1.test(RequiredIndexesEvaluator.kt:121)
at com.intellij.util.indexing.RequiredIndexesEvaluator$inputFilerToIndexedFilePredicate$1.test(RequiredIndexesEvaluator.kt:120)
at com.intellij.util.indexing.RequiredIndexesEvaluator$HintAwareIndexList.getRequiredIndexes(RequiredIndexesEvaluator.kt:78)
at com.intellij.util.indexing.RequiredIndexesEvaluator.getRequiredIndexesForRegularFiles(RequiredIndexesEvaluator.kt:227)
at com.intellij.util.indexing.RequiredIndexesEvaluator.getRequiredIndexes(RequiredIndexesEvaluator.kt:215)
at com.intellij.util.indexing.RegisteredIndexes.getRequiredIndexes(RegisteredIndexes.java:214)
at com.intellij.util.indexing.FileBasedIndexImpl.getRequiredIndexes(FileBasedIndexImpl.java:1548)
at com.intellij.util.indexing.FileBasedIndexImpl.lambda$scheduleFileForIndexing$31(FileBasedIndexImpl.java:1915)
at com.intellij.openapi.fileTypes.impl.FileTypeManagerImpl.lambda$freezeFileTypeTemporarilyWithProvidedValueIn$15(FileTypeManagerImpl.java:738)
at com.intellij.openapi.fileTypes.impl.FileTypeManagerImpl.cacheFileTypesInside(FileTypeManagerImpl.java:802)
at com.intellij.openapi.fileTypes.impl.FileTypeManagerImpl.freezeFileTypeTemporarilyWithProvidedValueIn(FileTypeManagerImpl.java:734)
at com.intellij.openapi.fileTypes.impl.FileTypeManagerImpl.freezeFileTypeTemporarilyIn(FileTypeManagerImpl.java:725)
at com.intellij.util.indexing.FileBasedIndexImpl.scheduleFileForIndexing(FileBasedIndexImpl.java:1910)
at com.intellij.util.indexing.events.ChangedFilesCollector$4.process(ChangedFilesCollector.java:195)
at com.intellij.util.indexing.events.ChangedFilesCollector$5.lambda$process$0(ChangedFilesCollector.java:242)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeNonCancelableSection$3(CoreProgressManager.java:269)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:735)
at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:691)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$computeInNonCancelableSection$4(CoreProgressManager.java:277)
at com.intellij.openapi.progress.Cancellation.computeInNonCancelableSection(Cancellation.java:62)
at com.intellij.openapi.progress.impl.CoreProgressManager.computeInNonCancelableSection(CoreProgressManager.java:277)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeNonCancelableSection(CoreProgressManager.java:268)
at com.intellij.util.indexing.events.ChangedFilesCollector$5.lambda$process$1(ChangedFilesCollector.java:241)
at com.intellij.util.ConcurrencyUtil.withLock(ConcurrencyUtil.java:246)
at com.intellij.util.indexing.events.ChangedFilesCollector$5.process(ChangedFilesCollector.java:239)
at com.intellij.util.indexing.events.VfsEventsMerger.processChanges(VfsEventsMerger.java:117)
at com.intellij.util.indexing.events.ChangedFilesCollector.processFilesInReadAction(ChangedFilesCollector.java:236)
at com.intellij.util.indexing.events.ChangedFilesCollector.processFilesToUpdateInReadAction(ChangedFilesCollector.java:184)
at com.intellij.util.indexing.events.ChangedFilesCollector.ensureUpToDate(ChangedFilesCollector.java:145)
at com.intellij.util.indexing.FileBasedIndexImpl.ensureUpToDate(FileBasedIndexImpl.java:805)
at com.intellij.util.indexing.FileBasedIndexEx.processExceptions(FileBasedIndexEx.java:303)
at com.intellij.util.indexing.FileBasedIndexEx.getFileData(FileBasedIndexEx.java:195)
at com.jetbrains.jsonSchema.impl.JsonSchemaFileValuesIndex.getCachedValue(JsonSchemaFileValuesIndex.java:80)
at com.jetbrains.jsonSchema.impl.JsonCachedValues.getSchemaUrlFromSchemaProperty(JsonCachedValues.java:70)
at com.jetbrains.jsonSchema.impl.JsonSchemaServiceImpl.lambda$getSchemaVersionFromSchemaUrl$8(JsonSchemaServiceImpl.java:434)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runReadAction$lambda$2(AnyThreadWriteThreadingSupport.kt:217)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runReadAction(AnyThreadWriteThreadingSupport.kt:228)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runReadAction(AnyThreadWriteThreadingSupport.kt:217)
at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:847)
at com.jetbrains.jsonSchema.impl.JsonSchemaServiceImpl.getSchemaVersionFromSchemaUrl(JsonSchemaServiceImpl.java:433)
at com.jetbrains.jsonSchema.impl.JsonSchemaServiceImpl.getSchemaVersion(JsonSchemaServiceImpl.java:419)
at com.jetbrains.jsonSchema.extension.JsonSchemaProjectSelfProviderFactory$MyJsonSchemaFileProvider.isAvailable(JsonSchemaProjectSelfProviderFactory.kt:51)
at com.jetbrains.jsonSchema.impl.JsonSchemaServiceImpl.isSchemaByProvider(JsonSchemaServiceImpl.java:398)
at com.jetbrains.jsonSchema.impl.JsonSchemaServiceImpl.isSchemaFile(JsonSchemaServiceImpl.java:371)
at com.jetbrains.jsonSchema.ide.JsonSchemaService.isSchemaFile(JsonSchemaService.java:31)
at com.jetbrains.jsonSchema.impl.JsonSchemaRegexInjector.getLanguagesToInject(JsonSchemaRegexInjector.java:17)
at com.intellij.psi.impl.source.tree.injected.InjectedLanguageManagerImpl.processInPlaceInjectorsFor(InjectedLanguageManagerImpl.java:494)
at com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtilBase.probeElementsUpInner(InjectedLanguageUtilBase.java:237)
at com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtilBase.lambda$probeElementsUp$0(InjectedLanguageUtilBase.java:217)
at com.intellij.openapi.application.impl.ReadActionCacheImpl$allowInWriteAction$1.invoke(ReadActionCacheImpl.kt:41)
at com.intellij.openapi.application.impl.ReadActionCacheImpl$allowInWriteAction$1.invoke(ReadActionCacheImpl.kt:41)
at com.intellij.openapi.application.impl.ReadActionCacheImpl.allowInWriteAction(ReadActionCacheImpl.kt:29)
at com.intellij.openapi.application.impl.ReadActionCacheImpl.allowInWriteAction(ReadActionCacheImpl.kt:41)
at com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtilBase.probeElementsUp(InjectedLanguageUtilBase.java:216)
at com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtilBase.enumerate(InjectedLanguageUtilBase.java:159)
at com.intellij.psi.impl.source.tree.injected.InjectedLanguageManagerImpl.enumerateEx(InjectedLanguageManagerImpl.java:379)
at com.intellij.codeInsight.daemon.impl.InjectedGeneralHighlightingPass.lambda$processInjectedPsiFiles$6(InjectedGeneralHighlightingPass.java:158)
at com.intellij.concurrency.ApplierCompleter.execAndForkSubTasks(ApplierCompleter.java:139)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.tryRunReadAction(AnyThreadWriteThreadingSupport.kt:279)
at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:965)
at com.intellij.concurrency.ApplierCompleter.lambda$wrapInReadActionAndIndicator$1(ApplierCompleter.java:96)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$13(CoreProgressManager.java:660)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:735)
at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:691)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:659)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:79)
at com.intellij.concurrency.ApplierCompleter.wrapInReadActionAndIndicator(ApplierCompleter.java:108)
at com.intellij.concurrency.ApplierCompleter.lambda$compute$0(ApplierCompleter.java:86)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.executeByImpatientReader(AnyThreadWriteThreadingSupport.kt:486)
at com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:179)
at com.intellij.concurrency.ApplierCompleter.compute(ApplierCompleter.java:86)
at com.intellij.concurrency.JobLauncherImpl.invokeConcurrentlyUnderProgress(JobLauncherImpl.java:66)
at com.intellij.concurrency.JobLauncher.invokeConcurrentlyUnderProgress(JobLauncher.java:52)
at com.intellij.codeInsight.daemon.impl.InjectedGeneralHighlightingPass.processInjectedPsiFiles(InjectedGeneralHighlightingPass.java:156)
at com.intellij.codeInsight.daemon.impl.InjectedGeneralHighlightingPass.collectInformationWithProgress(InjectedGeneralHighlightingPass.java:90)
at com.intellij.codeInsight.daemon.impl.ProgressableTextEditorHighlightingPass.doCollectInformation(ProgressableTextEditorHighlightingPass.java:84)
at com.intellij.codeHighlighting.TextEditorHighlightingPass.collectInformation(TextEditorHighlightingPass.java:57)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$2(PassExecutorService.java:418)
at com.intellij.platform.diagnostic.telemetry.helpers.TraceKt.runWithSpanIgnoreThrows(trace.kt:118)
at com.intellij.platform.diagnostic.telemetry.helpers.TraceUtil.runWithSpanThrows(TraceUtil.java:36)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$3(PassExecutorService.java:413)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.tryRunReadAction(AnyThreadWriteThreadingSupport.kt:291)
at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:965)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$4(PassExecutorService.java:404)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$13(CoreProgressManager.java:660)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:735)
at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:691)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:659)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:79)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.doRun(PassExecutorService.java:403)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$run$0(PassExecutorService.java:379)
at com.intellij.openapi.fileTypes.impl.FileTypeManagerImpl.cacheFileTypesInside(FileTypeManagerImpl.java:802)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$run$1(PassExecutorService.java:379)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.executeByImpatientReader(AnyThreadWriteThreadingSupport.kt:486)
at com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:179)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.run(PassExecutorService.java:377)
at com.intellij.concurrency.JobLauncherImpl$VoidForkJoinTask$1.exec(JobLauncherImpl.java:190)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:507)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1491)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:2073)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:2035)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:187)
Caused by: java.lang.ExceptionInInitializerError: Exception com.intellij.openapi.application.ReadAction$CannotReadException [in thread "DefaultDispatcher-worker-36"]
at com.intellij.openapi.application.ReadAction$CannotReadException.lambda$jobCancellation$0(ReadAction.java:128)
at com.intellij.openapi.progress.util.ProgressIndicatorUtilService.cancelActionsToBeCancelledBeforeWrite(ProgressIndicatorUtilService.java:49)
at com.intellij.openapi.progress.util.ProgressIndicatorUtilService$1.beforeWriteActionStart(ProgressIndicatorUtilService.java:35)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at com.intellij.util.EventDispatcher.dispatchVoidMethod(EventDispatcher.java:119)
at com.intellij.util.EventDispatcher.lambda$createMulticaster$1(EventDispatcher.java:84)
at jdk.proxy2/jdk.proxy2.$Proxy60.beforeWriteActionStart(Unknown Source)
at com.intellij.openapi.application.impl.ApplicationImpl.fireBeforeWriteActionStart(ApplicationImpl.java:1049)
at com.intellij.openapi.application.impl.ApplicationImpl.beforeWriteActionStart(ApplicationImpl.java:1202)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.fireBeforeWriteActionStart(AnyThreadWriteThreadingSupport.kt:549)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.startWrite(AnyThreadWriteThreadingSupport.kt:351)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWriteAction(AnyThreadWriteThreadingSupport.kt:326)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runEdtProgressWriteAction(AnyThreadWriteThreadingSupport.kt:427)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWriteActionWithNonCancellableProgressInDispatchThread(AnyThreadWriteThreadingSupport.kt:413)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteActionWithNonCancellableProgressInDispatchThread(ApplicationImpl.java:876)
at com.intellij.openapi.vfs.newvfs.RefreshSessionImpl.fireEvents(RefreshSessionImpl.java:221)
at com.intellij.openapi.vfs.newvfs.RefreshQueueImpl.fireEvents(RefreshQueueImpl.java:150)
at com.intellij.openapi.vfs.newvfs.RefreshQueueImpl.lambda$queueSession$5(RefreshQueueImpl.java:127)
at com.intellij.openapi.application.constraints.ConstrainedTaskExecutor.lambda$submit$1(ConstrainedTaskExecutor.java:41)
at com.intellij.openapi.application.constraints.ConstrainedTaskExecutor.lambda$submit$4(ConstrainedTaskExecutor.java:64)
at com.intellij.openapi.application.constraints.BaseConstrainedExecution$Companion.scheduleWithinConstraints$inner(BaseConstrainedExecution.kt:68)
at com.intellij.openapi.application.constraints.BaseConstrainedExecution$Companion.access$scheduleWithinConstraints$inner(BaseConstrainedExecution.kt:40)
at com.intellij.openapi.application.constraints.BaseConstrainedExecution$Companion$scheduleWithinConstraints$inner$$inlined$Runnable$1.run(Runnable.kt:20)
at com.intellij.openapi.application.impl.AppUIExecutorImpl$later$1$schedule$$inlined$Runnable$1.run(Runnable.kt:16)
at com.intellij.util.concurrency.ContextRunnable.run(ContextRunnable.java:27)
at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:229)
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.AnyThreadWriteThreadingSupport.runIntendedWriteActionOnCurrentThread$lambda$1(AnyThreadWriteThreadingSupport.kt:184)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWriteIntentReadAction(AnyThreadWriteThreadingSupport.kt:84)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runIntendedWriteActionOnCurrentThread(AnyThreadWriteThreadingSupport.kt:183)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:836)
at com.intellij.openapi.application.impl.ApplicationImpl$2.run(ApplicationImpl.java:425)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWithImplicitRead(AnyThreadWriteThreadingSupport.kt:122)
at com.intellij.openapi.application.impl.ApplicationImpl.runWithImplicitRead(ApplicationImpl.java:1162)
at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:78)
at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:119)
at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:41)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:781)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:728)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:750)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:696)
at com.intellij.ide.IdeEventQueue._dispatchEvent$lambda$16(IdeEventQueue.kt:590)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWithoutImplicitRead(AnyThreadWriteThreadingSupport.kt:117)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:590)
at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:73)
at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1$1.compute(IdeEventQueue.kt:357)
at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1$1.compute(IdeEventQueue.kt:356)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:843)
at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.invoke(IdeEventQueue.kt:356)
at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.invoke(IdeEventQueue.kt:351)
at com.intellij.ide.IdeEventQueueKt$performActivity$runnableWithWIL$1.invoke$lambda$0(IdeEventQueue.kt:1035)
at com.intellij.openapi.application.WriteIntentReadAction.lambda$run$0(WriteIntentReadAction.java:24)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWriteIntentReadAction(AnyThreadWriteThreadingSupport.kt:84)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteIntentReadAction(ApplicationImpl.java:910)
at com.intellij.openapi.application.WriteIntentReadAction.compute(WriteIntentReadAction.java:55)
at com.intellij.openapi.application.WriteIntentReadAction.run(WriteIntentReadAction.java:23)
at com.intellij.ide.IdeEventQueueKt$performActivity$runnableWithWIL$1.invoke(IdeEventQueue.kt:1035)
at com.intellij.ide.IdeEventQueueKt$performActivity$runnableWithWIL$1.invoke(IdeEventQueue.kt:1035)
at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:1036)
at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:106)
at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:1036)
at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$10(IdeEventQueue.kt:351)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:397)
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)
Our website uses some cookies and records your IP address for the purposes of accessibility, security, and managing your access to the telecommunication network. You can disable data collection and cookies by changing your browser settings, but it may affect how this website functions. Learn more.
With your consent, JetBrains may also use cookies and your IP address to collect individual statistics and provide you with personalized offers and ads subject to the Privacy Notice and the Terms of Use. JetBrains may use third-party services for this purpose. You can adjust or withdraw your consent at any time by visiting the Opt-Out page.
sime-arsov
21.01.2025Plugin that I always had and always will have. Since 2024.3.2 its finally integrated in PhpStorm. Absolutely a must-have. Never had issues with it, except the occasional bug report I had to submit, but even then It still worked great.