From 025aff625b1fc6059cc78a9f3546cc330a3b22e3 Mon Sep 17 00:00:00 2001 From: Ethan Atkins Date: Mon, 21 Sep 2020 13:25:25 -0700 Subject: [PATCH] Use jansi terminal if available The jansi terminal is a little nicer than the jna terminal in windows in my opinion. In the jna terminal, tab completions use overscores instead of inverting the colors for the highlighted completion string. --- .../src/main/scala/sbt/internal/util/JLine3.scala | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/internal/util-logging/src/main/scala/sbt/internal/util/JLine3.scala b/internal/util-logging/src/main/scala/sbt/internal/util/JLine3.scala index ef091496b..6f34a39a1 100644 --- a/internal/util-logging/src/main/scala/sbt/internal/util/JLine3.scala +++ b/internal/util-logging/src/main/scala/sbt/internal/util/JLine3.scala @@ -46,6 +46,11 @@ private[sbt] object JLine3 { term.disableScrolling() term } + private val jansi = { + val (major, minor) = + (JansiSupportImpl.getJansiMajorVersion, JansiSupportImpl.getJansiMinorVersion) + (major > 1 || minor >= 18) && Util.isWindows + } private[util] def system: org.jline.terminal.Terminal = { val term = if (forceWindowsJansiHolder.get) windowsJansi() @@ -55,8 +60,8 @@ private[sbt] object JLine3 { org.jline.terminal.TerminalBuilder .builder() .system(System.console != null) - .jna(Util.isNonCygwinWindows) - .jansi(false) + .jna(Util.isWindows && !jansi) + .jansi(jansi) .paused(true) .build() }