@@ -7,8 +7,8 @@ import com.jetbrains.ls.api.core.util.jarLibraries
7
7
import com.jetbrains.ls.api.core.util.toLspUri
8
8
import com.jetbrains.ls.api.core.util.updateWorkspaceModel
9
9
import com.jetbrains.ls.api.features.LSConfiguration
10
- import com.jetbrains.ls.api.features.codeActions.LSCodeActions
11
10
import com.jetbrains.ls.api.features.allCommandDescriptors
11
+ import com.jetbrains.ls.api.features.codeActions.LSCodeActions
12
12
import com.jetbrains.ls.api.features.completion.LSCompletionProvider
13
13
import com.jetbrains.ls.api.features.entries
14
14
import com.jetbrains.ls.api.features.semanticTokens.LSSemanticTokens
@@ -20,12 +20,7 @@ import com.jetbrains.ls.kotlinLsp.connection.Client
20
20
import com.jetbrains.ls.kotlinLsp.util.importProject
21
21
import com.jetbrains.ls.kotlinLsp.util.registerStdlibAndJdk
22
22
import com.jetbrains.ls.kotlinLsp.util.sendSystemInfoToClient
23
- import com.jetbrains.lsp.implementation.LspClient
24
- import com.jetbrains.lsp.implementation.LspHandlerContext
25
- import com.jetbrains.lsp.implementation.LspHandlersBuilder
26
- import com.jetbrains.lsp.implementation.lspClient
27
- import com.jetbrains.lsp.implementation.reportProgress
28
- import com.jetbrains.lsp.implementation.reportProgressMessage
23
+ import com.jetbrains.lsp.implementation.*
29
24
import com.jetbrains.lsp.protocol.*
30
25
import kotlinx.coroutines.CancellationException
31
26
import kotlinx.serialization.json.JsonPrimitive
@@ -145,8 +140,14 @@ private suspend fun indexFolders(
145
140
)
146
141
)
147
142
148
- for (folder in folders) {
149
- initFolder(folder, params)
143
+ if (folders.isNotEmpty()) {
144
+ for (folder in folders) {
145
+ initFolder(folder, params)
146
+ }
147
+ }
148
+ else {
149
+ lspClient.reportProgressMessage(params, " Using light mode" )
150
+ initLightEditMode(params, null )
150
151
}
151
152
152
153
lspClient.reportProgress(
@@ -208,28 +209,28 @@ private suspend fun initFolder(
208
209
} else {
209
210
LOG .info(" No build system found for $folderPath , switching to light edit" )
210
211
}
211
- initFolderForLightEdit(folder, params)
212
- }
213
212
213
+ lspClient.reportProgressMessage(params, " No build system found for $folderPath , using light mode" )
214
+ initLightEditMode(params, folder)
215
+ }
214
216
215
217
context(_: LSServer , _: LSConfiguration , _: LspHandlerContext )
216
- private suspend fun initFolderForLightEdit (
217
- folder : WorkspaceFolder ,
218
+ private suspend fun initLightEditMode (
218
219
params : InitializeParams ,
220
+ folder : WorkspaceFolder ? ,
219
221
) {
220
- val folderPath = folder.path()
221
-
222
- lspClient.reportProgressMessage(params, " No build system found for $folderPath , using light mode" )
223
222
updateWorkspaceModel {
224
223
registerStdlibAndJdk()
225
- addFolder(folder)
226
- if (folder.uri.scheme == URI .Schemas .FILE ) {
227
- val path = folderPath
228
- val librariesDir = path / " libraries"
229
- if (librariesDir.isDirectory()) {
230
- lspClient.reportProgressMessage(params, " Found `libraries` directory: $librariesDir , adding" )
231
- jarLibraries(librariesDir).forEach { lib ->
232
- addLibrary(lib)
224
+ if (folder != null ) {
225
+ addFolder(folder)
226
+ if (folder.uri.scheme == URI .Schemas .FILE ) {
227
+ val path = folder.path()
228
+ val librariesDir = path / " libraries"
229
+ if (librariesDir.isDirectory()) {
230
+ lspClient.reportProgressMessage(params, " Found `libraries` directory: $librariesDir , adding" )
231
+ jarLibraries(librariesDir).forEach { lib ->
232
+ addLibrary(lib)
233
+ }
233
234
}
234
235
}
235
236
}
0 commit comments