使用Python驱动Emacs;pymacs无法工作
我有一个Python脚本,它会不停地循环,等待输入,然后在输入发生时执行某些操作。我的问题是,如何让Python告诉Emacs去做某件事。我只需要一种方法来发送输入给Emacs,并让Emacs去处理这个输入。
这里有一些代码来说明我的问题……
while(1):
on_off = query_lightswitch
if on_off == 0:
send_text_to_emacs("(setq 'lightswitch t)")
理想情况下,我想发送一个字符串给Emacs,让它在自己的elisp解释器中执行。我试过pymacs,但看起来pymacs是为了从Emacs启动东西,而不是从Python启动。当我在pymacs中尝试这样的操作时,它会一直卡住,直到循环结束。如果我对Unix管道了解得足够多,这看起来是我可以解决的问题。如果有谁有解决这个问题的想法,我将非常感激,谢谢。
1 个回答
4
你可以使用 gnuclient(从 Emacs 22 开始自带)或者 emacsclient(适用于早期版本的 Emacs),来从外部程序执行代码,并连接到正在运行的 Emacs。
让 Emacs 自己执行代码的方式大致如下:
gnuclient -q -batch -eval "(setq 'lightswitch t)"