Почему в режиме Emac есть дополнительный символ новой строки?
Вопрос
Я использую схему ypsilon в режиме схемы Emacs 23. Когда я ввожу выражение в интерпретаторе, оно добавляет дополнительную новую строку (см. Ниже). Я никогда не видел, чтобы это случилось с любым другим переводчиком. Я знаю, что ypsilon этого не делает, потому что в оболочке shell-mode он выглядит нормально (хотя shell-mode демонстрирует то же некорректное поведение). Какая функция в схеме или в режиме коминта может добавлять эту новую строку? Р>
Похоже на это:
> (+ 1 2)
3
> ;; extra newline above
Должно быть так:
> (+ 1 2)
3
> ;; no extra newline above
Решение
Я понял это. comint-send-input имеет необязательный параметр no-newline. Я установил значение true (не вставлять еще один символ новой строки), связав клавишу Return с новой функцией, которая переносит comint-send-input. Эти дополнительные символы новой строки исчезают. Я не знаю, почему они появляются в первую очередь.
(defun comint-send-input-no-newline ()
(interactive)
(comint-send-input t nil))
Другие советы
Это скорее обходной путь, чем что-либо другое, но попробуйте SLIME . Я обнаружил, что он очень хорошо обрабатывает ввод / вывод. Вы можете найти бэкэнды SLIME, которые поддерживают Scheme.