Skip to content

Commit 8af0bb3

Browse files
committed
move call into codewhispererService
1 parent ee72f6d commit 8af0bb3

File tree

3 files changed

+32
-100
lines changed

3 files changed

+32
-100
lines changed

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererService.kt

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ import kotlinx.coroutines.delay
2929
import kotlinx.coroutines.isActive
3030
import kotlinx.coroutines.launch
3131
import kotlinx.coroutines.withContext
32+
import org.eclipse.lsp4j.Position
33+
import org.eclipse.lsp4j.TextDocumentIdentifier
3234
import software.amazon.awssdk.core.exception.SdkServiceException
3335
import software.amazon.awssdk.core.util.DefaultSdkAutoConstructList
3436
import software.amazon.awssdk.services.codewhispererruntime.model.CodeWhispererRuntimeException
@@ -53,6 +55,11 @@ import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnection
5355
import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnectionManager
5456
import software.aws.toolkits.jetbrains.core.credentials.pinning.CodeWhispererConnection
5557
import software.aws.toolkits.jetbrains.services.amazonq.SUPPLEMENTAL_CONTEXT_TIMEOUT
58+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.AmazonQLspService
59+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.textDocument.InlineCompletionContext
60+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.textDocument.InlineCompletionTriggerKind
61+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.textDocument.InlineCompletionWithReferencesParams
62+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.util.FileUriUtil.toUriString
5663
import software.aws.toolkits.jetbrains.services.codewhisperer.credentials.CodeWhispererClientAdaptor
5764
import software.aws.toolkits.jetbrains.services.codewhisperer.customization.CodeWhispererModelConfigurator
5865
import software.aws.toolkits.jetbrains.services.codewhisperer.editor.CodeWhispererEditorManager
@@ -205,6 +212,8 @@ class CodeWhispererService(private val cs: CoroutineScope) : Disposable {
205212
return
206213
}
207214

215+
// PUT HERE!!!
216+
// invoke LSP CodeWhisperer
208217
invokeCodeWhispererInBackground(requestContext)
209218
}
210219

@@ -527,6 +536,15 @@ class CodeWhispererService(private val cs: CoroutineScope) : Disposable {
527536
return nextStates
528537
}
529538

