使用Python驱动Emacs;pymacs无法工作

1 投票
1 回答
529 浏览
提问于 2025-04-15 12:53

我有一个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)"

撰写回答