Skip to content

Commit 79286b0

Browse files
committed
feat: add catch for not ready action
1 parent ffd4603 commit 79286b0

File tree

4 files changed

+26
-30
lines changed

4 files changed

+26
-30
lines changed

java/src/main/kotlin/cc/unitmesh/idea/DtModelExt.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,7 @@ fun DtClass.Companion.fromPsi(originClass: PsiClass): DtClass {
5454
}
5555

5656
val methods = runReadAction {
57-
psiClass.methods.map { m ->
58-
val method = m.copy() as PsiMethod
59-
57+
psiClass.methods.map { method ->
6058
// if method is getter or setter, skip
6159
val parameters = method.parameters
6260
val methodName = method.name

java/src/main/kotlin/cc/unitmesh/idea/flow/MvcContextService.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ class MvcContextService(private val project: Project) {
2323
return runReadAction {
2424
if (controllerFile == null) return@runReadAction null
2525

26-
val allImportStatements = controllerFile.importList?.allImportStatements
26+
val allImportStatements =
27+
controllerFile.importList?.allImportStatements?.clone()
2728

2829
return@runReadAction ControllerContext(
2930
services = filterImportByRegex(allImportStatements, serviceRegex),

src/main/kotlin/cc/unitmesh/devti/actions/chat/CodeCompleteChatAction.kt

Lines changed: 21 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,7 @@ import com.intellij.openapi.actionSystem.CommonDataKeys
1313
import com.intellij.openapi.application.ApplicationManager
1414
import com.intellij.openapi.application.runReadAction
1515
import com.intellij.openapi.diagnostic.logger
16-
import com.intellij.openapi.progress.ProgressIndicator
17-
import com.intellij.openapi.progress.ProgressManager
18-
import com.intellij.openapi.progress.Task
16+
import com.intellij.openapi.project.IndexNotReadyException
1917
import com.intellij.openapi.wm.ToolWindowManager
2018
import com.intellij.temporary.getElementToAction
2119

@@ -41,31 +39,29 @@ class CodeCompleteChatAction : AnAction() {
4139
val suffixText = document?.text?.substring(lineEndOffset) ?: ""
4240

4341
val editor = e.getData(CommonDataKeys.EDITOR) ?: return
44-
ApplicationManager.getApplication().invokeLater {
4542

46-
// ProgressManager.getInstance()
47-
// .run(object : Task.Backgroundable(project, "Building contextual call graph", true) {
48-
// override fun run(indicator: ProgressIndicator) {
49-
val prompter = ContextPrompter.prompter(file?.language?.displayName ?: "")
43+
ApplicationManager.getApplication().runReadAction {
44+
try {
45+
val prompter = ContextPrompter.prompter(file?.language?.displayName ?: "")
5046

51-
val element = runReadAction { getElementToAction(project, editor) }
52-
prompter.initContext(
53-
ChatActionType.CODE_COMPLETE, prefixText, file, project, caretModel?.offset ?: 0, element
54-
)
47+
val element = getElementToAction(project, editor)
48+
prompter.initContext(
49+
ChatActionType.CODE_COMPLETE, prefixText, file, project, caretModel?.offset ?: 0, element
50+
)
5551

56-
val actionType = ChatActionType.CODE_COMPLETE
57-
val chatCodingService = ChatCodingService(actionType, project)
58-
val toolWindowManager =
59-
ToolWindowManager.getInstance(project).getToolWindow(AutoDevToolWindowFactory.Util.id) ?: run {
60-
logger<ChatCodingService>().warn("Tool window not found")
61-
return@invokeLater
62-
}
52+
val actionType = ChatActionType.CODE_COMPLETE
53+
val chatCodingService = ChatCodingService(actionType, project)
54+
val toolWindowManager =
55+
ToolWindowManager.getInstance(project).getToolWindow(AutoDevToolWindowFactory.Util.id) ?: run {
56+
logger<ChatCodingService>().warn("Tool window not found")
57+
return@runReadAction
58+
}
6359

64-
val contentManager = toolWindowManager.contentManager
65-
val contentPanel = ChatCodingPanel(chatCodingService, toolWindowManager.disposable)
60+
val contentManager = toolWindowManager.contentManager
61+
val contentPanel = ChatCodingPanel(chatCodingService, toolWindowManager.disposable)
6662

67-
runReadAction {
68-
val content = contentManager.factory.createContent(contentPanel, chatCodingService.getLabel(), false)
63+
val content =
64+
contentManager.factory.createContent(contentPanel, chatCodingService.getLabel(), false)
6965
contentManager.removeAllContents(true)
7066
contentManager.addContent(content)
7167

@@ -75,9 +71,9 @@ class CodeCompleteChatAction : AnAction() {
7571
)
7672
chatCodingService.handlePromptAndResponse(contentPanel, prompter, chatContext)
7773
}
74+
} catch (ignore: IndexNotReadyException) {
75+
return@runReadAction
7876
}
79-
// }
80-
// })
8177
}
8278
}
8379
}

src/main/kotlin/cc/unitmesh/devti/gui/chat/ChatCodingService.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class ChatCodingService(var actionType: ChatActionType, val project: Project) {
3030
context: ChatContext? = null,
3131
) {
3232
val requestPrompt = prompter.requestPrompt()
33+
val displayPrompt = prompter.displayPrompt()
3334

3435
counitProcessor.isCoUnit(requestPrompt).let {
3536
if (it) {
@@ -38,7 +39,7 @@ class ChatCodingService(var actionType: ChatActionType, val project: Project) {
3839
}
3940
}
4041

41-
ui.addMessage(requestPrompt, true, prompter.displayPrompt())
42+
ui.addMessage(requestPrompt, true, displayPrompt)
4243
ui.addMessage(AutoDevBundle.message("autodev.loading"))
4344

4445
ApplicationManager.getApplication().executeOnPooledThread {

0 commit comments

Comments
 (0)