Ich möchte mit einer Reihe von Software-Tools experimentieren und experimentieren, die jeweils über eine Befehlszeilenschnittstelle verfügen. Einige dieser Tools umfassen HBase, Schwein, Erlang und Prolog. Ich möchte emacs als UI für diese Tools verwenden, genauso wie ich eine Python-Shell mit M-x run-python oder einen Lisp-Interpreter mit dem ielm-Modus ausführen kann.
Gibt es ein Rezept, dem ich folgen kann, um eines dieser Kommandozeilenwerkzeuge in einen Emacs-Modus zu verpacken? Ich suche nach etwas, das die Eingabeaufforderung des Tools anzeigen wird, lass mich den Verlauf mit C-c C-n / C-p durchsuchen, die aktuelle Eingabe an den Prozess des Werkzeugs übergeben, den ich Enter drücke und die Ausgabe des Werkzeugs anzeigen.
Ich weiß, dass viele dieser Werkzeuge wahrscheinlich bereits Emacs-Modi haben, ich bin daran interessiert, wie man schnell einen baut, wenn nichts existiert.
Ich habe kürzlich einen "inferior gosu mode" für die Sprache gosu entwickelt. Es stellte sich heraus, dass es ziemlich einfach war: Ich habe nur comint
erweitert, was der Modus ist, auf dem sowohl shell
als auch ielm
basieren. Hier ist das wichtige Teil des Codes:
Mit dem use-local-map
-Bit definieren Sie spezielle Tastenbelegungen. Ich habe es nur als eine Kopie der Commint Bindings:
Danach hatte ich einen einfachen Code, der einen Befehl zum Starten eines Prozesses definierte, der den *inferior-gosu*
-Puffer aufklappte, wenn er existierte. Ich habe auch etwas Code in den normalen gosu-Modus hinzugefügt, um eine inferior-gosu-Shell zu öffnen.
Kurz gesagt: Verwenden Sie comint
.
Hier ist ein Link zum ganzen Code, aber es gibt nicht viel mehr: Ссылка
Natürlich können Sie diesen Code beliebig verwenden. Sie können auch den normalen gosu-Modus betrachten, um zu sehen, wie Sie erlang und prolog in die jeweiligen Bearbeitungsmodi der Sprachen integrieren können.