-
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Listener.kt
45 lines (34 loc) · 1.42 KB
/
Listener.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package com.insyncwithfoo.pyrightls.server
import com.insyncwithfoo.pyrightls.pyrightLSConfigurations
import com.insyncwithfoo.pyrightls.sdkPath
import com.intellij.openapi.project.Project
import com.intellij.platform.lsp.api.LspServerListener
import com.intellij.platform.lsp.api.LspServerManager
import org.eclipse.lsp4j.DidChangeConfigurationParams
import org.eclipse.lsp4j.InitializeResult
private fun Project.createPyrightLSSettingsObject() = Settings {
val configurations = pyrightLSConfigurations
python {
pythonPath = sdkPath?.toString()
analysis {
logLevel = configurations.logLevel.label
autoImportCompletions = configurations.autoImportCompletions
}
}
pyright {
disableTaggedHints = !configurations.taggedHints
}
}
@Suppress("UnstableApiUsage")
internal class Listener(val project: Project) : LspServerListener {
override fun serverInitialized(params: InitializeResult) {
val lspServerManager = LspServerManager.getInstance(project)
val settings = project.createPyrightLSSettingsObject()
val parameters = DidChangeConfigurationParams(settings)
lspServerManager.getServersForProvider(PyrightLSSupportProvider::class.java).forEach { lspServer ->
lspServer.sendNotification {
it.workspaceService.didChangeConfiguration(parameters)
}
}
}
}