2016-03-24 10 views
0

Ich schrieb eine einfache Shell in Python und kompilierte sie mit Nuitka. Meine Shell als einige einfache Befehle wie "say string", "Braille String", "Stop" usw. Dieses Programm verwendet Python Accessible_output-Paket, um mit Screenreader in Windows zu kommunizieren. Ok, das funktioniert gut von einer normalen Shell oder von Windows. Jetzt möchte ich dieses Programm von innerhalb Emacs ausführen, wie normale Shell in Emacs. Ich habe einige Funktionen versucht, "Start-Prozess", "Shell-Befehl", aber ich kann keine Befehle schreiben. Mein Programm zeigt eine Eingabeaufforderung, wie Python-Interpreter, wo ich meine Befehle setzen kann. Elisp kann Python-Shells, mysql-Shells ausführen, aber ich kann meine eigene Shell nicht ausführen. Hilfe!Wie kann ich meine eigene Shell von elisp ausführen?

+0

Haben Sie etwas einfach ausprobiert, wie '(Start-Prozess "my-Prozess-name" Null "/ path/to/script")'? Ich habe 'nil' für das zweite Argument verwendet, weil ich annahm, dass Sie in Emacs keinen Ausgabepuffer sehen müssen. Sie können es einfach auswerten, um es auszuprobieren: 'M-x Eval-Ausdruck RET (Start-Prozess" Mein-Prozess-Name "Nil"/Pfad/zu/Skript ") RET' – lawlist

Antwort

0

Emacs hat eine Reihe von verschiedenen Möglichkeiten, mit externen Programmen zu interagieren. Von Ihrem Text vermute ich, dass Sie sich im emacs-Handbuch und im elisp-Referenzhandbuch über comint informieren müssen. Comint ist die Low-Level-General-Shell in einer Puffer-Funktionalität (es ist was Shell-Modus verwendet).

Lesen zwischen den Zeilen Ihres Beitrags, würde ich auch vorschlagen, dass Sie sich Emacspeak ansehen. und readd.el, die beide Pakete sind, die Sprache zu Emacs hinzufügen. Speechd.el ist nackten Knochen und verwendet Speech-Dispatcher, während Emacspeak sehr funktionsreich ist. Das emacspeak-Paket verwendet ein Tcl-Skript, das mit Hardware- oder Software-Sprachservern kommuniziert. Es hat auch eine Mac-Version, die in Python geschrieben ist und mit dem Untersystem OSX accessibility (voiceOver) kommuniziert. Wenn Sie sich ansehen, wie diese Pakete funktionieren, werden Sie wahrscheinlich gute Beispiele dafür finden, wie Sie Ihre Aufgaben erfüllen können.

0

In Python-mode.el getan hat, liest der betreffenden Teil

(with-current-buffer 
(apply #'make-comint-in-buffer executable py-buffer-name executable nil (split-string-and-unquote args)) 

See docstring von make-comint-in-buffer für Einzelheiten.

0

Wie wäre es, wenn Sie Ihr Skript einfach aus einem Emacs-Shell-Puffer starten?

M-x shell RET /path/to/my/script RET

Verwandte Themen