Skip to content

Commit 84bcab5

Browse files
committed
Handle show document message from server
1 parent 06f4a99 commit 84bcab5

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,21 @@
44
package software.aws.toolkits.jetbrains.services.amazonq.lsp
55

66
import com.intellij.notification.NotificationType
7+
import com.intellij.openapi.application.ApplicationManager
8+
import com.intellij.openapi.fileEditor.FileEditorManager
79
import com.intellij.openapi.project.Project
10+
import com.intellij.openapi.vfs.VirtualFileManager
811
import migration.software.aws.toolkits.jetbrains.settings.AwsSettings
912
import org.eclipse.lsp4j.ConfigurationParams
1013
import org.eclipse.lsp4j.MessageActionItem
1114
import org.eclipse.lsp4j.MessageParams
1215
import org.eclipse.lsp4j.MessageType
1316
import org.eclipse.lsp4j.ProgressParams
1417
import org.eclipse.lsp4j.PublishDiagnosticsParams
18+
import org.eclipse.lsp4j.ShowDocumentParams
19+
import org.eclipse.lsp4j.ShowDocumentResult
1520
import org.eclipse.lsp4j.ShowMessageRequestParams
21+
import software.aws.toolkits.core.utils.getLogger
1622
import software.aws.toolkits.jetbrains.core.credentials.AwsBearerTokenConnection
1723
import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnectionManager
1824
import software.aws.toolkits.jetbrains.core.credentials.pinning.QConnection
@@ -56,6 +62,30 @@ class AmazonQLanguageClientImpl(private val project: Project) : AmazonQLanguageC
5662
showMessage(message)
5763
}
5864

65+
override fun showDocument(params: ShowDocumentParams?): CompletableFuture<ShowDocumentResult> {
66+
try {
67+
if (params == null || params.uri.isNullOrEmpty()) {
68+
return CompletableFuture.completedFuture(ShowDocumentResult(false))
69+
}
70+
71+
ApplicationManager.getApplication().invokeLater {
72+
try {
73+
val virtualFile = VirtualFileManager.getInstance().findFileByUrl(params.uri)
74+
?: throw IllegalArgumentException("Cannot find file: ${params.uri}")
75+
76+
FileEditorManager.getInstance(project).openFile(virtualFile, true)
77+
} catch (e: Exception) {
78+
LOG.warn("Failed to show document: ${params.uri}")
79+
}
80+
}
81+
82+
return CompletableFuture.completedFuture(ShowDocumentResult(true))
83+
} catch (e: Exception) {
84+
LOG.warn("Error showing document")
85+
return CompletableFuture.completedFuture(ShowDocumentResult(false))
86+
}
87+
}
88+
5989
override fun getConnectionMetadata(): CompletableFuture<ConnectionMetadata> =
6090
CompletableFuture.supplyAsync {
6191
val connection = ToolkitConnectionManager.getInstance(project)
@@ -145,4 +175,8 @@ class AmazonQLanguageClientImpl(private val project: Project) : AmazonQLanguageC
145175
error("Cannot handle partial chat")
146176
}
147177
}
178+
179+
companion object {
180+
private val LOG = getLogger<AmazonQLanguageClientImpl>()
181+
}
148182
}

0 commit comments

Comments
 (0)