2009-07-13 2 views
1

Ich habe ein Python-Skript, das unendlich lange auf Eingaben wartet, und dann tut etwas, wenn die Eingabe passiert. Mein Problem ist dann machen Python Emacs sagen, etwas zu tun. Ich brauche nur eine Möglichkeit, Emacs-Eingabe zu senden und Emacs diese Eingabe auszuwerten.Python, um Emacs zu fahren; pymacs funktioniert nicht

Hier ist ein Code, mein Problem zu veranschaulichen ...

while(1): 

    on_off = query_lightswitch 
    if on_off == 0: 
     send_text_to_emacs("(setq 'lightswitch t)") 

Im Idealfall einen String Emacs Ich würde senden, dass es in seinem elisp Interpreter auswertet. Ich habe versucht, pymacs, aber es sieht aus wie pymacs ist gemacht, um Sachen von Emacs eher als Python zu starten. Wenn ich so etwas in pymacs versuche, blockiert es, bis die Schleife endet. Das sieht nach einem Problem aus, das ich mit Unix-Pipelines lösen könnte, wenn ich genug wüsste. Wenn jemand da draußen irgendwelche Ideen hat, wie man dieses Problem lösen könnte, würde ich viel verpflichtet sein, danke.

Antwort

4

Sie können gnuclient (im Lieferumfang von Emacs 22) (oder emacsclient für frühere Emacsen) verwenden, um Code von externen Programmen zu bewerten und eine Verbindung zu einem laufenden Emacs herzustellen.

Emacs Erste Code zu bewerten, indem sich etwa wie folgt aussehen:

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

gnuclient ist eine xemacs Sache; GNU Emacs nennt es immer Emacsclient – jrockway