现在我在*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. Pycharm有交互式Python解释器吗?
- 5. Emacs如何在交互命令行模式下运行命令elisp
- 6. Python - 交互模式与正常调用解释器
- 7. 如何禁用修改后的tclsh解释器交互模式?
- 8. Elisp/texi2dvi:如何从Emacs调用texi2dvi?
- 9. 我可以从交互式解释器启动调试吗?
- 10. Elisp:你如何将交互式的“r”和交互式的“p”结合起来?
- 11. 获取Elisp/Emacs中交互功能的列表
- 12. 了解Python交互式解释器中的打印字节
- 13. 使用PYTHONSTARTUP交互式测试解释器中的python文件
- 14. 从elisp正确调用交互式脚本
- 15. 如何使用可选参数创建交互式elisp函数
- 16. 如何在交互式Io解释器中输入多行方法?
- 17. 如何在scala交互式解释器(REPL)中运行外部文件?
- 18. 如何在elisp程序中调用函数,并遵循交互路径?
- 19. cimport交互式解释错误
- 20. Elisp交互功能名称
- 21. 如何使用elisp在Emacs中格式化数据表?
- 22. 如何获得Emacs内部的解释器解释器?
- 23. 交互式解释器中的反斜杠
- 24. hashbang行中的Python交互式解释器
- 25. 在后台运行的交互式Python解释器
- 26. 如何在egg/Emacs中做一个交互式的git rebase?
- 27. 如何重复Lua交互式解释器中的最后一个命令?
- 28. Emacs的:在一个交互式命令
- 29. 在Emacs/elisp的解码HTML实体
- 30. 在emacs中评估Elisp
正是我?寻找,非常感谢! – 2008-09-29 00:27:10