我最近一直在用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进程即可执行。
有谁知道为什么存在这种行为差异或者我如何改变它?
答案 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修复了它。