为什么emacs的comint-send-string在不同的派生模式下表现不同?

时间:2013-07-28 20:32:36

标签: emacs elisp

我最近一直在用comint模式搞砸,我注意到一些奇怪的行为。它的记录非常糟糕,所以我想知道是否有人对此有任何见解。

在某些模式下,comint-send-string会将发送的任何内容插入到comint缓冲区中,然后发送到关联的进程,而在其他模式下,输入将直接发送到进程没有被放入缓冲区。例如,使用new(24.3)python.el执行run-python然后执行(comint-send-string "*Python*" "x=3\n"),将字符串x=3插入缓冲区然后执行。但是,如果执行M-x shell,然后(comint-send-string "*shell*" "x=3\n"),则不会在缓冲区中插入任何文本,只需将输入直接发送到shell进程即可执行。

有谁知道为什么存在这种行为差异或者我如何改变它?

2 个答案:

答案 0 :(得分:2)

我在linux上观察到相同的行为(emacs-version == "24.3.50.7",GUI和emacs -Q -nw):既没有

(comint-send-string "*Python*" "x=3\n")

,也不

(comint-send-string "*shell*" "x=3\n")

comint缓冲区中插入任何内容(即出现下一个提示 在上一个提示之后 - 他们之间甚至没有新行。)

答案 1 :(得分:2)

我最终弄明白了。由于某种原因,OSX上的系统python导致了这种行为,从homebrew安装python修复了它。