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?
Antwort
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.
einen Blick darauf werfen, wie es in der NodeJS-repl https://github.com/abicky/nodejs-repl.el/blob/develop/nodejs-repl.el (siehe Linie 308)
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.
Wie wäre es, wenn Sie Ihr Skript einfach aus einem Emacs-Shell-Puffer starten?
M-x shell RET /path/to/my/script RET
- 1. Wie kann ich meine eigene UITabBar erstellen?
- 2. Wie kann ich meine eigene Klasse initialisieren?
- 3. Wie kann ich meine eigene Klasse verbinden?
- 4. kann meine eigene Schriftart
- 5. Kann ich meine eigene Einstiegspunktmethode für C#
- 6. Kann ich meine eigene DLL zurückentwickeln?
- 7. Wie kann ich meine eigene erstellt Shell-Arbeit mit .sh Dateien
- 8. Wie kann ich meine eigene Basis-Unix-Shell in C implementieren?
- 9. Wie registriere ich meine eigene Firefox Erweiterung?
- 10. Wie benutze ich meine eigene SQLite-Datenbank?
- 11. Wie deklariere ich meine eigene CGRectZero-Konstante?
- 12. Wie erstelle ich meine eigene Präferenzklasse
- 13. Wie kann ich meine eigene generische Sammlung in Java implementieren?
- 14. Wie erstelle ich meine eigene Pytest-Halterung?
- 15. Scala slick wie kann ich meine eigene zurückgeben Fehlermeldung
- 16. Jekyll: Wie kann ich meine eigene Methode definieren?
- 17. Kann ich meine eigene SMS WEBSITE einrichten? Wie?
- 18. Wie kann ich ein Icon für meine eigene Dateierweiterung setzen
- 19. Wie mache ich meine eigene benutzerdefinierte Laufzeitfehlerklasse?
- 20. Wie kann ich meine Anwendung anstelle der Standard-Windows XP-Shell ausführen?
- 21. Ausführen von Shell-Befehlen ohne Shell-Fenster
- 22. meine eigene Programmiersprache
- 23. Wie kann meine Flash-App eine eigene URL ermitteln?
- 24. Ich kann meine eigene .NET-Serialisierung nicht lesen
- 25. Kann ich contentProvider ohne meine eigene Datenbank erweitern?
- 26. Wie erstelle ich eine leere Datei von elisp?
- 27. Wie kann ich einen Shell-Befehl mit VBA ausführen?
- 28. Wie kann ich einen Shell-Befehl im Ansible-Prüfmodus ausführen?
- 29. Ich kann meine eigene generierte Apk nicht installieren
- 30. Wie erstelle ich meine eigene Datenliste wie eine Listview? (Xamarin.forms)
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