From 431e4a860ee0e3dd0e5c4ec0aa69a8f04fe78779 Mon Sep 17 00:00:00 2001 From: "Vassiliy.Kudryashov" Date: Tue, 9 Oct 2018 20:39:17 +0300 Subject: [PATCH] IDEA-186973 "inappropriate ioctl for device" reported when running Overmind as an external tool Experimental registry key is use.tty.for.external.tools=false --- platform/lang-impl/src/com/intellij/tools/Tool.java | 6 +++++- platform/util/resources/misc/registry.properties | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/platform/lang-impl/src/com/intellij/tools/Tool.java b/platform/lang-impl/src/com/intellij/tools/Tool.java index 82a2fcb0612a..7971bd8c168b 100644 --- a/platform/lang-impl/src/com/intellij/tools/Tool.java +++ b/platform/lang-impl/src/com/intellij/tools/Tool.java @@ -4,6 +4,7 @@ package com.intellij.tools; import com.intellij.execution.ExecutionException; import com.intellij.execution.configurations.GeneralCommandLine; +import com.intellij.execution.configurations.PtyCommandLine; import com.intellij.execution.executors.DefaultRunExecutor; import com.intellij.execution.process.OSProcessHandler; import com.intellij.execution.process.ProcessHandler; @@ -23,6 +24,7 @@ import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.options.SchemeElement; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Comparing; +import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.util.text.StringUtil; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -305,7 +307,9 @@ public class Tool implements SchemeElement { setWorkingDirectory("$ProjectFileDir$"); } - GeneralCommandLine commandLine = new GeneralCommandLine(); + GeneralCommandLine commandLine = Registry.is("use.tty.for.external.tools", false) + ? new PtyCommandLine().withConsoleMode(true) + : new GeneralCommandLine(); try { String paramString = MacroManager.getInstance().expandMacrosInString(getParameters(), true, dataContext); String workingDir = MacroManager.getInstance().expandMacrosInString(getWorkingDirectory(), true, dataContext); diff --git a/platform/util/resources/misc/registry.properties b/platform/util/resources/misc/registry.properties index f8e55ad18ff4..ea708d9272f0 100644 --- a/platform/util/resources/misc/registry.properties +++ b/platform/util/resources/misc/registry.properties @@ -87,6 +87,9 @@ idea.fix.mac.env=true idea.fix.mac.env.restartRequired=true idea.fix.mac.env.description=On Mac, use shell environment for external processes. +use.tty.for.external.tools=false +use.tty.for.external.tools.description=Use command line with TTY support to run 'External Tools' + idea.mac.prevent.app.nap=false idea.mac.prevent.app.nap.description=Prevent app nap during indexing and inspection