@@ -35,15 +35,19 @@ class WorkspaceServiceHandler(
3535 }
3636
3737 private fun didCreateFiles (events : List <VFileEvent >) {
38- AmazonQLspService .executeIfRunning(project) {
39- if (events.isNotEmpty()) {
40- it.workspaceService.didCreateFiles(
38+ AmazonQLspService .executeIfRunning(project) { languageServer ->
39+ val validFiles = events.mapNotNull { event ->
40+ event.file?.toNioPath()?.toUri()?.toString()?.takeIf { it.isNotEmpty() }?.let { uri ->
41+ FileCreate ().apply {
42+ this .uri = uri
43+ }
44+ }
45+ }
46+
47+ if (validFiles.isNotEmpty()) {
48+ languageServer.workspaceService.didCreateFiles(
4149 CreateFilesParams ().apply {
42- files = events.map { event ->
43- FileCreate ().apply {
44- uri = event.file?.toNioPath()?.toUri().toString()
45- }
46- }
50+ files = validFiles
4751 }
4852 )
4953 }
@@ -52,15 +56,45 @@ class WorkspaceServiceHandler(
5256
5357 private fun didDeleteFiles (events : List <VFileEvent >) {
5458 AmazonQLspService .executeIfRunning(project) { languageServer ->
55- if (events.isNotEmpty()) {
59+ val validFiles = events.mapNotNull { event ->
60+ event.file?.toNioPath()?.toUri()?.toString()?.takeIf { it.isNotEmpty() }?.let { uri ->
61+ FileDelete ().apply {
62+ this .uri = uri
63+ }
64+ }
65+ }
66+
67+ if (validFiles.isNotEmpty()) {
5668 languageServer.workspaceService.didDeleteFiles(
5769 DeleteFilesParams ().apply {
58- files = events.map { event ->
59- FileDelete ().apply {
60- uri = event.file?.toNioPath()?.toUri().toString()
61- }
70+ files = validFiles
71+ }
72+ )
73+ }
74+ }
75+ }
76+
77+
78+ private fun didChangeWatchedFiles (events : List <VFileEvent >) {
79+ AmazonQLspService .executeIfRunning(project) { languageServer ->
80+ val validChanges = events.mapNotNull { event ->
81+ event.file?.toNioPath()?.toUri()?.toString()?.takeIf { it.isNotEmpty() }?.let { uri ->
82+ FileEvent ().apply {
83+ this .uri = uri
84+ type = when (event) {
85+ is VFileCreateEvent -> FileChangeType .Created
86+ is VFileDeleteEvent -> FileChangeType .Deleted
87+ else -> FileChangeType .Changed
6288 }
6389 }
90+ }
91+ }
92+
93+ if (validChanges.isNotEmpty()) {
94+ languageServer.workspaceService.didChangeWatchedFiles(
95+ DidChangeWatchedFilesParams ().apply {
96+ changes = validChanges
97+ }
6498 )
6599 }
66100 }
@@ -74,25 +108,4 @@ class WorkspaceServiceHandler(
74108 didChangeWatchedFiles(events)
75109 }
76110 }
77-
78- private fun didChangeWatchedFiles (events : List <VFileEvent >) {
79- AmazonQLspService .executeIfRunning(project) {
80- if (events.isNotEmpty()) {
81- it.workspaceService.didChangeWatchedFiles(
82- DidChangeWatchedFilesParams ().apply {
83- changes = events.map { event ->
84- FileEvent ().apply {
85- uri = event.file?.toNioPath()?.toUri().toString()
86- type = when (event) {
87- is VFileCreateEvent -> FileChangeType .Created
88- is VFileDeleteEvent -> FileChangeType .Deleted
89- else -> FileChangeType .Changed
90- }
91- }
92- }
93- }
94- )
95- }
96- }
97- }
98111}
0 commit comments