From 5f455f5e0a4419c308053cc7e90b6e613b5769e9 Mon Sep 17 00:00:00 2001 From: Richard Li <742829+rli@users.noreply.github.com> Date: Tue, 8 Jul 2025 15:47:19 -0700 Subject: [PATCH] fix(amazonq): can't remove document listener the handler may potentially be already disposed --- .../amazonq/lsp/textdocument/TextDocumentServiceHandler.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 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 10e597915bb..d41e7ec0a70 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 @@ -33,6 +33,7 @@ import org.eclipse.lsp4j.TextDocumentContentChangeEvent import org.eclipse.lsp4j.TextDocumentIdentifier import org.eclipse.lsp4j.TextDocumentItem import org.eclipse.lsp4j.VersionedTextDocumentIdentifier +import software.aws.toolkits.core.utils.tryOrNull import software.aws.toolkits.jetbrains.services.amazonq.lsp.AmazonQLspService import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ACTIVE_EDITOR_CHANGED_NOTIFICATION import software.aws.toolkits.jetbrains.services.amazonq.lsp.util.LspEditorUtil.getCursorState @@ -91,7 +92,7 @@ class TextDocumentServiceHandler( ApplicationManager.getApplication().runReadAction { val existingListener = file.getUserData(KEY_REAL_TIME_EDIT_LISTENER) if (existingListener != null) { - FileDocumentManager.getInstance().getDocument(file)?.removeDocumentListener(existingListener) + tryOrNull { FileDocumentManager.getInstance().getDocument(file)?.removeDocumentListener(existingListener) } file.putUserData(KEY_REAL_TIME_EDIT_LISTENER, null) } } @@ -175,7 +176,7 @@ class TextDocumentServiceHandler( ) { val listener = file.getUserData(KEY_REAL_TIME_EDIT_LISTENER) if (listener != null) { - FileDocumentManager.getInstance().getDocument(file)?.removeDocumentListener(listener) + tryOrNull { FileDocumentManager.getInstance().getDocument(file)?.removeDocumentListener(listener) } file.putUserData(KEY_REAL_TIME_EDIT_LISTENER, null) cs.launch {