Подтвердить что ты не робот

Есть ли способ сделать Scala REPL не останавливаться на CTRL-C

Я использую Scala REPL для интерактивного тестирования некоторых хеш-функций, которые я создаю. Я постоянно переключаюсь между кодом продукта (Eclipse), браузером и интерпретатором Scala, копируя/вставляя значения и результаты. В миксе я часто делаю CTRL-C на интерпретаторе, выходя из сеанса и теряя все свои функции.

Есть ли способ разрешить Scala REPL игнорировать CTRL-C или, что еще лучше, выполнить "вставить" с ним? Я работаю над Linux.

4b9b3361

Ответ 1

Я знаю только, как предотвратить выход REPL. Перенос команды CTRL+C для выполнения команды копирования может быть выполнен таким же образом (если есть некоторая команда, которая позволяет сменить раскладку с перезапуском терминала, я не знаю, есть ли она). В любом случае, чтобы заблокировать ^C, включите вызов REPL в .sh script следующим образом:

#!/bin/bash

#switch off sensitivity to ^C
trap '' 2

# here goes REPL invoke
scala

#get back sensitivity to ^C
trap 2

команда trap

определяет и активирует обработчики, которые будут выполняться при получении оболочки сигналы     или других условий.

2 является значением SIGINT (сигнал, который запускается при нажатии CTRL+C)

Ответ 2

В качестве альтернативы native Scala REPL вы можете использовать Ammonite, который обрабатывает Ctrl + C:

@ while(true) ()
... hangs ...
^Ctrl-C
Interrupted!

@

Традиционный Scala REPL не обрабатывает код убегания и не дает вам никакой возможности, кроме как убить процесс, потеряв всю вашу работу.
Ammonite-REPL позволяет прерывать поток, останавливать команду runaway и продолжать движение.

Ответ 3

Repl уже перехватывает ctrl-C, но, видимо, он не работает на linux. Он работает на osx. Если кто-то, кто использует linux, открывает билет с достаточной детализацией, чтобы указать, почему нет, я могу это исправить.