Ahora escribo expresiones en el buffer *scratch*
y las pruebo evaluando con C-xC-e. Realmente apreciaría tener un intérprete interactivo como SLIME o irb, en el que pudiera probar las expresiones de Emacs Lisp.¿Cómo invocar un intérprete de elisp interactivo en Emacs?
Respuesta
Es fácil de evaluar expresiones Lisp en Inferiores Emacs-Lisp modo:
M-x ielm
Usted puede leer más sobre esta opción en el Emacs manual section on "Lisp Interaction"
En el búfer *scratch*
, simplemente escriba C-j para evaluar la expresión antes del punto.
Bueno, si usted está realmente interesado en un REPL literal para emacs es posible escribir uno usando el modo de emacs -batch:
(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)
Usted puede llamar a esto desde la línea de comandos, o, como parece que desear, desde el interior de un búfer de Emacs ejecutar un intérprete:
[email protected]:~/projects/elisp$ emacs -batch -l test.el
Loading 00debian-vars...
> (defvar x '(lambda (y) (* y 100)))
=> x
> (funcall x 0.25)
=> 25.0
>
[email protected]:~/projects/elisp$
Esto se ve más complicado de lo que debería ser: ejecutar un shell, que ejecuta otro emacs en modo batch, que ejecuta el REPL, todo dentro del tiempo de ejecución principal de emacs. De todos modos, soluciona mi problema, ¡así que gracias por la ayuda! –
Esta implementación de REPL no maneja las entradas de varias líneas. Si usted no termina una expresión en una sola línea que da: error de análisis '(lo que sea' (EOF repl.el) ¿Hay una manera fácil de arreglar eso –
Su mejor apuesta es el buffer *scratch*
. Puede que sea más como un REPL por primera encender el depurador:
M-x set-variable debug-on-error t
A continuación, utilice C-j
en lugar de C-x C-e
, que se inserte el resultado de evaluar la expresión en la memoria intermedia en la línea después de la expresión. En lugar de cosas como el historial de comandos, * * *
y demás, simplemente mueva el buffer *scratch*
y edítelo.
Si desea que cosas como * * *
funcionen, más como un REPL habitual, intente ielm
.
M-x ielm
Para ejecutar sólo una expresión elisp puede utilizar M-: atajo e ingrese expresión en mini-buffer. Para otros casos, puede usar cero memoria intermedia
Eshell es otra opción para un intérprete interactivo de Elisp.
M-x eshell
No sólo es una consola de comandos como bash (o si cmd.exe en Windows) pero también se puede escribir de forma interactiva y ejecutar código Elisp.
bien, eso es simplemente ... fascinante ... la capacidad de mezcla ... Definitivamente tendré que jugar más con esto. Aunque es una respuesta indirecta a la pregunta, me alegra que ¡la respuesta está aquí! '$ echo (buffer-name) | sed -e 's/\ */X/g'' da 'XeshellX', etc. – lindes
- 1. Emacs Elisp solicitud interactiva dinámica
- 2. ¿Intérprete interactivo de ActionScript?
- 3. bignum en emacs/elisp
- 4. Emacs Lisp: ¿Cómo, un búfer interactivo con REPL?
- 5. ¿Hay un intérprete interactivo para C#?
- 6. ¿Cómo obtengo un intérprete de esquema trabajando dentro de Emacs?
- 7. Devolución de llamada polimórfica en Emacs/Elisp
- 8. ¿Ejecuta el programa elisp sin Emacs?
- 9. imprimir símbolos de emacs en elisp
- 10. ¿Cómo ejecuto un intérprete de Python en Emacs?
- 11. Cómo depurar elisp?
- 12. ¿Cómo puedo saber en elisp si Emacs usa X?
- 13. intérprete Lisp/Scheme sin Emacs?
- 14. Ejemplos simples de clientes tcp en emacs elisp?
- 15. Programación CGI en Elisp?
- 16. Comportamiento de Emacs elisp expand-file-name en Windows
- 17. Cómo determinar el sistema operativo en elisp?
- 18. intérprete interactivo Scala (REPL): ¿cómo redirigir la salida a un archivo de texto?
- 19. Emacs - cómo ver/cómo depurar una sola función elisp/emacs comando
- 20. ¿Cómo puedo empaquetar un archivo de texto "externo" en un módulo elisp?
- 21. Emacs/Emacs Lisp: ¿puedo insertar consejos antes de un formulario interactivo? o cómo preestablecer inteligentemente el compile-command?
- 22. ¿Cómo ejecutar un archivo externo desde el intérprete interactivo scala (REPL)?
- 23. ¿Cómo uso IPython como mi intérprete de Emacs Python?
- 24. Especificando el intérprete de python de virtualenv en emacs
- 25. ¿Es posible hacer que el intérprete interactivo de Python ejecute un script en carga?
- 26. Prueba de plataforma en elisp?
- 27. ¿Hay un truco para depurar un giro en emacs elisp, en un módulo flymake?
- 28. Emacs: ¿Hay alguna manera de crear un script interactivo usando Emacs?
- 29. Elisp: cómo guardar datos en un archivo?
- 30. Maximización de un marco de Emacs a solo un monitor con elisp
exactamente lo que estaba? buscando, ¡muchas gracias! –