From 2cfb998d30286b4064aa1968949acea1d3c7d506 Mon Sep 17 00:00:00 2001 From: Manodnya Bhoite Date: Thu, 22 May 2025 00:05:43 -0700 Subject: [PATCH 1/4] Fix prompt file not opening in windows --- .../services/amazonq/lsp/AmazonQLanguageClientImpl.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/AmazonQLanguageClientImpl.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt index 592dbff032b..cd89e12dfca 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 @@ -59,6 +59,8 @@ import software.aws.toolkits.jetbrains.utils.getCleanedContent import software.aws.toolkits.jetbrains.utils.notify import software.aws.toolkits.resources.message import java.io.File +import java.net.URLDecoder +import java.nio.charset.StandardCharsets import java.nio.file.Files import java.nio.file.Paths import java.util.UUID @@ -143,18 +145,20 @@ class AmazonQLanguageClientImpl(private val project: Project) : AmazonQLanguageC override fun showDocument(params: ShowDocumentParams): CompletableFuture { try { + if (params.uri.isNullOrEmpty()) { return CompletableFuture.completedFuture(ShowDocumentResult(false)) } - + val fileToOpen = URLDecoder.decode(params.uri, StandardCharsets.UTF_8.name()) if (params.external == true) { - BrowserUtil.open(params.uri) + BrowserUtil.open(fileToOpen) return CompletableFuture.completedFuture(ShowDocumentResult(true)) } ApplicationManager.getApplication().invokeLater { try { - val virtualFile = VirtualFileManager.getInstance().findFileByUrl(params.uri) + + val virtualFile = VirtualFileManager.getInstance().findFileByUrl(fileToOpen) ?: throw IllegalArgumentException("Cannot find file: ${params.uri}") FileEditorManager.getInstance(project).openFile(virtualFile, true) From 9be6ed6e23f602ef162d15523de72c0ac48b59b9 Mon Sep 17 00:00:00 2001 From: Manodnya Bhoite Date: Thu, 22 May 2025 09:28:42 -0700 Subject: [PATCH 2/4] Detekt --- .../services/amazonq/lsp/AmazonQLanguageClientImpl.kt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) 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 cd89e12dfca..8fe13c7ac8a 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 @@ -145,7 +145,6 @@ class AmazonQLanguageClientImpl(private val project: Project) : AmazonQLanguageC override fun showDocument(params: ShowDocumentParams): CompletableFuture { try { - if (params.uri.isNullOrEmpty()) { return CompletableFuture.completedFuture(ShowDocumentResult(false)) } @@ -157,13 +156,12 @@ class AmazonQLanguageClientImpl(private val project: Project) : AmazonQLanguageC ApplicationManager.getApplication().invokeLater { try { - val virtualFile = VirtualFileManager.getInstance().findFileByUrl(fileToOpen) ?: throw IllegalArgumentException("Cannot find file: ${params.uri}") FileEditorManager.getInstance(project).openFile(virtualFile, true) } catch (e: Exception) { - LOG.warn { "Failed to show document: ${params.uri}" } + LOG.warn { "Failed to show document: $fileToOpen" } } } From dd3d0068d19b78dcd45ab02d9d5c0df03dcd2bbf Mon Sep 17 00:00:00 2001 From: Manodnya Bhoite Date: Thu, 22 May 2025 09:29:29 -0700 Subject: [PATCH 3/4] feedback --- .../jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 8fe13c7ac8a..0952e7de5c3 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 @@ -157,7 +157,7 @@ class AmazonQLanguageClientImpl(private val project: Project) : AmazonQLanguageC ApplicationManager.getApplication().invokeLater { try { val virtualFile = VirtualFileManager.getInstance().findFileByUrl(fileToOpen) - ?: throw IllegalArgumentException("Cannot find file: ${params.uri}") + ?: throw IllegalArgumentException("Cannot find file: $fileToOpen") FileEditorManager.getInstance(project).openFile(virtualFile, true) } catch (e: Exception) { From 104486c74869452e4b724c679f2e1714be958aab Mon Sep 17 00:00:00 2001 From: Manodnya Bhoite Date: Thu, 22 May 2025 10:10:14 -0700 Subject: [PATCH 4/4] comment added --- .../services/amazonq/lsp/AmazonQLanguageClientImpl.kt | 3 +++ 1 file changed, 3 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 0952e7de5c3..b56b4e1ba07 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 @@ -148,6 +148,9 @@ class AmazonQLanguageClientImpl(private val project: Project) : AmazonQLanguageC if (params.uri.isNullOrEmpty()) { return CompletableFuture.completedFuture(ShowDocumentResult(false)) } + + // The filepath sent by the server contains unicode characters which need to be + // decoded for JB file handling APIs to be handle to handle file operations val fileToOpen = URLDecoder.decode(params.uri, StandardCharsets.UTF_8.name()) if (params.external == true) { BrowserUtil.open(fileToOpen)