现在我在*scratch*
缓冲区中写入表达式,并通过使用C-xC-e进行评估来测试它们。我真的很感谢有一个像SLIME或irb这样的交互式解释器,我可以在其中测试Emacs Lisp表达式。如何在Emacs中调用交互式elisp解释器?
回答
在*scratch*
缓冲区中,只需键入C-j来计算点前的表达式。
好吧,如果你在一个文字REPL为Emacs真正感兴趣的,可以使用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)
您可以从命令行调用此方法,或者,你似乎想从运行shell Emacs的缓冲区内:
[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$
这看起来比它应该更复杂 - 运行一个shell,它运行另一个emacs以批处理模式运行REPL,所有这些都在主emacs运行时内部。无论如何,它解决了我的问题,所以感谢您的帮助! – 2008-09-28 04:57:29
此REPL实现不处理多行输入。如果你没有在一个行结束表达它给: 错误分析“(无论” (档案结尾repl.el) 有一种简单的方法来解决这个问题 – 2008-09-28 05:14:02
你最好的赌注是*scratch*
缓冲区。你可以把它更像是通过调试器第一次打开一个REPL:
M-x set-variable debug-on-error t
然后用C-j
代替C-x C-e
,这将插入计算表达式插入表达后的行缓冲的结果。而不是诸如命令历史记录,* * *
等等,您只需移动*scratch*
缓冲区并进行编辑。
如果你想让* * *
这样的东西起作用,更像是一个普通的REPL,试试ielm
。
M-x ielm
要运行只是一个elisp的表达,你可以使用M-:快捷方式并在迷你缓冲区中输入表达式。对于其他情况,您可以使用划伤缓冲区
Eshell是另一种交互式Elisp解释器的选项。
M-x eshell
它不仅是一个命令行shell诸如bash(或cmd.exe,如果在Windows上),但你也可以交互地编写和执行elisp的代码。
~ $ ls
foo.txt
bar.txt
~ $ (+ 1 1)
2
- 1. Emacs Elisp动态交互式提示
- 2. 交互式ActionScript解释器?
- 3. 如何在Emacs Lisp中理解这个表单(交互式(列表'交互式))?
- 4. Python - 交互模式与正常调用解释器
- 5. Elisp/texi2dvi:如何从Emacs调用texi2dvi?
- 6. Elisp:你如何将交互式的“r”和交互式的“p”结合起来?
- 7. 了解Python交互式解释器中的打印字节
- 8. 使用PYTHONSTARTUP交互式测试解释器中的python文件
- 9. 如何使用可选参数创建交互式elisp函数
- 10. 如何在scala交互式解释器(REPL)中运行外部文件?
- 11. Elisp交互功能名称
- 12. 如何获得Emacs内部的解释器解释器?
- 13. 如何在egg/Emacs中做一个交互式的git rebase?
- 14. Emacs的:在一个交互式命令
- 15. 在Emacs/elisp的解码HTML实体
- 16. Elisp:在交互式命令中询问是或否
- 17. emacs中的bignum/elisp
- 18. Emacs中的多态回调/ Elisp
- 19. 如何node.js的交互式在Emacs在Windows
- 20. 是否有C#的交互式解释器?
- 21. Python Unicode字符串和Python交互式解释器
- 22. 如何捕获所有需要用户交互的elisp函数调用?
- 23. 如何取消激活Jython交互式解释器会话的JLine?
- 24. 交互式popen()Lua调用
- 25. 如何在Emacs中运行python解释器?
- 26. Emacs:有没有办法使用Emacs创建交互式脚本?
- 27. 在Emacs中,如何使用elisp脚本中的“其他窗口”?
- 28. Emacs交互式读取转义序列
- 29. 交互命令行模式emacs
- 30. Emacs:交互式“f”的默认目录
正是我?寻找,非常感谢! – 2008-09-29 00:27:10