Skip to content

Commit 5d9562d

Browse files
committed
Fix EDT issue on CodeWhispererEditorListener
1 parent e6f7ed2 commit 5d9562d

File tree

2 files changed

+25
-23
lines changed

2 files changed

+25
-23
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type" : "bugfix",
3+
"description" : "Fix 'Slow operations are prohibited on EDT.' when Amazon Q is determining if a file supports inline suggestions (#4823)"
4+
}

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/editor/CodeWhispererEditorListener.kt

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import com.intellij.openapi.editor.event.DocumentEvent
88
import com.intellij.openapi.editor.event.EditorFactoryEvent
99
import com.intellij.openapi.editor.event.EditorFactoryListener
1010
import com.intellij.openapi.editor.impl.EditorImpl
11-
import com.intellij.psi.PsiDocumentManager
1211
import software.aws.toolkits.jetbrains.services.codewhisperer.explorer.isCodeWhispererEnabled
1312
import software.aws.toolkits.jetbrains.services.codewhisperer.language.programmingLanguage
1413
import software.aws.toolkits.jetbrains.services.codewhisperer.service.CodeWhispererInvocationStatus
@@ -17,27 +16,26 @@ import software.aws.toolkits.jetbrains.services.codewhisperer.telemetry.CodeWhis
1716
class CodeWhispererEditorListener : EditorFactoryListener {
1817
override fun editorCreated(event: EditorFactoryEvent) {
1918
val editor = (event.editor as? EditorImpl) ?: return
20-
editor.project?.let { project ->
21-
PsiDocumentManager.getInstance(project).getPsiFile(editor.document)?.programmingLanguage() ?. let { language ->
22-
// If language is not supported by CodeWhisperer, no action needed
23-
if (!language.isCodeCompletionSupported()) return
24-
// If language is supported, install document listener for CodeWhisperer service
25-
editor.document.addDocumentListener(
26-
object : BulkAwareDocumentListener {
27-
// TODO: Track only deletion changes within the current 5-min interval which will give
28-
// the most accurate code percentage data.
29-
override fun documentChanged(event: DocumentEvent) {
30-
if (!isCodeWhispererEnabled(project)) return
31-
CodeWhispererInvocationStatus.getInstance().documentChanged()
32-
CodeWhispererCodeCoverageTracker.getInstance(project, language).apply {
33-
activateTrackerIfNotActive()
34-
documentChanged(event)
35-
}
36-
}
37-
},
38-
editor.disposable
39-
)
40-
}
41-
}
19+
val project = editor.project ?: return
20+
21+
val language = editor.virtualFile.programmingLanguage()
22+
// If language is not supported by CodeWhisperer, no action needed
23+
if (!language.isCodeCompletionSupported()) return
24+
// If language is supported, install document listener for CodeWhisperer service
25+
editor.document.addDocumentListener(
26+
object : BulkAwareDocumentListener {
27+
// TODO: Track only deletion changes within the current 5-min interval which will give
28+
// the most accurate code percentage data.
29+
override fun documentChanged(event: DocumentEvent) {
30+
if (!isCodeWhispererEnabled(project)) return
31+
CodeWhispererInvocationStatus.getInstance().documentChanged()
32+
CodeWhispererCodeCoverageTracker.getInstance(project, language).apply {
33+
activateTrackerIfNotActive()
34+
documentChanged(event)
35+
}
36+
}
37+
},
38+
editor.disposable
39+
)
4240
}
4341
}

0 commit comments

Comments
 (0)