539+
internal fun handleInlineCompletion(editor: Editor) {
540+
editor.project?.let { project ->
541+
AmazonQLspService.executeIfRunning(project) { server ->
542+
val params = buildInlineCompletionParams(editor)
543+
server.inlineCompletionWithReferences(params)
544+
}
545+
}
546+
}
547+
530548
private fun initStates(
531549
requestContext: RequestContext,
532550
responseContext: ResponseContext,
@@ -706,6 +724,19 @@ class CodeWhispererService(private val cs: CoroutineScope) : Disposable {
706724
return states
707725
}
708726

727+
private fun buildInlineCompletionParams(editor: Editor): InlineCompletionWithReferencesParams =
728+
InlineCompletionWithReferencesParams(
729+
context = InlineCompletionContext(
730+
triggerKind = InlineCompletionTriggerKind.Invoke
731+
)
732+
).apply {
733+
textDocument = TextDocumentIdentifier(toUriString(editor.virtualFile))
734+
position = Position(
735+
editor.caretModel.primaryCaret.visualPosition.line,
736+
editor.caretModel.primaryCaret.offset
737+
)
738+
}
739+
709740
private fun addPopupChildDisposables(popup: JBPopup) {
710741
codeInsightSettingsFacade.disableCodeInsightUntil(popup)
711742

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

Lines changed: 0 additions & 20 deletions
This file was deleted.

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

Lines changed: 1 addition & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,8 @@
33

44
package software.aws.toolkits.jetbrains.services.amazonq.lsp.textdocument
55

6-
import com.intellij.codeInsight.editorActions.TypedHandlerDelegate
7-
import com.intellij.codeInsight.lookup.Lookup
8-
import com.intellij.codeInsight.lookup.LookupEvent
9-
import com.intellij.codeInsight.lookup.LookupListener
10-
import com.intellij.codeInsight.lookup.LookupManagerListener
11-
import com.intellij.codeInsight.lookup.impl.LookupImpl
126
import com.intellij.openapi.Disposable
13-
import com.intellij.openapi.actionSystem.IdeActions
147
import com.intellij.openapi.editor.Document
15-
import com.intellij.openapi.editor.Editor
16-
import com.intellij.openapi.editor.actionSystem.EditorActionManager
178
import com.intellij.openapi.fileEditor.FileDocumentManager
189
import com.intellij.openapi.fileEditor.FileDocumentManagerListener
1910
import com.intellij.openapi.fileEditor.FileEditorManager
@@ -24,20 +15,15 @@ import com.intellij.openapi.vfs.VirtualFileManager
2415
import com.intellij.openapi.vfs.newvfs.BulkFileListener
2516
import com.intellij.openapi.vfs.newvfs.events.VFileContentChangeEvent
2617
import com.intellij.openapi.vfs.newvfs.events.VFileEvent
27-
import com.intellij.psi.PsiFile
2818
import org.eclipse.lsp4j.DidChangeTextDocumentParams
2919
import org.eclipse.lsp4j.DidCloseTextDocumentParams
3020
import org.eclipse.lsp4j.DidOpenTextDocumentParams
3121
import org.eclipse.lsp4j.DidSaveTextDocumentParams
32-
import org.eclipse.lsp4j.Position
3322
import org.eclipse.lsp4j.TextDocumentContentChangeEvent
3423
import org.eclipse.lsp4j.TextDocumentIdentifier
3524
import org.eclipse.lsp4j.TextDocumentItem
3625
import org.eclipse.lsp4j.VersionedTextDocumentIdentifier
3726
import software.aws.toolkits.jetbrains.services.amazonq.lsp.AmazonQLspService
38-
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.textDocument.InlineCompletionContext
39-
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.textDocument.InlineCompletionTriggerKind
40-
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.textDocument.InlineCompletionWithReferencesParams
4127
import software.aws.toolkits.jetbrains.services.amazonq.lsp.util.FileUriUtil.toUriString
4228
import software.aws.toolkits.jetbrains.utils.pluginAwareExecuteOnPooledThread
4329

@@ -46,9 +32,7 @@ class TextDocumentServiceHandler(
4632
serverInstance: Disposable,
4733
) : FileDocumentManagerListener,
4834
FileEditorManagerListener,
49-
BulkFileListener,
50-
LookupManagerListener,
51-
TypedHandlerDelegate() {
35+
BulkFileListener {
5236

5337
init {
5438
// didOpen & didClose events
@@ -69,19 +53,6 @@ class TextDocumentServiceHandler(
6953
this
7054
)
7155

72-
// aws/textDocument/inlineCompletionWithReferences events
73-
project.messageBus.connect(serverInstance).subscribe(
74-
LookupManagerListener.TOPIC,
75-
this
76-
)
77-
78-
val editorActionManager = EditorActionManager.getInstance()
79-
val originalHandler = editorActionManager.getActionHandler(IdeActions.ACTION_EDITOR_ENTER)
80-
editorActionManager.setActionHandler(
81-
IdeActions.ACTION_EDITOR_ENTER,
82-
AmazonQLspEnterHandler(originalHandler, this)
83-
)
84-
8556
// open files on startup
8657
val fileEditorManager = FileEditorManager.getInstance(project)
8758
fileEditorManager.openFiles.forEach { file ->
@@ -104,56 +75,6 @@ class TextDocumentServiceHandler(
10475
}
10576
}
10677

107-
override fun activeLookupChanged(oldLookup: Lookup?, newLookup: Lookup?) {
108-
if (oldLookup != null || newLookup == null) return
109-
110-
newLookup.addLookupListener(object : LookupListener {
111-
override fun itemSelected(event: LookupEvent) {
112-
val editor = event.lookup.editor
113-
if (!(event.lookup as LookupImpl).isShown) {
114-
cleanup()
115-
return
116-
}
117-
118-
handleInlineCompletion(editor)
119-
cleanup()
120-
}
121-
122-
override fun lookupCanceled(event: LookupEvent) {
123-
cleanup()
124-
}
125-
126-
private fun cleanup() {
127-
newLookup.removeLookupListener(this)
128-
}
129-
})
130-
}
131-
132-
override fun charTyped(c: Char, project: Project, editor: Editor, psiFiles: PsiFile): Result {
133-
handleInlineCompletion(editor)
134-
return Result.CONTINUE
135-
}
136-
137-
fun handleInlineCompletion(editor: Editor) {
138-
AmazonQLspService.executeIfRunning(project) { server ->
139-
val params = buildInlineCompletionParams(editor)
140-
server.inlineCompletionWithReferences(params)
141-
}
142-
}
143-
144-
private fun buildInlineCompletionParams(editor: Editor): InlineCompletionWithReferencesParams =
145-
InlineCompletionWithReferencesParams(
146-
context = InlineCompletionContext(
147-
triggerKind = InlineCompletionTriggerKind.Invoke
148-
)
149-
).apply {
150-
textDocument = TextDocumentIdentifier(toUriString(editor.virtualFile))
151-
position = Position(
152-
editor.caretModel.primaryCaret.visualPosition.line,
153-
editor.caretModel.primaryCaret.offset
154-
)
155-
}
156-
15778
override fun beforeDocumentSaving(document: Document) {
15879
AmazonQLspService.executeIfRunning(project) { languageServer ->
15980
val file = FileDocumentManager.getInstance().getFile(document) ?: return@executeIfRunning

0 commit comments

Comments
 (0)