gpt4 book ai didi

Emacs shell-模式 : Prevent RET sending input from anywhere

转载 作者:行者123 更新时间:2023-12-02 20:03:08 25 4
gpt4 key购买 nike

正如文档所说,RET 将在 shell 模式下的任何地方 comint-send-input 。问题是,如果您错误地在任何行上按 Enter 键并且没有出现提示,它将执行整个随机文本,直到出现下一个提示。我怎样才能防止这种情况发生?如果在提示之外的任意位置按 Enter 会将您带到底部的新提示,那就太好了。

最佳答案

类似这样的吗?

(defun my-comint-send-input-maybe ()
"Only `comint-send-input' when point is after the latest prompt.

Otherwise move to the end of the buffer."
(interactive)
(let ((proc (get-buffer-process (current-buffer))))
(if (and proc (>= (point) (marker-position (process-mark proc))))
(comint-send-input)
(goto-char (point-max)))))

(with-eval-after-load "comint"
(define-key shell-mode-map [remap comint-send-input] 'my-comint-send-input-maybe))

您可以将 (goto-char (point-max)) 替换为 (comint-copy-old-input)插入,但是不在新提示符下发送旧的输入;但当插入的输入看起来像输出时,这仍然容易导致问题。

但是,还要注意 C-hf comint-send-input 中有关 comint-get-old- 的注释和链接input -- 这可用于实现自定义逻辑,以在进程标记之前使用 point 调用 comint-send-input 时建立“旧输入”。

关于Emacs shell-模式 : Prevent RET sending input from anywhere,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52206246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com