Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
bda50f1
[winforms] fix RIDER-136940 Designer can't be opened when project ref…
Mar 17, 2026
58136bd
[python] PY-87496 The user experience of debugging has changed a lot
EliseevEgor Feb 27, 2026
2688652
PY-87975 UI for switching between debug backends
EliseevEgor Mar 4, 2026
6b23a00
[python] PY-87496 The user experience of debugging has changed a lot
EliseevEgor Mar 5, 2026
53e3e42
PY-87975 debugpy: add Jupyter backend switch handler and improve debu…
EliseevEgor Mar 11, 2026
ccb570b
PY-88333 [FUS] Add events for debug backend modes switcher
EliseevEgor Mar 13, 2026
3084380
PY-87343 Fix missing resolve for `typing.NewType.__or__`
PetrGolubev Feb 19, 2026
1021217
[vcs]: close init vcs dialog after opening plugin page (IJPL-234896)
dmitry-zhuravlev Feb 26, 2026
b4575a2
PY-86454: Autoconfigure python SDK even when there are several module…
throwable-one Feb 26, 2026
7415261
[terminal] IJPL-228874 Report to FUS when terminal tab is opened usin…
KonstantinHudyakov Feb 4, 2026
fc0a09c
[terminal] IJPL-233424 Make subcommand from allowlist match any command
KonstantinHudyakov Mar 3, 2026
a7ef44a
[terminal] IJPL-233424 Report third.party value for unknown commands …
KonstantinHudyakov Mar 3, 2026
6f5ddb2
[terminal] IJPL-233424 Allow reporting multiword subcommands
KonstantinHudyakov Mar 4, 2026
98166ae
[terminal] IJPL-233424 Add test for loggable command data calculation
KonstantinHudyakov Mar 4, 2026
250a4ce
[terminal] IJPL-233424 Report home-related path commands as '<absolut…
KonstantinHudyakov Mar 4, 2026
6b24bc6
[terminal] IJPL-233424 Improve TerminalKnownCommandsListTest
KonstantinHudyakov Mar 4, 2026
15678c9
[terminal] IJPL-233424 Extend list of know commands
KonstantinHudyakov Mar 4, 2026
3ef039e
[terminal] IJPL-233424 Allow case-insensitive matching of executable …
KonstantinHudyakov Mar 4, 2026
c517d04
[terminal] IJPL-233424 Take gradlew subcommands into account
KonstantinHudyakov Mar 4, 2026
79ed2cb
[terminal] IJPL-233424 Increment FUS group versions where allowed com…
KonstantinHudyakov Mar 4, 2026
ef21cf4
PY-88447 `TypeEvalContext`: make the companion public
Mar 17, 2026
0fe6ec4
PY-88280 Convert PyModuleService to Kotlin project-level service with…
vlegchilkin Mar 17, 2026
4464182
PY-88280 Add global SDK configuration mutex and wire into SDK setup f…
vlegchilkin Mar 17, 2026
fe8bea3
PY-88280 Extract autoConfigureSdkIfNeeded and simplify SDK auto-confi…
vlegchilkin Mar 17, 2026
f143788
PY-88280 Replace switchToSdk with PySdkListener-based transferred roo…
vlegchilkin Mar 17, 2026
aea199e
PY-88280 Simplify PyConfigurableInterpreterList, SDK creation, and py…
vlegchilkin Mar 17, 2026
cb02504
PY-88280 Create venv in .venv subdirectory in pyVenvFixture
vlegchilkin Mar 17, 2026
fc5d741
PY-83395 Fix flaky PyMarkDirectoryAsSourceRootQuickFixTest
vlegchilkin Mar 17, 2026
1327494
PY-88280 fix PyVirtualEnvTerminalCustomizerTest to use .venv subdirec…
vlegchilkin Mar 18, 2026
8f9e90d
PY-88280 Fix deadlock: move SDK configuration mutex from setupSdk to …
vlegchilkin Mar 18, 2026
5673378
KTNB-1431 Add Kotlin Jupyter integrations to FUS
ileasile Mar 18, 2026
737b207
IJI-725 [fus]: auto-update bundled metadata
Mar 19, 2026
d34cc16
[maven] IDEA-381248 PY-88491 avoid applying DelegateBuildRunner autom…
nskvortsov Mar 19, 2026
f80d8d9
[maven] IDEA-381248 PY-88491 adjust tests with runner non-applicability.
nskvortsov Mar 19, 2026
99c17fc
IJI-725 [fus]: auto-update bundled metadata
Mar 19, 2026
0369433
PY-88507: fix SSH executable validation using POSIX-portable shell
vlegchilkin Mar 19, 2026
6da6c26
IJI-725 [fus]: auto-update bundled metadata
Mar 19, 2026
dcf6879
[vcs]: add plugins migration (IJPL-236292)
dmitry-zhuravlev Feb 23, 2026
997915c
PY-88493 Speed up Python Packages toolwindow refresh pacaging operati…
TimurMalanin Mar 20, 2026
362c8f0
misc [platform]: skipping global plugin migration in the unit test mo…
trespasserw Mar 11, 2026
56c2fb2
PY-88280 Add timeout workaround for isJpsProjectLoaded in PyModuleSer…
vlegchilkin Mar 20, 2026
ab7d050
IJI-725 [fus]: auto-update bundled metadata
Mar 20, 2026
e011344
PY-88270 UV existing environment selector: Docker/remote support and …
vlegchilkin Mar 9, 2026
a4b2c6b
PY-88127 improve uv inspection: skip optional-deps/dependency-groups,…
TimurMalanin Mar 20, 2026
34c0f19
PY-88470 Fix context menu showing actions for previously selected pac…
TimurMalanin Mar 20, 2026
be54e20
PY-87575 Correctly handle protocol methods defined in metaclasses
Mar 4, 2026
a06bb6e
PY-87344 Bind actual class types to Self when matching protocols
Mar 6, 2026
054e428
IC remove RC suffix https://youtrack.jetbrains.com/issue/RELEASE-837
sofiakondirova-ai Mar 20, 2026
1c7a12f
PY-88583 lsp-tool: fix install tool button
Mar 22, 2026
fb84e80
FUS-7624 FUS-7625 FUS-7629 [fus]: auto-update bundled metadata
Mar 23, 2026
b56f5e4
FUS-7083 [fus]: auto-update bundled metadata
Mar 23, 2026
f71492b
[rd debugger] IJPL-239870 Add public API for runWhenUiReady method
zuevmaxim Mar 20, 2026
d44ff3c
PY-88517 Make pythonSdkConfigurationMutex per-project to prevent cros…
vlegchilkin Mar 23, 2026
90e195f
PY-88606 Fix "no interpreter" message not replaced by package list af…
TimurMalanin Mar 23, 2026
d31b455
PY-88612 use full dependency tree to determine declared packages
TimurMalanin Mar 24, 2026
55574ad
[RELEASE-837] idea IC new release date
AnnaIvanovaA Mar 24, 2026
45e429c
AT-4228: testframework [starter] fix setLicense returning frontend co…
anastakats Mar 7, 2026
eb37c0c
FUS-7079 [fus]: auto-update bundled metadata
Mar 24, 2026
4d000ee
FUS-7379 FUS-7479 [fus]: auto-update bundled metadata
Mar 24, 2026
088fc74
IJPL-239418 [inlays]: improve error message
vobal-jb Mar 23, 2026
f2b43c0
Merge tag 'idea/2026.1' into merge-2026.1
DetachHead Mar 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
1773941860000
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
"dictionaries" : [ "crate_names.ndjson", "dotnet_technologies.ndjson", "grazie_rule_ids.ndjson", "grazie_rule_long_ids.ndjson", "ktor_feature_ids.ndjson", "look_and_feel.ndjson", "python_packages.ndjson" ]
"dictionaries" : [ "composer_packages.ndjson", "crate_names.ndjson", "dotnet_technologies.ndjson", "grazie_rule_ids.ndjson", "grazie_rule_long_ids.ndjson", "ktor_feature_ids.ndjson", "look_and_feel.ndjson", "python_packages.ndjson" ]
}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1765643657
1773937163000

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1 +1 @@
1770308440
1773937163000

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1 +1 @@
1772487304
1774352396000

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1 +1 @@
1768954085
1773937163000

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
1773941860000
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
"dictionaries" : [ "crate_names.ndjson", "dotnet_technologies.ndjson", "grazie_rule_ids.ndjson", "grazie_rule_long_ids.ndjson", "ktor_feature_ids.ndjson", "look_and_feel.ndjson", "python_packages.ndjson" ]
"dictionaries" : [ "composer_packages.ndjson", "crate_names.ndjson", "dotnet_technologies.ndjson", "grazie_rule_ids.ndjson", "grazie_rule_long_ids.ndjson", "ktor_feature_ids.ndjson", "look_and_feel.ndjson", "python_packages.ndjson" ]
}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1765562765
1773937163000

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1 +1 @@
1770308440
1773937163000

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1 +1 @@
1772487304
1774352396000

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1 +1 @@
1772231476
1774355576000

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1 +1 @@
1772457456
1774355576000

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1 +1 @@
1768926036
1773937163000

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1 +1 @@
1772119944
1773937163000

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1 +1 @@
1772229793
1774355576000
4 changes: 2 additions & 2 deletions community-resources/resources/idea/IdeaApplicationInfo.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<component xmlns="http://jetbrains.org/intellij/schema/application-info">
<version major="2026" minor="1" suffix="RC"/>
<version major="2026" minor="1"/>
<company name="JetBrains s.r.o." url="https://www.jetbrains.com"/>
<build number="IC-__BUILD__" date="__BUILD_DATE__" majorReleaseDate="20260324" />
<build number="IC-__BUILD__" date="__BUILD_DATE__" majorReleaseDate="20260325" />
<logo url="/idea_community_logo.png"/>
<icon svg="/idea-ce.svg" svg-small="/idea-ce_16.svg"/>
<icon-eap svg="/idea-ce-eap.svg" svg-small="/idea-ce-eap_16.svg"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -228,8 +228,15 @@
<technology name="kotlinx-datetime" root="kotlinx.datetime"/>
<technology name="kotlinx-html" root="kotlinx.html"/>
<technology name="kotlinx-io" root="kotlinx.io"/>
<technology name="kotlinx-jupyter-ktor-client" root="org.jetbrains.kotlinx.jupyter.ktor.client"/>
<technology name="kotlinx-jupyter-database" root="org.jetbrains.kotlinx.jupyter.database"/>
<technology name="kotlinx-jupyter-intellij-platform" root="org.jetbrains.kotlinx.jupyter.intellij"/>
<technology name="kotlinx-jupyter-json-generation" root="org.jetbrains.kotlinx.jupyter.json"/>
<technology name="kotlinx-jupyter-json2kt" root="org.jetbrains.kotlinx.jupyter.json2kt"/>
<technology name="kotlinx-jupyter-ktor-client" root="org.jetbrains.kotlinx.jupyter.ktor.client"/>
<technology name="kotlinx-jupyter-notebook-parser" root="org.jetbrains.jupyter.parser"/>
<technology name="kotlinx-jupyter-notekit" root="org.jetbrains.kotlinx.jupyter.notebook"/>
<technology name="kotlinx-jupyter-serialization" root="org.jetbrains.kotlinx.jupyter.serialization"/>
<technology name="kotlinx-jupyter-widgets" root="org.jetbrains.kotlinx.jupyter.widget"/>
<technology name="kotlin-logging" root="io.github.oshai.kotlinlogging"/>
<technology name="kotlinx-serialization" root="kotlinx.serialization"/>
<technology name="ktlint" root="com.pinterest.ktlint"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@
public final class LookupUsageTracker extends CounterUsagesCollector {
public static final String FINISHED_EVENT_ID = "finished";
public static final String GROUP_ID = "completion";
public static final EventLogGroup GROUP = new EventLogGroup(GROUP_ID, 40);
public static final EventLogGroup GROUP = new EventLogGroup(GROUP_ID, 41);
private static final EventField<String> SCHEMA = EventFields.StringValidatedByCustomRule("schema", FileTypeSchemaValidator.class);
private static final BooleanEventField ALPHABETICALLY = EventFields.Boolean("alphabetically");
private static final EnumEventField<EditorKind> EDITOR_KIND = EventFields.Enum("editor_kind", EditorKind.class);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.util.containers.MultiMap;
import com.intellij.util.containers.OrderedSet;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

Expand Down Expand Up @@ -43,7 +44,7 @@ public static FileNestingBuilder getInstance() {
final long modCount = fileNestingService.getModificationCount();

if (myNestingRules == null || myBaseListModCount != modCount) {
myNestingRules = new HashSet<>();
myNestingRules = new OrderedSet<>();
myBaseListModCount = modCount;

final MultiMap<String, String> childToParentSuffix = new MultiMap<>();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.openapi.application;

import com.intellij.configurationStore.StoreUtilKt;
Expand Down Expand Up @@ -36,6 +36,7 @@
import com.intellij.openapi.application.migrations.Localization242;
import com.intellij.openapi.application.migrations.NotebooksMigration242;
import com.intellij.openapi.application.migrations.SpaceMigration252;
import com.intellij.openapi.application.migrations.VcsPluginsMigration261;
import com.intellij.openapi.components.StoragePathMacros;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.extensions.PluginId;
Expand Down Expand Up @@ -144,6 +145,8 @@ public final class ConfigImportHelper {
private static final long PLUGIN_UPDATES_TIMEOUT_MS = 7000L;
private static final long BROKEN_PLUGINS_TIMEOUT_MS = 3000L;

private static boolean isUnitTestMode = false;

private ConfigImportHelper() { }

public static void importConfigsTo(
Expand All @@ -155,6 +158,9 @@ public static void importConfigsTo(
log.info("Importing configs to '" + newConfigDir + "'; veryFirstStart=" + veryFirstStartOnThisComputer);
System.setProperty(InitialConfigImportState.FIRST_SESSION_KEY, Boolean.TRUE.toString());

var app = ApplicationManager.getApplication();
isUnitTestMode = app != null && app.isUnitTestMode();

var migrationOption = CustomConfigMigrationOption.readCustomConfigMigrationOptionAndRemoveMarkerFile(newConfigDir);
log.info("Custom migration option: " + migrationOption);
var importSettings = findCustomConfigImportSettings();
Expand Down Expand Up @@ -1021,7 +1027,9 @@ public static void migratePlugins(
}
}

migrateGlobalPlugins(newConfigDir, oldConfigDir, pluginsToMigrate, pluginsToDownload, options.log);
if (!isUnitTestMode) {
migrateGlobalPlugins(newConfigDir, oldConfigDir, pluginsToMigrate, pluginsToDownload, options.log);
}

pluginsToMigrate.removeIf(hasPendingUpdate);
if (!pluginsToMigrate.isEmpty()) {
Expand Down Expand Up @@ -1123,6 +1131,7 @@ private static void performMigrations(PluginMigrationOptions options) {
new NotebooksMigration242().migratePlugins(options);
new SpaceMigration252().migratePlugins(options);
new BigDataToolsMigration253().migratePlugins(options);
new VcsPluginsMigration261().migratePlugins(options);
new CwmMigration261().migratePlugins(options);
}

Expand All @@ -1143,7 +1152,7 @@ private static void migrateGlobalPlugins(
Files.writeString(resultFile, downloadIds);
}
catch (IOException e) {
options.getLog().error("Unable to write auto install result", e);
log.error("Unable to write auto install result", e);
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.openapi.application.migrations

private const val PERFORCE_PLUGIN_ID = "PerforceDirectPlugin"
private const val MERCURIAL_PLUGIN_ID = "hg4idea"
private const val SUBVERSION_PLUGIN_ID = "Subversion"

private val UNBUNDLED_VCS_PLUGINS = listOf(PERFORCE_PLUGIN_ID, MERCURIAL_PLUGIN_ID, SUBVERSION_PLUGIN_ID)

internal class VcsPluginsMigration261 : PluginMigration() {
override fun migratePlugins(descriptor: PluginMigrationDescriptor) {
for (pluginId in UNBUNDLED_VCS_PLUGINS) {
descriptor.addPluginIfNeeded(pluginId)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -76,8 +76,11 @@ public void dispose() {
void doUpdate() {
myWidthInPixels = myRenderer.calcWidthInPixels(this);
if (myWidthInPixels <= 0) {
throw PluginException.createByClass("Positive width should be defined for an inline element by " + myRenderer, null,
myRenderer.getClass());
throw PluginException.createByClass(
"Positive width should be defined for an inline element by " + myRenderer +
" (class=" + myRenderer.getClass().getName() + ", valid=" + isValid() + ", myWidthInPixels=" + myWidthInPixels + ")",
null, myRenderer.getClass()
);
}
}

Expand Down
3 changes: 2 additions & 1 deletion platform/testFramework/junit5/src/fixture/fixtures.kt
Original file line number Diff line number Diff line change
Expand Up @@ -199,12 +199,13 @@ fun TestFixture<Project>.moduleFixture(
fun TestFixture<Project>.moduleFixture(
pathFixture: TestFixture<Path>,
addPathToSourceRoot: Boolean = false,
moduleTypeId: String = ""
): TestFixture<Module> = testFixture { _ ->
val project = this@moduleFixture.init()
val path = pathFixture.init()
val manager = ModuleManager.getInstance(project)
val module = edtWriteAction {
manager.newModule(path, "")
manager.newModule(path, moduleTypeId)
}
if (addPathToSourceRoot) {
val pathVfs = withContext(Dispatchers.IO) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import com.intellij.util.ui.JBInsets;
import com.intellij.util.ui.JBUI;
import com.intellij.util.ui.dialog.VcsDialogUtils;
import kotlin.Unit;
import org.jetbrains.annotations.NotNull;

import javax.swing.JComponent;
Expand Down Expand Up @@ -67,7 +68,10 @@ protected JComponent createCenterPanel() {

++gb.gridx;

mainPanel.add(VcsDialogUtils.getMorePluginsLink(mainPanel), gb);
mainPanel.add(VcsDialogUtils.getMorePluginsLink(mainPanel, () -> {
close(CANCEL_EXIT_CODE);
return Unit.INSTANCE;
}), gb);

JPanel wrapper = new JPanel(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints(0, 0, 1, 1, 1, 1, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE,
Expand Down
1 change: 1 addition & 0 deletions platform/xdebugger-api/api-dump.txt
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ com.intellij.xdebugger.XDebugSession
- a:reportMessage(java.lang.String,com.intellij.openapi.ui.MessageType,javax.swing.event.HyperlinkListener):V
- a:resume():V
- a:runToPosition(com.intellij.xdebugger.XSourcePosition,Z):V
- runWhenUiReady(java.util.function.Consumer):V
- a:sessionResumed():V
- a:setBreakpointInvalid(com.intellij.xdebugger.breakpoints.XLineBreakpoint,java.lang.String):V
- a:setBreakpointMuted(Z):V
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import com.intellij.execution.ui.RunnerLayoutUi;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.actionSystem.DataKey;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.MessageType;
import com.intellij.openapi.util.NlsContexts;
Expand All @@ -27,6 +28,7 @@

import javax.swing.Icon;
import javax.swing.event.HyperlinkListener;
import java.util.function.Consumer;

/**
* Instances of this class are created by the debugging subsystem
Expand Down Expand Up @@ -209,13 +211,26 @@ default void reportMessage(@NotNull @NlsContexts.NotificationContent String mess
* To migrate, please use one of the following approaches:
* <ul>
* <li>Use {@link XDebugProcess#createTabLayouter()} to create static tabs. Note that this option still uses LUX.</li>
* <li>Use {@link com.intellij.xdebugger.impl.XDebugSessionImpl#runWhenUiReady} as a temporary workaround to avoid races.</li>
* <li>Use {@link com.intellij.platform.debugger.impl.shared.proxy.XDebugSessionProxy#getSessionTab()} to add a tab on the frontend.</li>
* <li>Use {@link #runWhenUiReady} as a temporary workaround to avoid races.</li>
* <li>(internal) Use {@link com.intellij.platform.debugger.impl.shared.proxy.XDebugSessionProxy#getSessionTab()} to add a tab on the frontend.</li>
* </ul>
*/
@ApiStatus.Obsolete
@Nullable RunnerLayoutUi getUI();

/**
* Calls <code>block</code> in EDT when the tab UI is ready.
* <p>
* See {@link #getUI()} doc for proper migration steps.
*/
@ApiStatus.Obsolete
default void runWhenUiReady(@NotNull Consumer<@NotNull RunnerLayoutUi> block) {
var ui = getUI();
if (ui != null) {
ApplicationManager.getApplication().invokeLater(() -> block.accept(ui));
}
}

@ApiStatus.Internal
boolean isMixedMode();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -510,6 +510,7 @@ class XDebugSessionImpl @JvmOverloads constructor(
* Use [runWhenTabReady] to avoid races.
*/
val sessionTab: XDebugSessionTab?
@ApiStatus.Obsolete
get() {
if (SplitDebuggerMode.showSplitWarnings()) {
// See "TODO [Debugger.sessionTab]" to see usages which are not yet properly migrated.
Expand Down Expand Up @@ -559,13 +560,7 @@ class XDebugSessionImpl @JvmOverloads constructor(
}
}

/**
* Calls [block] in EDT when the tab UI is ready.
*
* See [XDebugSession.getUI] doc for proper migration steps.
*/
@ApiStatus.Obsolete
fun runWhenUiReady(block: (RunnerLayoutUi) -> Unit) {
override fun runWhenUiReady(block: Consumer<RunnerLayoutUi>) {
tabCoroutineScope.launch(Dispatchers.EDT) {
assertSessionTabInitialized()
val ui = if (SplitDebuggerMode.isSplitDebugger() && AppMode.isRemoteDevHost()) {
Expand All @@ -575,7 +570,7 @@ class XDebugSessionImpl @JvmOverloads constructor(
mySessionTab.await()?.ui
}
if (ui != null) {
block(ui)
block.accept(ui)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,12 @@ internal class DelegateBuildRunner : DefaultJavaProgramRunner() {
return result.get()
}

/**
* The runner serves only "Delegate IDE Build/Run Actions to Maven", the platform should not choose this runner when filtering.
* It must be obtained directly by ID or via [Util.getDelegateRunner]
*/
override fun canRun(executorId: String, profile: RunProfile): Boolean {
return executorId == DefaultRunExecutor.EXECUTOR_ID && profile is MavenRunConfiguration
return false
}

override fun doExecuteAsync(state: TargetEnvironmentAwareRunProfileState, env: ExecutionEnvironment): Promise<RunContentDescriptor?> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@ import org.junit.Test
class DelegateBuildRunnerCanRunTest : MavenExecutionTestCase() {

@Test
fun testAcceptsMavenRunConfiguration() {
fun testDoesNotMavenRunConfiguration() {
val runner = ProgramRunner.findRunnerById(DELEGATE_RUNNER_ID)?: throw AssertionError("[$DELEGATE_RUNNER_ID] build runner should be registered")
val mavenFactory = MavenRunConfigurationType.getInstance().configurationFactories[0]
val mavenConfiguration = mavenFactory.createTemplateConfiguration(project)

assertTrue(
assertFalse(
"Delegate build runner must accept Maven run configuration with DefaultRunExecutor",
runner.canRun(DefaultRunExecutor.EXECUTOR_ID, mavenConfiguration)
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,16 @@ import com.intellij.psi.PsiElement
import com.intellij.psi.PsiFile
import com.intellij.ui.content.ContentManager
import com.intellij.util.ui.UIUtil
import org.jetbrains.plugins.terminal.fus.TerminalOpeningWay
import org.jetbrains.plugins.terminal.fus.TerminalStartupFusInfo

/**
* Creates the new terminal tab on dropping the directory node inside the terminal tool window.
* For example, from Project View.
*/
internal fun installDirectoryDnD(window: ToolWindowEx, parentDisposable: Disposable) {
val handler = DnDDropHandler { event ->
val fusInfo = TerminalStartupFusInfo(TerminalOpeningWay.DND_FILE_TO_TOOLWINDOW)
val tw = event.getAttachedObject() as? TransferableWrapper ?: return@DnDDropHandler
val dir = getDirectory(tw.getPsiElements()?.singleOrNull()) ?: return@DnDDropHandler
// Find the right split to create the new tab in
Expand All @@ -28,6 +31,7 @@ internal fun installDirectoryDnD(window: ToolWindowEx, parentDisposable: Disposa
window.project,
workingDirectory = dir.getVirtualFile().getPath(),
contentManager = nearestManager,
startupFusInfo = fusInfo
)
}
DnDSupport.createBuilder(window.decorator)
Expand Down
Loading
Loading