Stellen Sie sich das Spiel dunnet.el, den eliza doctor oder den IELM-Modus vor ...; Das bedeutet, Antworten zu bewerten und neue Fragen zum Hauptpuffer zu stellen und dann einige Aktionen entsprechend ihren Regeln durchzuführen.
Ich würde so etwas wie einen interaktiven Assistenten erstellen, ABER NICHT die Aufforderung vom Minibuffer als (interaktiv) tut (nicht M-x) ... Ich brauche eine Art von REPL-Schleife. Also die Frage, wie ich Interaktion auf dem Arbeitspuffer (der Hauptbildschirm), wie jeder Text Konversation / Abenteuer, aber zum Aufruf meiner defun'ed Funktionen auf diesem Weg.
Also brauche ich ein grundlegendes elisp Skelett, um eine benutzerdefinierte REPL zu machen. Das Ziel besteht darin, einen Assistenten mit einer natürlichen Sprache zu erstellen, die Anwser zu analysieren und einige Aktionen gemäß den Regeln auszuführen.
Danke für Ihre Zeit,
Steve,
Sieh dir iielm an, das ist ein elispl repl, das in emacs enthalten ist.
Je nachdem, was in Ihrem Puffer passieren kann, können Sie ihm einfach einen Hauptmodus mit einer entsprechenden Neubindung von return
geben? (Diese Antwort ist vage vom C-j von Lisp-Interaction-Mode inspiriert)
Sie sollten alle Schlüssel binden, die für die Bewegung in einem Puffer wie C-p C-n, Nach unten Pfeile / Seite hoch / runter verwendet werden, binden Sie sie einfach an (lambda ())
. Ändern Sie die Funktion für C-b und C-f (Pfeil links nach rechts), wenn sich die Cursorposition am Anfang oder Ende der Zeile befindet. Und binden Sie den Return-Schlüssel an die Funktion, die die aktuelle Zeile vom Ende zur optionalen Eingabeaufforderung liest (Sie können Regex verwenden, um die Eingabeaufforderung zu entfernen), was Sie wollen mit dieser Zeichenfolge, und gehen Sie dann zur nächsten Zeile im Puffer und drucken Sie Ihr Ergebnis. p>
Tags und Links read-eval-print-loop emacs lisp buffer interactive