@@ -19,11 +19,12 @@ package org.swiftformat.plugin
19
19
20
20
import com.google.common.base.Preconditions
21
21
import com.intellij.ide.plugins.PluginManagerCore
22
+ import com.intellij.openapi.extensions.PluginDescriptor
22
23
import com.intellij.openapi.extensions.PluginId
23
24
import com.intellij.openapi.project.Project
24
25
import com.intellij.openapi.project.ProjectManagerListener
25
26
import com.intellij.psi.codeStyle.CodeStyleManager
26
- import com.intellij.serviceContainer.ComponentManagerImpl
27
+ import kotlin.reflect.jvm.kotlinFunction
27
28
28
29
/* *
29
30
* A component that replaces the default IntelliJ [CodeStyleManager] with one that formats via
@@ -45,11 +46,21 @@ internal class SwiftFormatInstaller : ProjectManagerListener {
45
46
}
46
47
47
48
private fun setManager (project : Project , newManager : CodeStyleManager ) {
48
- val platformComponentManager = project as ComponentManagerImpl
49
+ val componentManagerImplClass =
50
+ (Class .forName(" com.intellij.serviceContainer.ComponentManagerImpl" ))
51
+ val registerServiceInstanceMethod =
52
+ componentManagerImplClass
53
+ .getMethod(
54
+ " registerServiceInstance" ,
55
+ Class ::class .java,
56
+ Object ::class .java,
57
+ PluginDescriptor ::class .java)
58
+ .kotlinFunction
59
+ val platformComponentManager = componentManagerImplClass.cast(project)
49
60
val plugin = PluginManagerCore .getPlugin(PluginId .getId(" org.swiftformat.plugin" ))
50
61
Preconditions .checkState(plugin != null , " Couldn't locate our own PluginDescriptor." )
51
- platformComponentManager.registerServiceInstance (
52
- CodeStyleManager ::class .java, newManager, plugin!! )
62
+ registerServiceInstanceMethod !! .call (
63
+ platformComponentManager, CodeStyleManager ::class .java, newManager, plugin!! )
53
64
}
54
65
}
55
66
}
0 commit comments