@@ -4,13 +4,23 @@ import com.intellij.execution.configurations.GeneralCommandLine
44import com.intellij.openapi.project.Project
55import com.intellij.openapi.vfs.VirtualFile
66import com.intellij.platform.lsp.api.ProjectWideLspServerDescriptor
7+ import com.intellij.platform.lsp.api.customization.LspCompletionCustomizer
8+ import com.intellij.platform.lsp.api.customization.LspCompletionDisabled
9+ import com.intellij.platform.lsp.api.customization.LspCustomization
10+ import com.intellij.platform.lsp.api.customization.LspDiagnosticsCustomizer
11+ import com.intellij.platform.lsp.api.customization.LspDiagnosticsDisabled
12+ import com.intellij.platform.lsp.api.customization.LspInlayHintCustomizer
13+ import com.intellij.platform.lsp.api.customization.LspInlayHintDisabled
714import insyncwithfoo.ryecharm.common.logging.tyLogger
815import insyncwithfoo.ryecharm.configurations.ty.tyConfigurations
916import insyncwithfoo.ryecharm.isSupportedByTY
1017import insyncwithfoo.ryecharm.message
1118import insyncwithfoo.ryecharm.path
19+ import insyncwithfoo.ryecharm.ty.WorkspaceConfiguration
1220import insyncwithfoo.ryecharm.ty.createInitializationOptionsObject
21+ import insyncwithfoo.ryecharm.ty.createWorkspaceConfigurationObject
1322import org.eclipse.lsp4j.ClientCapabilities
23+ import org.eclipse.lsp4j.ConfigurationItem
1424import java.nio.file.Path
1525
1626
@@ -20,6 +30,28 @@ internal class TYServerDescriptor(project: Project, private val executable: Path
2030
2131 private val configurations = project.tyConfigurations
2232
33+ override val lspCustomization = object : LspCustomization () {
34+
35+ override val diagnosticsCustomizer: LspDiagnosticsCustomizer
36+ get() = when (configurations.diagnostics) {
37+ true -> DiagnosticsSupport ()
38+ else -> LspDiagnosticsDisabled
39+ }
40+
41+ override val inlayHintCustomizer: LspInlayHintCustomizer
42+ get() = when (configurations.inlayHints) {
43+ true -> InlayHintSupport ()
44+ else -> LspInlayHintDisabled
45+ }
46+
47+ override val completionCustomizer: LspCompletionCustomizer
48+ get() = when (configurations.completions) {
49+ true -> CompletionSupport ()
50+ else -> LspCompletionDisabled
51+ }
52+
53+ }
54+
2355 override val clientCapabilities: ClientCapabilities
2456 get() = super .clientCapabilities.apply {
2557 textDocument.apply {
@@ -50,6 +82,21 @@ internal class TYServerDescriptor(project: Project, private val executable: Path
5082 logger?.info(" " )
5183 }
5284
85+ override fun getWorkspaceConfiguration (item : ConfigurationItem ): WorkspaceConfiguration ? {
86+ val value = when (item.section) {
87+ " ty" -> project.createWorkspaceConfigurationObject()
88+ else -> null
89+ }
90+
91+ return value.also {
92+ val logger = project.tyLogger
93+
94+ logger?.info(" Sending workspace configuration item for ${item.section} @ ${item.scopeUri} :" )
95+ logger?.info(" $it " )
96+ logger?.info(" " )
97+ }
98+ }
99+
53100 override fun createCommandLine () = GeneralCommandLine ().apply {
54101 withWorkingDirectory(project.path)
55102 withCharset(Charsets .UTF_8 )
0 commit comments