mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-18 20:41:22 +07:00
[python] PY-79486: Move Module.pythonSdk to sdk module and reuse it multi-module project.
GitOrigin-RevId: db441216c40aa35cbf494e05e3f6b549cd261cd6
This commit is contained in:
committed by
intellij-monorepo-bot
parent
994ed3ec13
commit
957eac5c13
25
python/python-sdk/src/com/jetbrains/python/sdk/ModuleEx.kt
Normal file
25
python/python-sdk/src/com/jetbrains/python/sdk/ModuleEx.kt
Normal file
@@ -0,0 +1,25 @@
|
||||
package com.jetbrains.python.sdk
|
||||
|
||||
import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.application.runInEdt
|
||||
import com.intellij.openapi.diagnostic.fileLogger
|
||||
import com.intellij.openapi.module.Module
|
||||
import com.intellij.openapi.projectRoots.Sdk
|
||||
import com.intellij.openapi.roots.ModuleRootModificationUtil
|
||||
import com.jetbrains.python.sdk.legacy.PythonSdkUtil
|
||||
|
||||
var Module.pythonSdk: Sdk?
|
||||
get() = PythonSdkUtil.findPythonSdk(this)
|
||||
set(newSdk) {
|
||||
val prevSdk = pythonSdk
|
||||
thisLogger.info("Setting PythonSDK $newSdk to module $this")
|
||||
ModuleRootModificationUtil.setModuleSdk(this, newSdk)
|
||||
runInEdt {
|
||||
DaemonCodeAnalyzer.getInstance(project).restart("Setting PythonSDK $newSdk to module $this")
|
||||
}
|
||||
ApplicationManager.getApplication().messageBus.syncPublisher(PySdkListener.TOPIC).moduleSdkUpdated(this, prevSdk, newSdk)
|
||||
}
|
||||
|
||||
|
||||
private val thisLogger = fileLogger()
|
||||
@@ -0,0 +1,18 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.jetbrains.python.sdk
|
||||
|
||||
import com.intellij.openapi.module.Module
|
||||
import com.intellij.openapi.projectRoots.Sdk
|
||||
import com.intellij.util.messages.Topic
|
||||
import org.jetbrains.annotations.ApiStatus
|
||||
|
||||
@ApiStatus.Internal
|
||||
interface PySdkListener {
|
||||
@ApiStatus.Internal
|
||||
fun moduleSdkUpdated(module: Module, prevSdk: Sdk?, newSdk: Sdk?)
|
||||
|
||||
companion object {
|
||||
@ApiStatus.Internal
|
||||
val TOPIC: Topic<PySdkListener> = Topic.create("Python SDK listener", PySdkListener::class.java)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user