Как правильно запустить GHCi в окне ANSI-Term в Emacs?
По какой-то причине я теряю клавиши со стрелками вверх и DEL после запуска GHCi из окна отклика в Emacs. (Эти ключи работают, как и ожидалось, в окне ответа до запуска GHCi.) И RET не производит перевод строки, только возврат каретки. Я не наблюдаю ни одной из этих странностей при запуске GHCi из моего обычного приложения Terminal под MacOS X.
Используя функцию Emac для просмотра потерь, я нахожу:
<menu-bar> <Terminal> <Character mode> [term-char-mode]
<up> [term-send-up]
<return> [term-send-raw]
<backspace> [term-send-backspace]
<menu-bar> <Terminal> <Line mode> [term-line-mode]
<up> [previous-line]
<return> [term-send-input]
<backspace> [delete-backward-char]
C-h l [view-lossage]
(Примечание: вышесказанное было сделано после запуска GHCi из окна отклика Emacs.)
И, похоже, я хочу переключиться в режим Line во время работы GHCi. (Обычно я запускаю окно ANSI-term в символьном режиме, потому что оно дает мне опыт, более похожий на работу в приложении Terminal.)
Это выглядит как M-p
восстановит прошлые команды. Итак, если я смогу выяснить, как перенести стрелку вверх на M-p
в то время как в GHCi, я должен быть довольно близок к своему обычному опыту GHCi-in-Terminal.
Однако осталась одна проблема: я все еще не получаю перевод строки при нажатии RET. И это действительно мешает, как эстетически, так и функционально.
Это странно, потому что клавиша RET, набранная либо в приглашении ansi-term, либо в приглашении GHCi (запущенном из ansi-term) (с окном ansi-term, установленным в режим Line), отправляет одну и ту же команду: term-send-input
, И ansi-term делает правильные вещи в ответ на эту команду. Итак, почему GHCi не делает правильные вещи?
Возможно, мне нужно переназначить RET, чтобы: CR/LF; term-send-input
в то время как в GHCi? Возможно ли это вообще (т. Е. Сделать переопределение ключа для конкретного приложения в окне анонимных терминов)?