Frage

Im Moment schreibe ich Ausdrücke im *scratch* Puffer und testen sie mit C-x C-e durch die Auswertung. Ich würde wirklich einen interaktiven Interpreter wie SLIME oder irb, I, in denen schätzen, die könnte Emacs Lisp Ausdrücke testen.

War es hilfreich?

Lösung

Es ist einfach Lisp Ausdrücke in Inferior Emacs-Lisp-Modus zu öffnen:

M-x ielm

Sie können mehr über dieses Feature in der Emacs Abschnitt Handbuch "Lisp Interaktion"

Andere Tipps

Eshell ist eine weitere Option für eine interaktive Elisp Dolmetscher.

M-x eshell

Es ist nicht nur ein Kommando-Shell wie bash (oder cmd.exe, wenn unter Windows), aber Sie können auch interaktiv schreiben und Elisp Code auszuführen.

~ $ ls
foo.txt
bar.txt
~ $ (+ 1 1)
2

Ihre beste Wette ist der *scratch* Puffer. Sie können es mehr wie ein REPL durch ersten Einschlag auf dem Debugger:

M-x set-variable debug-on-error t

Dann C-j anstelle von C-x C-e, die auf der Linie nach dem Ausdruck das Ergebnis der Auswertung des Ausdrucks in den Puffer einfügen wird. Statt Dinge wie Befehl Geschichte, * * * und so weiter, die Sie gerade bewegen um den *scratch* Puffer und zu bearbeiten.

Wenn Sie Dinge wie * * * wollen, mehr zu arbeiten, wie eine übliche REPL, versucht ielm.

M-x ielm

Im *scratch* Puffer, geben Sie einfach C-j den Ausdruck vor dem Punkt zu bewerten.

Nun, wenn Sie für Emacs in einem wörtlichen REPL wirklich interessiert sind, ist es möglich, eine mit dem batch-Modus von Emacs zu schreiben:

(require 'cl)

(defun read-expression ()
  (condition-case
      err
      (read-string "> ")
    (error
     (message "Error reading '%s'" form)
     (message (format "%s" err)))))

(defun read-expression-from-string (str)
  (condition-case
      err
      (read-from-string str)
    (error
     (message "Error parsing '%s'" str)
     (message (format "%s" err))
     nil)))

(defun repl ()
  (loop for expr = (read-string "> ") then (read-expression)
        do
        (let ((form (car (read-expression-from-string expr))))
          (condition-case
              err
              (message " => %s" (eval form))
            (error
             (message "Error evaluating '%s'" form)
             (message (format "%s" err)))))))

(repl)

Sie können diese rufen von der Kommandozeile oder, wie Sie scheinen zu wollen, innerhalb eines Emacs-Puffer läuft eine Shell:

kburton@hypothesis:~/projects/elisp$ emacs -batch -l test.el
Loading 00debian-vars...
> (defvar x '(lambda (y) (* y 100)))
 => x
> (funcall x 0.25)
 => 25.0
> 
kburton@hypothesis:~/projects/elisp$

Um nur ein elisp Ausdruck ausführen können Sie M- verwenden: Abkürzung und geben Sie Ausdruck in Mini-Puffer. In anderen Fällen können Sie Kratzer Puffer

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top