Skip to content

Commit 429f5e9

Browse files
committed
update listeners
1 parent 788e833 commit 429f5e9

File tree

2 files changed

+39
-36
lines changed

2 files changed

+39
-36
lines changed

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ internal class LSPProcessListener : ProcessListener {
8787

8888
@Service(Service.Level.PROJECT)
8989
class AmazonQLspService(private val project: Project, private val cs: CoroutineScope) : Disposable {
90-
private var instance: AmazonQServerInstance? = null
90+
internal var instance: AmazonQServerInstance? = null
9191

9292
init {
9393
cs.launch {
@@ -112,12 +112,12 @@ class AmazonQLspService(private val project: Project, private val cs: CoroutineS
112112
}
113113
}
114114

115-
private class AmazonQServerInstance(private val project: Project, private val cs: CoroutineScope) : Disposable {
115+
internal class AmazonQServerInstance(private val project: Project, private val cs: CoroutineScope) : Disposable {
116116
private val encryptionManager = JwtEncryptionManager()
117117

118118
private val launcher: Launcher<AmazonQLanguageServer>
119119

120-
private val languageServer: AmazonQLanguageServer
120+
internal val languageServer: AmazonQLanguageServer
121121
get() = launcher.remoteProxy
122122

123123
@Suppress("ForbiddenVoid")

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

Lines changed: 36 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -15,59 +15,62 @@ import org.eclipse.lsp4j.DeleteFilesParams
1515
import org.eclipse.lsp4j.FileCreate
1616
import org.eclipse.lsp4j.FileDelete
1717
import software.aws.toolkits.jetbrains.services.amazonq.lsp.AmazonQLanguageServer
18+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.AmazonQLspService
1819
import software.aws.toolkits.jetbrains.utils.pluginAwareExecuteOnPooledThread
1920

2021
class WorkspaceServiceHandler(
2122
private val project: Project,
22-
private val languageServer: AmazonQLanguageServer,
23-
private val serverInstance: Disposable
24-
){
23+
serverInstance: Disposable
24+
): BulkFileListener {
2525

2626
init{
27-
startFileLifecycleListener()
27+
project.messageBus.connect(serverInstance).subscribe(
28+
VirtualFileManager.VFS_CHANGES,
29+
this
30+
)
2831
}
2932

33+
private fun executeIfRunning(project: Project, runnable: (AmazonQLanguageServer) -> Unit) =
34+
AmazonQLspService.getInstance(project).instance?.languageServer?.let { runnable(it) }
35+
3036
private fun didCreateFiles(events: List<VFileEvent>){
31-
if (events.isNotEmpty()) {
32-
languageServer.workspaceService.didCreateFiles(
33-
CreateFilesParams().apply {
34-
files = events.map { event ->
35-
FileCreate().apply {
36-
uri = event.file?.toNioPath()?.toUri().toString()
37+
executeIfRunning(project) {
38+
if (events.isNotEmpty()) {
39+
it.workspaceService.didCreateFiles(
40+
CreateFilesParams().apply {
41+
files = events.map { event ->
42+
FileCreate().apply {
43+
uri = event.file?.toNioPath()?.toUri().toString()
44+
}
3745
}
3846
}
39-
}
40-
)
47+
)
48+
}
4149
}
4250
}
4351

4452
private fun didDeleteFiles(events: List<VFileEvent>) {
45-
if (events.isNotEmpty()) {
46-
languageServer.workspaceService.didDeleteFiles(
47-
DeleteFilesParams().apply {
48-
files = events.map { event ->
49-
FileDelete().apply {
50-
uri = event.file?.toNioPath()?.toUri().toString()
53+
executeIfRunning(project) { languageServer ->
54+
if (events.isNotEmpty()) {
55+
languageServer.workspaceService.didDeleteFiles(
56+
DeleteFilesParams().apply {
57+
files = events.map { event ->
58+
FileDelete().apply {
59+
uri = event.file?.toNioPath()?.toUri().toString()
60+
}
5161
}
5262
}
53-
}
54-
)
63+
)
64+
}
5565
}
5666
}
5767

58-
private fun startFileLifecycleListener() {
59-
project.messageBus.connect(serverInstance).subscribe(
60-
VirtualFileManager.VFS_CHANGES,
61-
object : BulkFileListener {
62-
override fun after(events: List<VFileEvent>) {
63-
// since we are using synchronous FileListener
64-
pluginAwareExecuteOnPooledThread {
65-
didCreateFiles(events.filterIsInstance<VFileCreateEvent>())
66-
didDeleteFiles(events.filterIsInstance<VFileDeleteEvent>())
67-
}
68-
}
69-
}
70-
)
68+
override fun after(events: List<VFileEvent>) {
69+
// since we are using synchronous FileListener
70+
pluginAwareExecuteOnPooledThread {
71+
didCreateFiles(events.filterIsInstance<VFileCreateEvent>())
72+
didDeleteFiles(events.filterIsInstance<VFileDeleteEvent>())
73+
}
7174
}
7275

7376
// still need to implement

0 commit comments

Comments
 (0)