Стрелки курсора не работают в SBT 0.13.*. Подозреваемый Джейлайн. Как их включить?

В SBT-0.7.7 JLine был встроен в лаунчер, и он работает нормально. Например.:

"C:\Program Files (x86)\Java\jre7\bin\java.exe"  -jar C:\scala\sbt-launch-0.7.7.jar

Я могу использовать клавиши курсора для навигации по истории команд. В SBT-0.13.5 не работает:

"C:\Program Files (x86)\Java\jre7\bin\java.exe"  -jar C:\scala\sbt_launch_135.jar

Когда я нажимаю клавиши курсора, вместо этого появляются печатные символы, например «pHpP». В файле target/.history мы видим коды символов «0xE0 0x48 0xE0 0x50». То же самое в Java8 и в 64-битной Java. Я также пробовал различные версии программы запуска SBT и различные значения для jline.terminal, такие как -Djline.terminal=jline.AnsiWindowsTerminal, но безрезультатно. Я также попробовал -Djline.WindowsTerminal.directConsole=false — тогда клавиши курсора вообще не выполняют никакой функции. Во всех случаях я могу использовать CTRL+P и CTRL+N для навигации по истории.

SBT-0.13.* загружает JLine из репозитория Ivy %HOMEPATH%.sbt\boot\scala-2.10.3\org.scala-sbt\sbt\0.13.1\jline-2.11.jar I просмотрел исходный код JLine. Версия 2.10.3 имеет примитивный файл конфигурации keybindings.properties, а функция readVirtualKey() в WindowsTerminal.java обрабатывает клавиши курсора. Все версии JLine устанавливают вспомогательную DLL во временный каталог, например %HOMEPATH%\AppData\Local\Temp\jline_.dll, который предположительно работает.

Почему это работает неправильно? Как заставить работать клавиши курсора?


person user3603546    schedule 19.06.2014    source источник


Ответы (1)


попробуйте передать следующее свойство процессу sbt, т.е.:

sbt -Dinput.encoding=Cp1252

как указано здесь

person lukasz-wolski    schedule 05.11.2014