Skip to content

Commit 6482c16

Browse files
Morgan Bartholomewintellij-monorepo-bot
authored andcommitted
PY-85418 Cannot select interpreter to use with black
reverted some changes from lsp feature closes PY-85418 GitOrigin-RevId: 85ec188c3afd3d77cdcfb7cb65663133497dadc9
1 parent ea1b543 commit 6482c16

3 files changed

Lines changed: 29 additions & 33 deletions

File tree

python/src/com/jetbrains/python/black/configuration/BlackFormatterConfigurable.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ import com.jetbrains.python.black.BlackFormatterUtil
3232
import com.jetbrains.python.black.BlackFormatterVersionService
3333
import com.jetbrains.python.black.BlackFormatterVersionService.Companion.UNKNOWN_VERSION
3434
import com.jetbrains.python.black.configuration.BlackFormatterConfiguration.BlackFormatterOption.Companion.toCliOptionFlags
35-
import com.jetbrains.python.externaltools.configuration.createPythonSdkComboBox
3635
import com.jetbrains.python.packaging.management.ui.PythonPackageManagerUI
3736
import com.jetbrains.python.packaging.management.ui.installPackageBackground
3837
import com.jetbrains.python.sdk.pythonSdk
@@ -73,8 +72,7 @@ class BlackFormatterConfigurable(val project: Project) : BoundConfigurable(PyBun
7372
.withTitle(@Suppress("DialogTitleCapitalization") PyBundle.message("black.select.path.to.executable")))
7473
}
7574

76-
// TODO: initial should be project default
77-
private val sdkSelectionComboBox = createPythonSdkComboBox(project, null)
75+
private val sdkSelectionComboBox = createPythonSdkComboBox(project.modules.mapNotNull { it.pythonSdk }, null)
7876

7977
private val cliArgumentsTextField = BlackTextFieldWithAutoCompletion(project, object :
8078
TextFieldWithAutoCompletionListProvider<BlackFormatterConfiguration.CliOptionFlag>(
@@ -181,6 +179,7 @@ class BlackFormatterConfigurable(val project: Project) : BoundConfigurable(PyBun
181179
executionModeComboBox.addActionListener { updateUiState() }
182180

183181
sdkSelectionComboBox.addActionListener {
182+
selectedSdk = sdkSelectionComboBox.item
184183
updateSdkInfo()
185184
updateUiState()
186185
}
@@ -191,6 +190,7 @@ class BlackFormatterConfigurable(val project: Project) : BoundConfigurable(PyBun
191190
enableOnSaveCheckBox.isSelected = storedState.enabledOnSave
192191
executionModeComboBox.item = storedState.executionMode
193192
cliArgumentsTextField.text = storedState.cmdArguments
193+
sdkSelectionComboBox.item = selectedSdk
194194

195195
blackExecutablePathField.emptyText.text = getBlackExecPathPlaceholderMessage()
196196
storedState.pathToExecutable?.let {
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
2+
package com.jetbrains.python.black.configuration
3+
4+
import com.intellij.openapi.projectRoots.Sdk
5+
import com.intellij.openapi.ui.ComboBox
6+
import com.intellij.openapi.util.io.FileUtil
7+
import com.intellij.ui.CollectionComboBoxModel
8+
import com.intellij.ui.ComboboxSpeedSearch
9+
import com.jetbrains.python.sdk.PySdkListCellRenderer
10+
11+
internal fun createPythonSdkComboBox(sdks: List<Sdk>, initialSelection: Sdk?): ComboBox<Sdk> {
12+
val comboBox = ComboBox<Sdk>()
13+
comboBox.model = CollectionComboBoxModel(sdks.toMutableList(), initialSelection)
14+
comboBox.renderer = PySdkListCellRenderer()
15+
comboBox.addActionListener { comboBox.updateTooltip() }
16+
ComboboxSpeedSearch.installOn(comboBox)
17+
comboBox.updateTooltip()
18+
return comboBox
19+
}
20+
21+
private fun ComboBox<*>.updateTooltip() {
22+
val item: Any? = getSelectedItem()
23+
val sdkHomePath = if (item is Sdk) item.homePath else null
24+
setToolTipText(if (sdkHomePath != null) FileUtil.toSystemDependentName(sdkHomePath) else null)
25+
}
26+

python/src/com/jetbrains/python/externaltools/configuration/PySdkChooser.kt

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -2,41 +2,11 @@
22
package com.jetbrains.python.externaltools.configuration
33

44
import com.intellij.openapi.project.Project
5-
import com.intellij.openapi.project.modules
65
import com.intellij.openapi.projectRoots.Sdk
7-
import com.intellij.openapi.ui.ComboBox
8-
import com.intellij.openapi.util.io.FileUtil
9-
import com.intellij.ui.CollectionComboBoxModel
10-
import com.intellij.ui.ComboboxSpeedSearch
11-
import com.jetbrains.python.sdk.PySdkListCellRenderer
126
import com.jetbrains.python.sdk.PythonSdkUtil
137
import com.jetbrains.python.sdk.pythonSdk
148

159
const val DEFAULT_ENVIRONMENT: String = "Project Default"
1610

1711
fun Project.sdkByNameDefaultAware(name: String): Sdk? =
1812
if (name == DEFAULT_ENVIRONMENT) pythonSdk else PythonSdkUtil.findSdkByKey(name)
19-
20-
fun createPythonSdkComboBox(project: Project, initialSelection: Any?): ComboBox<Any> {
21-
val sdks = buildList {
22-
project.pythonSdk?.let { add(it) }
23-
project.modules.mapNotNullTo(this) { it.pythonSdk }
24-
}.distinct()
25-
return ComboBox<Any>().apply {
26-
model = CollectionComboBoxModel(
27-
// we use a simple string here, ideally we should introduce some special class for this
28-
(listOf(DEFAULT_ENVIRONMENT) + sdks).toMutableList(),
29-
initialSelection,
30-
)
31-
renderer = PySdkListCellRenderer()
32-
addActionListener { updateTooltip() }
33-
ComboboxSpeedSearch.installOn(this)
34-
updateTooltip()
35-
}
36-
}
37-
38-
private fun ComboBox<*>.updateTooltip() {
39-
val item = selectedItem
40-
val sdkHomePath = if (item is Sdk) item.homePath else null
41-
setToolTipText(if (sdkHomePath != null) FileUtil.toSystemDependentName(sdkHomePath) else null)
42-
}

0 commit comments

Comments
 (0)