From e5f734d70b3b0edbc637cdd455ca288d22ef9058 Mon Sep 17 00:00:00 2001 From: manodnyab <66754471+manodnyab@users.noreply.github.com> Date: Fri, 27 Jun 2025 13:01:49 -0700 Subject: [PATCH 1/7] deps(amazonq): Add registry entry for endpoint (#5838) --- .../services/amazonq/lsp/artifacts/ManifestFetcher.kt | 9 ++++++--- plugins/amazonq/src/main/resources/META-INF/plugin.xml | 3 +++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/artifacts/ManifestFetcher.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/artifacts/ManifestFetcher.kt index ea85bf52e52..aa6ca22538d 100644 --- a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/artifacts/ManifestFetcher.kt +++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/artifacts/ManifestFetcher.kt @@ -7,6 +7,7 @@ import com.fasterxml.jackson.annotation.JsonProperty import com.fasterxml.jackson.databind.DeserializationFeature import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import com.fasterxml.jackson.module.kotlin.readValue +import com.intellij.openapi.util.registry.Registry import org.jetbrains.annotations.VisibleForTesting import software.aws.toolkits.core.utils.deleteIfExists import software.aws.toolkits.core.utils.error @@ -21,15 +22,17 @@ import software.aws.toolkits.jetbrains.core.saveFileFromUrl import java.nio.file.Path class ManifestFetcher( - private val lspManifestUrl: String = DEFAULT_MANIFEST_URL, + private val lspManifestUrl: String = getManifestEndpoint(), private val manifestPath: Path = DEFAULT_MANIFEST_PATH, ) { companion object { private val mapper = jacksonObjectMapper().apply { configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) } private val logger = getLogger() - private const val DEFAULT_MANIFEST_URL = - "https://aws-toolkit-language-servers.amazonaws.com/qAgenticChatServer/0/manifest.json" + private fun getManifestEndpoint(): String { + val endpoint = Registry.get("amazon.q.flare.endpoint").asString() + return endpoint.ifBlank { "https://aws-toolkit-language-servers.amazonaws.com/qAgenticChatServer/0/manifest.json" } + } private val DEFAULT_MANIFEST_PATH: Path = getToolkitsCommonCacheRoot() .resolve("aws") diff --git a/plugins/amazonq/src/main/resources/META-INF/plugin.xml b/plugins/amazonq/src/main/resources/META-INF/plugin.xml index fa53216c64e..c5ab511b4fc 100644 --- a/plugins/amazonq/src/main/resources/META-INF/plugin.xml +++ b/plugins/amazonq/src/main/resources/META-INF/plugin.xml @@ -74,6 +74,9 @@ restartRequired="true"/> + From 304012ac98e15905bf1626cc63c49ddf3c41e170 Mon Sep 17 00:00:00 2001 From: Richard Li <742829+rli@users.noreply.github.com> Date: Thu, 26 Jun 2025 15:44:07 -0700 Subject: [PATCH 2/7] fix(amazonq): disable ModuleDependenciesService (#5857) Users not in the cohort are getting issues even though they should not be hitting the Flare code path at all --- .../jetbrains/services/amazonq/lsp/AmazonQLspService.kt | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLspService.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLspService.kt index 6c56a6d6868..1d55f797024 100644 --- a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLspService.kt +++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLspService.kt @@ -73,7 +73,6 @@ import software.aws.toolkits.core.utils.writeText import software.aws.toolkits.jetbrains.core.coroutines.ioDispatcher import software.aws.toolkits.jetbrains.services.amazonq.lsp.artifacts.ArtifactManager import software.aws.toolkits.jetbrains.services.amazonq.lsp.auth.DefaultAuthCredentialsService -import software.aws.toolkits.jetbrains.services.amazonq.lsp.dependencies.DefaultModuleDependenciesService import software.aws.toolkits.jetbrains.services.amazonq.lsp.encryption.JwtEncryptionManager import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.AmazonQLspTypeAdapterFactory import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.AwsExtendedInitializeResult @@ -590,9 +589,9 @@ private class AmazonQServerInstance(private val project: Project, private val cs WorkspaceServiceHandler(project, cs, lspInitResult).also { Disposer.register(this, it) } - DefaultModuleDependenciesService(project, cs).also { - Disposer.register(this, it) - } + // DefaultModuleDependenciesService(project, cs).also { + // Disposer.register(this, it) + // } } } } From 0095860469960c2ca9874ec2f9170a52152dc3ac Mon Sep 17 00:00:00 2001 From: Richard Li <742829+rli@users.noreply.github.com> Date: Fri, 27 Jun 2025 13:59:56 -0700 Subject: [PATCH 3/7] feat(amazonq): add exit logs for lsp (#5861) --- .../services/amazonq/lsp/AmazonQLanguageClientImpl.kt | 1 + .../jetbrains/services/amazonq/lsp/AmazonQLspService.kt | 3 +++ 2 files changed, 4 insertions(+) diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt index aa89026ee8a..31eaa4d86b4 100644 --- a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt +++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt @@ -149,6 +149,7 @@ class AmazonQLanguageClientImpl(private val project: Project) : AmazonQLanguageC MessageType.Error -> Level.ERROR MessageType.Warning -> Level.WARN MessageType.Info, MessageType.Log -> Level.INFO + else -> Level.WARN } if (type == Level.ERROR && diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLspService.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLspService.kt index 1d55f797024..9f115b05776 100644 --- a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLspService.kt +++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLspService.kt @@ -119,10 +119,13 @@ internal class LSPProcessListener : ProcessListener { } } else if (ProcessOutputType.isStderr(outputType)) { LOG.warn { "LSP process stderr: ${event.text}" } + } else if (outputType == ProcessOutputType.SYSTEM) { + LOG.info { "LSP system events: ${event.text}" } } } override fun processTerminated(event: ProcessEvent) { + LOG.info { "LSP process terminated with exit code ${event.exitCode}" } try { this.outputStreamWriter.close() this.outputStream.close() From 0959e55b5d5fbd7cc84f756273a01912ac50031e Mon Sep 17 00:00:00 2001 From: aws-toolkit-automation <> Date: Fri, 27 Jun 2025 21:04:36 +0000 Subject: [PATCH 4/7] Updating version to 3.81 --- .changes/3.81.json | 5 +++++ CHANGELOG.md | 2 ++ gradle.properties | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 .changes/3.81.json diff --git a/.changes/3.81.json b/.changes/3.81.json new file mode 100644 index 00000000000..dd2daf832d2 --- /dev/null +++ b/.changes/3.81.json @@ -0,0 +1,5 @@ +{ + "date" : "2025-06-27", + "version" : "3.81", + "entries" : [ ] +} \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a7f672ec89..4f7b7b11a96 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,5 @@ +# _3.81_ (2025-06-27) + # _3.80_ (2025-06-26) - **(Feature)** Amazon Q inline: now display completions much more consistently at the user's current caret position - **(Feature)** Amazon Q inline: now Q completions can co-exist with JetBrains' native IntelliSense completions, when both are showing, press Tab or your customized key shortcuts to accept Q completions and press Enter to accept IntelliSense completions. diff --git a/gradle.properties b/gradle.properties index 3ad178e3951..618f3fd1e15 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ # SPDX-License-Identifier: Apache-2.0 # Toolkit Version -toolkitVersion=3.81-SNAPSHOT +toolkitVersion=3.81 # Publish Settings publishToken= From 02e1e0210022f4292cd8537f1915574eb4487dd1 Mon Sep 17 00:00:00 2001 From: aws-toolkit-automation <> Date: Fri, 27 Jun 2025 23:14:07 +0000 Subject: [PATCH 5/7] Updating SNAPSHOT version to 3.82-SNAPSHOT --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 618f3fd1e15..b905783ae75 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ # SPDX-License-Identifier: Apache-2.0 # Toolkit Version -toolkitVersion=3.81 +toolkitVersion=3.82-SNAPSHOT # Publish Settings publishToken= From d487d4780b0232b423be3ef09d7e7a4e986d6017 Mon Sep 17 00:00:00 2001 From: David <60020664+dhasani23@users.noreply.github.com> Date: Tue, 1 Jul 2025 11:36:35 -0700 Subject: [PATCH 6/7] fix(amazonq): emit metric (#5864) Modify text in some places, and modify the manifest to include the IDE field. --- .../codemodernizer/controller/CodeTransformChatController.kt | 3 ++- .../jetbrains/services/codemodernizer/model/ZipManifest.kt | 2 +- .../services/codemodernizer/state/CodeModernizerState.kt | 3 ++- plugins/amazonq/mynah-ui/src/mynah-ui/ui/tabs/generator.ts | 2 +- .../software/aws/toolkits/resources/MessagesBundle.properties | 4 ++-- 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/controller/CodeTransformChatController.kt b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/controller/CodeTransformChatController.kt index 0bb237c9bda..7e1989528a8 100644 --- a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/controller/CodeTransformChatController.kt +++ b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/controller/CodeTransformChatController.kt @@ -102,6 +102,7 @@ import software.aws.toolkits.jetbrains.services.codemodernizer.model.CustomerSel import software.aws.toolkits.jetbrains.services.codemodernizer.model.DownloadArtifactResult import software.aws.toolkits.jetbrains.services.codemodernizer.model.DownloadFailureReason import software.aws.toolkits.jetbrains.services.codemodernizer.model.EXPLAINABILITY_V1 +import software.aws.toolkits.jetbrains.services.codemodernizer.model.IDE import software.aws.toolkits.jetbrains.services.codemodernizer.model.InvalidTelemetryReason import software.aws.toolkits.jetbrains.services.codemodernizer.model.JobId import software.aws.toolkits.jetbrains.services.codemodernizer.model.MAVEN_BUILD_RUN_UNIT_TESTS @@ -418,7 +419,7 @@ class CodeTransformChatController( codeModernizerManager.codeTransformationSession?.let { it.sessionContext.customBuildCommand = customBuildCommand } - val transformCapabilities = listOf(EXPLAINABILITY_V1, CLIENT_SIDE_BUILD, SELECTIVE_TRANSFORMATION_V2) + val transformCapabilities = listOf(EXPLAINABILITY_V1, CLIENT_SIDE_BUILD, SELECTIVE_TRANSFORMATION_V2, IDE) codeModernizerManager.codeTransformationSession?.let { it.sessionContext.transformCapabilities = transformCapabilities } diff --git a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/model/ZipManifest.kt b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/model/ZipManifest.kt index eb7cbe54812..4ad61c8476b 100644 --- a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/model/ZipManifest.kt +++ b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/model/ZipManifest.kt @@ -8,7 +8,7 @@ data class ZipManifest( val dependenciesRoot: String = ZIP_DEPENDENCIES_PATH, val version: String = UPLOAD_ZIP_MANIFEST_VERSION, val hilCapabilities: List = listOf(HIL_1P_UPGRADE_CAPABILITY), - val transformCapabilities: List = listOf(EXPLAINABILITY_V1, CLIENT_SIDE_BUILD, SELECTIVE_TRANSFORMATION_V2), + val transformCapabilities: List = listOf(EXPLAINABILITY_V1, CLIENT_SIDE_BUILD, SELECTIVE_TRANSFORMATION_V2, IDE), val customBuildCommand: String = MAVEN_BUILD_RUN_UNIT_TESTS, val requestedConversions: RequestedConversions? = null, // only used for SQL conversions for now var dependencyUpgradeConfigFile: String? = null, diff --git a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/state/CodeModernizerState.kt b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/state/CodeModernizerState.kt index 2c8f30975e6..d509d944aeb 100644 --- a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/state/CodeModernizerState.kt +++ b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/state/CodeModernizerState.kt @@ -10,6 +10,7 @@ import com.intellij.util.xmlb.annotations.Property import software.aws.toolkits.jetbrains.services.codemodernizer.model.CLIENT_SIDE_BUILD import software.aws.toolkits.jetbrains.services.codemodernizer.model.CodeModernizerSessionContext import software.aws.toolkits.jetbrains.services.codemodernizer.model.EXPLAINABILITY_V1 +import software.aws.toolkits.jetbrains.services.codemodernizer.model.IDE import software.aws.toolkits.jetbrains.services.codemodernizer.model.JobId import software.aws.toolkits.jetbrains.services.codemodernizer.model.MAVEN_BUILD_RUN_UNIT_TESTS import software.aws.toolkits.jetbrains.services.codemodernizer.model.SELECTIVE_TRANSFORMATION_V2 @@ -69,7 +70,7 @@ class CodeModernizerState : BaseState() { configurationFile, sourceJavaSdkVersion, targetJavaSdkVersion, - listOf(EXPLAINABILITY_V1, SELECTIVE_TRANSFORMATION_V2, CLIENT_SIDE_BUILD), + listOf(EXPLAINABILITY_V1, SELECTIVE_TRANSFORMATION_V2, CLIENT_SIDE_BUILD, IDE), lastJobContext[JobDetails.CUSTOM_BUILD_COMMAND] ?: MAVEN_BUILD_RUN_UNIT_TESTS // default to running unit tests ) } diff --git a/plugins/amazonq/mynah-ui/src/mynah-ui/ui/tabs/generator.ts b/plugins/amazonq/mynah-ui/src/mynah-ui/ui/tabs/generator.ts index 22ae12e5433..3ea71cec291 100644 --- a/plugins/amazonq/mynah-ui/src/mynah-ui/ui/tabs/generator.ts +++ b/plugins/amazonq/mynah-ui/src/mynah-ui/ui/tabs/generator.ts @@ -67,7 +67,7 @@ What would you like to work on?`, ], [ 'codetransform', - `Welcome to Code Transformation! You can also run transformations from the command line. To install the tool, see the [documentation](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/run-CLI-transformations.html).`, + `Welcome to Code Transformation! **You can also run transformations from the command line. To install the tool, see the [documentation](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/run-CLI-transformations.html).**`, ], [ 'doc', diff --git a/plugins/core/resources/resources/software/aws/toolkits/resources/MessagesBundle.properties b/plugins/core/resources/resources/software/aws/toolkits/resources/MessagesBundle.properties index 7eaa9e89585..46236427ae9 100644 --- a/plugins/core/resources/resources/software/aws/toolkits/resources/MessagesBundle.properties +++ b/plugins/core/resources/resources/software/aws/toolkits/resources/MessagesBundle.properties @@ -707,7 +707,7 @@ codemodernizer.chat.message.upload_failed_other=Sorry, I was unable to upload yo codemodernizer.chat.message.upload_failed_ssl_error=Sorry, I was unable to upload your project. This might have been caused by your IDE not trusting the certificate of your HTTP proxy. Ensure all certificates for your proxy client have been configured in your IDE, and then retry transformation. codemodernizer.chat.message.upload_failed_url_expired=Sorry, I couldn't upload your project to begin the transformation. The Amazon S3 pre-signed URL used to upload your code expired after 30 minutes. This might have been caused by delays introduced by intermediate services in your network infrastructure.\n\nCheck your network configuration for services that might be causing delays. If the issue persists, you might need to allow list the following Amazon S3 bucket: 'amazonq-code-transformation-us-east-1-c6160f047e0.s3.amazonaws.com'. codemodernizer.chat.message.validation.check_eligible_modules=Checking for eligible modules... -codemodernizer.chat.message.validation.check_passed=I can upgrade your Java module. To start the transformation, I need some information from you. Choose the module you want to upgrade and the target code version to upgrade to. Then, choose **Confirm**.\n\nIf you do not see the module you want to transform, you might need to configure your project so that I can find it. Go to File and choose Project Structure. In the Projects tab, set the correct project JDK and language level. In the Modules tab, set the correct module JDK and language level.\n\nAfter successfully transforming to Java 17 or 21, an additional transformation is required to upgrade your libraries and dependencies. Choose the same source code version and target code version (for example, 17 to 17) to do this.\n\nI will perform the transformation based on your project's requests, descriptions, and content. To maintain security, avoid including external, unvetted artifacts in your project repository prior to starting the transformation and always validate transformed code for both functionality and security. +codemodernizer.chat.message.validation.check_passed=I can upgrade your Java module. To start the transformation, I need some information from you. Choose the module you want to upgrade and the target code version to upgrade to. Then, choose **Confirm**.\n\nIf you do not see the module you want to transform, you might need to configure your project so that I can find it. Go to File and choose Project Structure. In the Projects tab, set the correct project JDK and language level. In the Modules tab, set the correct module JDK and language level.\n\nAfter successfully transforming to Java 17 or 21, an additional transformation is required to upgrade your libraries and dependencies. Choose the same source code version and target code version (for example, 17 to 17) to do this.\n\nI will perform the transformation based on your project's requests, descriptions, and content. To maintain security, avoid including external, unvetted artifacts in your project repository prior to starting the transformation and always validate transformed code for both functionality and security. Do not turn off or close your machine during the transformation because a stable network connection is required. codemodernizer.chat.message.validation.error.downgrade_attempt=I can't transform a project from Java 21 to Java 17, but I can upgrade Java 21 code with up-to-date libraries and other dependencies. Try again with a supported language upgrade. codemodernizer.chat.message.validation.error.invalid_sct=It looks like the .sct file you provided isn't valid. Make sure that you've uploaded the .zip file you retrieved from your schema conversion in AWS DMS. codemodernizer.chat.message.validation.error.invalid_source_db=I can only convert SQL for migrations from an Oracle source database. The provided .sct file indicates another source database for this migration. @@ -831,7 +831,7 @@ codemodernizer.toolwindow.label=Transformation Hub - {0} codemodernizer.toolwindow.label_no_job=Transformation Hub codemodernizer.toolwindow.problems_mvn_window_not_found=Unable to display Code Transform results as the Maven window cannot be fetched. codemodernizer.toolwindow.problems_window_not_found=Unable to display Code Transform results as the Problems View tool window cannot be fetched. -codemodernizer.toolwindow.progress.building=Build uploaded code in secure build environment +codemodernizer.toolwindow.progress.building=Analyze uploaded code in secure environment codemodernizer.toolwindow.progress.parent=Transformation progress codemodernizer.toolwindow.progress.planning=Generate transformation plan codemodernizer.toolwindow.progress.transforming=Transform your code From 2a30ddd3e53b7a6477599d556d42933c4aa42fb8 Mon Sep 17 00:00:00 2001 From: Richard Li <742829+rli@users.noreply.github.com> Date: Tue, 1 Jul 2025 11:36:58 -0700 Subject: [PATCH 7/7] fix(amazonq): add delay between fileOpen messages (#5870) LSP appears fragile and locks up if flooded with messages on startup --- .../lsp/textdocument/TextDocumentServiceHandler.kt | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/textdocument/TextDocumentServiceHandler.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/textdocument/TextDocumentServiceHandler.kt index 1bf868fde88..3f0d3854cba 100644 --- a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/textdocument/TextDocumentServiceHandler.kt +++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/textdocument/TextDocumentServiceHandler.kt @@ -23,6 +23,7 @@ import com.intellij.openapi.vfs.newvfs.BulkFileListener import com.intellij.openapi.vfs.newvfs.events.VFileContentChangeEvent import com.intellij.openapi.vfs.newvfs.events.VFileEvent import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.delay import kotlinx.coroutines.launch import org.eclipse.lsp4j.DidChangeTextDocumentParams import org.eclipse.lsp4j.DidCloseTextDocumentParams @@ -65,9 +66,12 @@ class TextDocumentServiceHandler( ) // open files on startup - val fileEditorManager = FileEditorManager.getInstance(project) - fileEditorManager.openFiles.forEach { file -> - handleFileOpened(file) + cs.launch { + val fileEditorManager = FileEditorManager.getInstance(project) + fileEditorManager.openFiles.forEach { file -> + handleFileOpened(file) + delay(100) + } } }