Избегайте случайного выполнения в режиме comint

Иногда в режиме comint точка находится где-нибудь в буфере, и я по ошибке нажимаю Return. Это отправляет текст в точку базовому процессу, что может быть очень опасно. Часто этот текст содержит много строк, и случайно или нет одна из них может быть действительной командой.

Есть ли способ сказать comint не выполнять ничего на Return, кроме последнего ввода?


person memeplex    schedule 10.07.2018    source источник
comment
Комментарий в comint.el:comint-get-old-input-default указывает, что поведение, которое вы наблюдаете, является ошибкой. Я предлагаю вам сообщить об этом, используя M-x report-emacs-bug.   -  person sds    schedule 11.07.2018
comment
Я не думаю, что это ошибка, это постоянное поведение любого низшего режима в течение многих лет, и этот комментарий, похоже, связан с тем фактом, что закомментированная функция возвращает разные вещи, когда точка находится на входной строке, чем когда это на выходе один.   -  person memeplex    schedule 11.07.2018


Ответы (1)


Документированный способ, по-видимому, переопределяет переменную comint-get-old-input с помощью пользовательской функции. Проще всего будет примерно так:

(setq comint-get-old-input (lambda () (end-of-buffer) (comint-get-old-input-default)))

Сначала он идет в конец буфера и только потом вызывает coming-get-olt-input-default, фактически не затрагивая предыдущий вывод. Поместите его в свой init.el, краткое тестирование показывает, что он работает.

person valignatev    schedule 12.07.2018