Я использую RLWrap, чтобы «приручить» действительно хороший REPL, Dyalog APL, который, к сожалению, берет свое начало в Windows, и поэтому не соответствует соглашениям UNIX.Более того, будучи продуктом с закрытым исходным кодом, его нельзя изменить, чтобы сделать это.
Мне удалось достичь большинства своих целей, но Ctrl-D все еще заставляет его устранить ошибку и продолжить работу, хотя я хотел бы, чтобы он вызывал изящный выход, как и любой другой REPL.
Я рассмотрел параметры rlwrap, а также его фильтр API, для способа перехвата EOF, поступающего от пользователя, и его переводав пользовательскую команду выхода, которая в моем случае будет )off
, но я не могу найти способ сделать это.
Мой текущий псевдоним:
alias dyalog='rlwrap -a -H ~/.dyalog_history /opt/mdyalog/17.0/64/unicode/dyalog -b -s'
Соответствующие параметры:
-s
велит Dyalog запускаться в простом режиме REPL без контроля над экраном; -a
велит RLWrap всегда оставаться в режиме readline, игнорируя Dyalogпытается прочитать вводимый символ за символом.