@@ -7,8 +7,8 @@ import com.jetbrains.ls.api.core.util.jarLibraries
77import com.jetbrains.ls.api.core.util.toLspUri
88import com.jetbrains.ls.api.core.util.updateWorkspaceModel
99import com.jetbrains.ls.api.features.LSConfiguration
10- import com.jetbrains.ls.api.features.codeActions.LSCodeActions
1110import com.jetbrains.ls.api.features.allCommandDescriptors
11+ import com.jetbrains.ls.api.features.codeActions.LSCodeActions
1212import com.jetbrains.ls.api.features.completion.LSCompletionProvider
1313import com.jetbrains.ls.api.features.entries
1414import com.jetbrains.ls.api.features.semanticTokens.LSSemanticTokens
@@ -20,12 +20,7 @@ import com.jetbrains.ls.kotlinLsp.connection.Client
2020import com.jetbrains.ls.kotlinLsp.util.importProject
2121import com.jetbrains.ls.kotlinLsp.util.registerStdlibAndJdk
2222import 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.*
2924import com.jetbrains.lsp.protocol.*
3025import kotlinx.coroutines.CancellationException
3126import kotlinx.serialization.json.JsonPrimitive
@@ -145,8 +140,14 @@ private suspend fun indexFolders(
145140 )
146141 )
147142
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 )
150151 }
151152
152153 lspClient.reportProgress(
@@ -208,28 +209,28 @@ private suspend fun initFolder(
208209 } else {
209210 LOG .info(" No build system found for $folderPath , switching to light edit" )
210211 }
211- initFolderForLightEdit(folder, params)
212- }
213212
213+ lspClient.reportProgressMessage(params, " No build system found for $folderPath , using light mode" )
214+ initLightEditMode(params, folder)
215+ }
214216
215217context(_: LSServer , _: LSConfiguration , _: LspHandlerContext )
216- private suspend fun initFolderForLightEdit (
217- folder : WorkspaceFolder ,
218+ private suspend fun initLightEditMode (
218219 params : InitializeParams ,
220+ folder : WorkspaceFolder ? ,
219221) {
220- val folderPath = folder.path()
221-
222- lspClient.reportProgressMessage(params, " No build system found for $folderPath , using light mode" )
223222 updateWorkspaceModel {
224223 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+ }
233234 }
234235 }
235236 }
0 commit comments