From 21a202ccf8c57a34ee7453d3924fe5fd6150d5cd Mon Sep 17 00:00:00 2001 From: Marc McIntosh Date: Thu, 10 Apr 2025 17:17:45 +0200 Subject: [PATCH 1/2] parse force reload event from chat. --- .../com/smallcloud/refactai/panes/sharedchat/Events.kt | 8 +++++++- .../refactai/panes/sharedchat/SharedChatPane.kt | 4 ++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/com/smallcloud/refactai/panes/sharedchat/Events.kt b/src/main/kotlin/com/smallcloud/refactai/panes/sharedchat/Events.kt index 693e3985..0fc53531 100644 --- a/src/main/kotlin/com/smallcloud/refactai/panes/sharedchat/Events.kt +++ b/src/main/kotlin/com/smallcloud/refactai/panes/sharedchat/Events.kt @@ -34,7 +34,8 @@ class EventNames { IS_CHAT_STREAMING("ide/isChatStreaming"), CHAT_PAGE_CHANGE("ide/chatPageChange"), IDE_TOOL_EDIT("ide/toolEdit"), - FORCE_RELOAD_FILE_BY_PATH("ide/forceReloadFileByPath") + FORCE_RELOAD_FILE_BY_PATH("ide/forceReloadFileByPath"), + FORCE_RELOAD("ide/forceReload"), } enum class ToChat(val value: String) { @@ -145,6 +146,10 @@ class Events { return Editor.ForceReloadFileByPath(filePath) } + EventNames.FromChat.FORCE_RELOAD.value -> { + return Editor.ForceReload() + } + else -> null } } @@ -382,6 +387,7 @@ class Events { class SetSnippetToChat(payload: Snippet) : ToChat(EventNames.ToChat.SET_SELECTED_SNIPPET, payload) class ForceReloadFileByPath(val path: String) : FromChat(EventNames.FromChat.FORCE_RELOAD_FILE_BY_PATH, path) + class ForceReload(): FromChat(EventNames.FromChat.FORCE_RELOAD, null) } object NewChat : ToChat(EventNames.ToChat.NEW_CHAT, Unit) diff --git a/src/main/kotlin/com/smallcloud/refactai/panes/sharedchat/SharedChatPane.kt b/src/main/kotlin/com/smallcloud/refactai/panes/sharedchat/SharedChatPane.kt index 40c9ddab..abe7bbb2 100644 --- a/src/main/kotlin/com/smallcloud/refactai/panes/sharedchat/SharedChatPane.kt +++ b/src/main/kotlin/com/smallcloud/refactai/panes/sharedchat/SharedChatPane.kt @@ -621,6 +621,10 @@ class SharedChatPane(val project: Project) : JPanel(), Disposable { this.handleForceReloadFileByPath(event.path) } + is Events.Editor.ForceReload -> { + // TODO: handle force reload event. + } + else -> Unit } } From 4c8aa177b2a5112bb34d7f69b96bc2bc5720a0f9 Mon Sep 17 00:00:00 2001 From: Kirill Starkov Date: Thu, 10 Apr 2025 23:38:59 +0800 Subject: [PATCH 2/2] rename event and handle it --- .../com/smallcloud/refactai/panes/sharedchat/Events.kt | 8 ++++---- .../refactai/panes/sharedchat/SharedChatPane.kt | 10 ++++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/main/kotlin/com/smallcloud/refactai/panes/sharedchat/Events.kt b/src/main/kotlin/com/smallcloud/refactai/panes/sharedchat/Events.kt index 0fc53531..89eb6042 100644 --- a/src/main/kotlin/com/smallcloud/refactai/panes/sharedchat/Events.kt +++ b/src/main/kotlin/com/smallcloud/refactai/panes/sharedchat/Events.kt @@ -35,7 +35,7 @@ class EventNames { CHAT_PAGE_CHANGE("ide/chatPageChange"), IDE_TOOL_EDIT("ide/toolEdit"), FORCE_RELOAD_FILE_BY_PATH("ide/forceReloadFileByPath"), - FORCE_RELOAD("ide/forceReload"), + FORCE_RELOAD_PROJECT_TREE_FILES("ide/forceReloadProjectTreeFiles"), } enum class ToChat(val value: String) { @@ -146,8 +146,8 @@ class Events { return Editor.ForceReloadFileByPath(filePath) } - EventNames.FromChat.FORCE_RELOAD.value -> { - return Editor.ForceReload() + EventNames.FromChat.FORCE_RELOAD_PROJECT_TREE_FILES.value -> { + return Editor.ForceReloadProjectTreeFiles() } else -> null @@ -387,7 +387,7 @@ class Events { class SetSnippetToChat(payload: Snippet) : ToChat(EventNames.ToChat.SET_SELECTED_SNIPPET, payload) class ForceReloadFileByPath(val path: String) : FromChat(EventNames.FromChat.FORCE_RELOAD_FILE_BY_PATH, path) - class ForceReload(): FromChat(EventNames.FromChat.FORCE_RELOAD, null) + class ForceReloadProjectTreeFiles(): FromChat(EventNames.FromChat.FORCE_RELOAD_PROJECT_TREE_FILES, null) } object NewChat : ToChat(EventNames.ToChat.NEW_CHAT, Unit) diff --git a/src/main/kotlin/com/smallcloud/refactai/panes/sharedchat/SharedChatPane.kt b/src/main/kotlin/com/smallcloud/refactai/panes/sharedchat/SharedChatPane.kt index abe7bbb2..fb6da84d 100644 --- a/src/main/kotlin/com/smallcloud/refactai/panes/sharedchat/SharedChatPane.kt +++ b/src/main/kotlin/com/smallcloud/refactai/panes/sharedchat/SharedChatPane.kt @@ -9,7 +9,6 @@ import com.intellij.openapi.Disposable import com.intellij.openapi.actionSystem.DataContext import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.application.invokeLater -import com.intellij.openapi.command.WriteCommandAction import com.intellij.openapi.diagnostic.Logger import com.intellij.openapi.editor.Caret import com.intellij.openapi.editor.EditorFactory @@ -49,6 +48,7 @@ import javax.swing.JPanel import com.intellij.openapi.fileEditor.FileDocumentManager import com.intellij.openapi.fileEditor.FileEditorManagerEvent import com.intellij.openapi.fileEditor.FileEditorManagerListener +import com.intellij.openapi.roots.ProjectRootManager class SharedChatPane(val project: Project) : JPanel(), Disposable { private val logger = Logger.getInstance(SharedChatPane::class.java) @@ -179,7 +179,7 @@ class SharedChatPane(val project: Project) : JPanel(), Disposable { logger.warn("handleForceReloadFileByPath: File not found: $fileName (sanitized: $sanitizedFileName)") return@invokeLater } - VfsUtil.markDirtyAndRefresh(true, false, true, virtualFile) + VfsUtil.markDirtyAndRefresh(true, true, true, virtualFile) logger.warn("handleForceReloadFileByPath: done for $fileName") } } @@ -621,8 +621,10 @@ class SharedChatPane(val project: Project) : JPanel(), Disposable { this.handleForceReloadFileByPath(event.path) } - is Events.Editor.ForceReload -> { - // TODO: handle force reload event. + is Events.Editor.ForceReloadProjectTreeFiles -> { + ProjectRootManager.getInstance(project).contentRoots.forEach { + this.handleForceReloadFileByPath(it.path) + } } else -> Unit