Python для управления Emacs; pymacs не работает - PullRequest
1 голос
/ 14 июля 2009

У меня есть скрипт на 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 голосов
/ 14 июля 2009

Вы можете использовать gnuclient (поставляется с Emacs 22) (или emacsclient для более ранних версий Emacsen), чтобы оценивать код из внешних программ и подключаться к работающему Emacs.

Получение Emacs для оценки кода само по себе выглядело бы примерно так:

gnuclient -q -batch -eval "(setq 'lightswitch t)"
...