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..89eb6042 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_PROJECT_TREE_FILES("ide/forceReloadProjectTreeFiles"), } enum class ToChat(val value: String) { @@ -145,6 +146,10 @@ class Events { return Editor.ForceReloadFileByPath(filePath) } + EventNames.FromChat.FORCE_RELOAD_PROJECT_TREE_FILES.value -> { + return Editor.ForceReloadProjectTreeFiles() + } + 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 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 40c9ddab..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,6 +621,12 @@ class SharedChatPane(val project: Project) : JPanel(), Disposable { this.handleForceReloadFileByPath(event.path) } + is Events.Editor.ForceReloadProjectTreeFiles -> { + ProjectRootManager.getInstance(project).contentRoots.forEach { + this.handleForceReloadFileByPath(it.path) + } + } + else -> Unit } }