Skip to content

Commit fefd763

Browse files
gregshintellij-monorepo-bot
authored andcommitted
[analyzer] Init workspace model for a single file
GitOrigin-RevId: 920f02bce45deffdc3578cc69e048404913f466a
1 parent 7001dea commit fefd763

File tree

1 file changed

+25
-24
lines changed
  • kotlin-lsp/src/com/jetbrains/ls/kotlinLsp/requests/core

1 file changed

+25
-24
lines changed

kotlin-lsp/src/com/jetbrains/ls/kotlinLsp/requests/core/initialize.kt

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ import com.jetbrains.ls.api.core.util.jarLibraries
77
import com.jetbrains.ls.api.core.util.toLspUri
88
import com.jetbrains.ls.api.core.util.updateWorkspaceModel
99
import com.jetbrains.ls.api.features.LSConfiguration
10-
import com.jetbrains.ls.api.features.codeActions.LSCodeActions
1110
import com.jetbrains.ls.api.features.allCommandDescriptors
11+
import com.jetbrains.ls.api.features.codeActions.LSCodeActions
1212
import com.jetbrains.ls.api.features.completion.LSCompletionProvider
1313
import com.jetbrains.ls.api.features.entries
1414
import com.jetbrains.ls.api.features.semanticTokens.LSSemanticTokens
@@ -20,12 +20,7 @@ import com.jetbrains.ls.kotlinLsp.connection.Client
2020
import com.jetbrains.ls.kotlinLsp.util.importProject
2121
import com.jetbrains.ls.kotlinLsp.util.registerStdlibAndJdk
2222
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.*
2924
import com.jetbrains.lsp.protocol.*
3025
import kotlinx.coroutines.CancellationException
3126
import 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

215217
context(_: 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

Comments
 (0)