IDEA-368012 New run/debug configurations should use the project folder as default working directory

implemented for java & kotlin

GitOrigin-RevId: b9dd9940016cba3cb9a421680fc15540c21288a0
This commit is contained in:
Dmitry Avdeev
2025-02-22 16:51:59 +00:00
committed by intellij-monorepo-bot
parent 575630219c
commit 703d06c50d
4 changed files with 17 additions and 2 deletions
@@ -376,7 +376,7 @@ public class ApplicationConfiguration extends JavaRunConfigurationBase
String workingDirectory = options.getWorkingDirectory();
if (workingDirectory == null) {
workingDirectory = PathUtil.toSystemDependentName(getProject().getBasePath());
workingDirectory = ProgramParametersUtil.getWorkingDirectoryByModule(this);
}
else {
workingDirectory = FileUtilRt.toSystemDependentName(VirtualFileManager.extractPath(workingDirectory));
@@ -2053,6 +2053,7 @@ f:com.intellij.execution.util.ProgramParametersUtil
- s:expandPathAndMacros(java.lang.String,com.intellij.openapi.module.Module,com.intellij.openapi.project.Project):java.lang.String
- s:getModule(com.intellij.execution.CommonProgramRunConfigurationParameters):com.intellij.openapi.module.Module
- s:getWorkingDir(com.intellij.execution.CommonProgramRunConfigurationParameters,com.intellij.openapi.project.Project,com.intellij.openapi.module.Module):java.lang.String
- s:getWorkingDirectoryByModule(com.intellij.execution.configurations.ModuleBasedConfiguration):java.lang.String
f:com.intellij.execution.util.ScriptFileUtil
- s:copyToTempFile(java.lang.String):java.io.File
- s:findScriptFileByPath(java.lang.String):com.intellij.openapi.vfs.VirtualFile
@@ -2,11 +2,14 @@
package com.intellij.execution.util;
import com.intellij.execution.CommonProgramRunConfigurationParameters;
import com.intellij.execution.configurations.ModuleBasedConfiguration;
import com.intellij.execution.configurations.RuntimeConfigurationWarning;
import com.intellij.execution.configurations.SimpleProgramParameters;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.workspace.SubprojectInfoProvider;
import com.intellij.util.IncorrectOperationException;
import com.intellij.util.PathUtil;
import org.jetbrains.annotations.Nullable;
public final class ProgramParametersUtil {
@@ -40,4 +43,13 @@ public final class ProgramParametersUtil {
public static @Nullable Module getModule(CommonProgramRunConfigurationParameters configuration) {
return new ProgramParametersConfigurator().getModule(configuration);
}
public static String getWorkingDirectoryByModule(ModuleBasedConfiguration<?, ?> configuration) {
Module module = configuration.getConfigurationModule().getModule();
if (module != null) {
String path = SubprojectInfoProvider.Companion.getSubprojectPath(module);
if (path != null) return path;
}
return PathUtil.toSystemDependentName(configuration.getProject().getBasePath());
}
}
@@ -112,7 +112,9 @@ open class KotlinRunConfiguration(name: String?, runConfigurationModule: JavaRun
FileUtilRt.toSystemDependentName(VirtualFileManager.extractPath(it))
} ?: PathUtil.toSystemDependentName(defaultWorkingDirectory())
protected open fun defaultWorkingDirectory() = project.basePath
protected open fun defaultWorkingDirectory(): String? {
return ProgramParametersUtil.getWorkingDirectoryByModule(this)
}
override fun setVMParameters(value: String?) {
options.vmParameters = value