Merge pull request #6276 from fommil/emacs

GNU Emacs support for sbtn and sbt --client
This commit is contained in:
eugene yokota 2021-01-21 16:38:39 -05:00 committed by GitHub
commit cc87ae2635
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 15 additions and 3 deletions

1
.gitignore vendored
View File

@ -10,4 +10,5 @@ npm-debug.log
.idea
.bloop
.metals
.bsp/
/project/metals.sbt

View File

@ -64,6 +64,8 @@ object Util {
lazy val isNonCygwinWindows: Boolean = isWindows && !isCygwin
lazy val isCygwinWindows: Boolean = isWindows && isCygwin
lazy val isEmacs: Boolean = Option(System.getenv("INSIDE_EMACS")).isDefined
def nil[A]: List[A] = List.empty[A]
def nilSeq[A]: Seq[A] = Seq.empty[A]
def none[A]: Option[A] = (None: Option[A])

View File

@ -317,7 +317,10 @@ object Terminal {
props
.map(_.color)
.orElse(isColorEnabledProp)
.getOrElse(logFormatEnabled.getOrElse(true) && ((hasConsole && !isDumbTerminal) || isCI))
.getOrElse(
logFormatEnabled
.getOrElse(true) && ((hasConsole && !isDumbTerminal) || isCI || Util.isEmacs)
)
}
private[this] lazy val isColorEnabledProp: Option[Boolean] =
sys.props.get("sbt.color").orElse(sys.props.get("sbt.colour")).flatMap(parseLogOption)
@ -867,7 +870,8 @@ object Terminal {
.map(_.supershell)
.getOrElse(System.getProperty("sbt.supershell") match {
case null =>
!(sys.env.contains("BUILD_NUMBER") || sys.env.contains("CI")) && isColorEnabled
!(sys.env.contains("BUILD_NUMBER") || sys.env
.contains("CI")) && isColorEnabled && !Util.isEmacs
case "true" => true
case _ => false
})

View File

@ -337,8 +337,13 @@ class NetworkClient(
List(DashDashDetachStdio, DashDashServer)
}
// https://github.com/sbt/sbt/issues/6271
val nohup =
if (Util.isEmacs && !Util.isWindows) List("nohup")
else Nil
val processBuilder =
new ProcessBuilder(cmd: _*)
new ProcessBuilder((nohup ++ cmd): _*)
.directory(arguments.baseDirectory)
.redirectInput(Redirect.PIPE)
processBuilder.environment.put(Terminal.TERMINAL_PROPS, props)