fun startEditor()

in rider/src/main/kotlin/com/jetbrains/rider/plugins/godot/actions/StartGodotEditorAction.kt [64:105]


        fun startEditor(project: Project) {
            val runManager = RunManager.getInstance(project)
            val configurationType = ConfigurationTypeUtil.findConfigurationType(DotNetExeConfigurationType::class.java)
            var runConfiguration = runManager.findConfigurationByTypeAndName(
                    configurationType.id, GodotRunConfigurationGenerator.EDITOR_CONFIGURATION_NAME)

            if (runConfiguration == null){
                runConfiguration = runManager.findConfigurationByTypeAndName(
                    ConfigurationTypeUtil.findConfigurationType(GodotDebugRunConfigurationType::class.java).id,
                    GodotRunConfigurationGenerator.EDITOR_CONFIGURATION_NAME)
                if (runConfiguration == null){
                    runConfiguration = runManager.findConfigurationByTypeAndName(
                        ConfigurationTypeUtil.findConfigurationType(ExeConfigurationType::class.java).id,
                        GodotRunConfigurationGenerator.EDITOR_CONFIGURATION_NAME)
                }
            }


            if (runConfiguration == null)
                throw Exception("Godot ${GodotRunConfigurationGenerator.EDITOR_CONFIGURATION_NAME} run configuration was not present.")

            val parameters = (runConfiguration.configuration as? RiderConfigurationParametersAware<*>)?.parameters ?: throw Exception("Unexpected run configuration type")

            val runCommandLine = createEmptyConsoleCommandLine(parameters.terminalMode, if (SystemInfo.isWindows) ExecutableType.Windows else ExecutableType.Console)
                .withEnvironment(parameters.envs)
                .withParentEnvironmentType(if (parameters.isPassParentEnvs) {
                    GeneralCommandLine.ParentEnvironmentType.CONSOLE
                } else {
                    GeneralCommandLine.ParentEnvironmentType.NONE
                })
                .withExePath(parameters.exePath)
                .withWorkDirectory(parameters.workingDirectory)
                .withFormatPreservingParameters(parameters.programParameters)

            logger.info("Starting $runCommandLine")

            // without discarding output, closing GodotEditor on mac would take several minutes
            runCommandLine.toProcessBuilder()
                .redirectError(ProcessBuilder.Redirect.DISCARD)
                .redirectOutput(ProcessBuilder.Redirect.DISCARD)
                .start()
        }