Skip to content

Commit c3d855a

Browse files
committed
didChangeWatchedFiles impl
1 parent aababb6 commit c3d855a

File tree

1 file changed

+35
-5
lines changed
  • plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/workspace

1 file changed

+35
-5
lines changed

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/workspace/WorkspaceServiceHandler.kt

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,29 +5,34 @@ package software.aws.toolkits.jetbrains.services.amazonq.lsp.workspace
55

66
import com.intellij.openapi.Disposable
77
import com.intellij.openapi.project.Project
8+
import com.intellij.openapi.project.ProjectManager
9+
import com.intellij.openapi.project.ProjectManagerListener
810
import com.intellij.openapi.vfs.VirtualFileManager
911
import com.intellij.openapi.vfs.newvfs.BulkFileListener
1012
import com.intellij.openapi.vfs.newvfs.events.VFileCreateEvent
1113
import com.intellij.openapi.vfs.newvfs.events.VFileDeleteEvent
1214
import com.intellij.openapi.vfs.newvfs.events.VFileEvent
13-
import org.eclipse.lsp4j.CreateFilesParams
14-
import org.eclipse.lsp4j.DeleteFilesParams
15-
import org.eclipse.lsp4j.FileCreate
16-
import org.eclipse.lsp4j.FileDelete
15+
import org.eclipse.lsp4j.*
1716
import software.aws.toolkits.jetbrains.services.amazonq.lsp.AmazonQLanguageServer
1817
import software.aws.toolkits.jetbrains.services.amazonq.lsp.AmazonQLspService
1918
import software.aws.toolkits.jetbrains.utils.pluginAwareExecuteOnPooledThread
2019

2120
class WorkspaceServiceHandler(
2221
private val project: Project,
2322
serverInstance: Disposable
24-
): BulkFileListener {
23+
): BulkFileListener,
24+
ProjectManagerListener {
2525

2626
init{
2727
project.messageBus.connect(serverInstance).subscribe(
2828
VirtualFileManager.VFS_CHANGES,
2929
this
3030
)
31+
32+
project.messageBus.connect(serverInstance).subscribe(
33+
ProjectManager.TOPIC,
34+
this
35+
)
3136
}
3237

3338
private fun executeIfRunning(project: Project, runnable: (AmazonQLanguageServer) -> Unit) =
@@ -70,11 +75,36 @@ class WorkspaceServiceHandler(
7075
pluginAwareExecuteOnPooledThread {
7176
didCreateFiles(events.filterIsInstance<VFileCreateEvent>())
7277
didDeleteFiles(events.filterIsInstance<VFileDeleteEvent>())
78+
didChangeWatchedFiles(events)
7379
}
7480
}
7581

7682
// still need to implement
7783
//private fun didChangeWorkspaceFolders() {
7884
// languageServer.workspaceService.didChangeWorkspaceFolders()
7985
//}
86+
87+
//didChangeWorkspaceFolders impl
88+
89+
//didChangeWatchedFiles
90+
private fun didChangeWatchedFiles(events: List<VFileEvent>) {
91+
executeIfRunning(project) {
92+
if (events.isNotEmpty()) {
93+
it.workspaceService.didChangeWatchedFiles(
94+
DidChangeWatchedFilesParams().apply {
95+
changes = events.map { event ->
96+
FileEvent().apply {
97+
uri = event.file?.toNioPath()?.toUri().toString()
98+
type = when (event) {
99+
is VFileCreateEvent -> FileChangeType.Created
100+
is VFileDeleteEvent -> FileChangeType.Deleted
101+
else -> FileChangeType.Changed
102+
}
103+
}
104+
}
105+
}
106+
)
107+
}
108+
}
109+
}
80110
}

0 commit comments

Comments
 (0)