現在我在*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