gpt4 book ai didi

Emacs SLIME - Common Lisp - 评估区域并打印所有结果

转载 作者:太空宇宙 更新时间:2023-11-03 18:53:40 24 4
gpt4 key购买 nike

我安装了 Emacs+SLIME+SBCL,我是这方面的新手。所以,我的问题是如何评估整个文件或文件的选定区域并将每个表达式的结果打印到控制台。例如,对于代码

(+ 3 5)
(defun my-first (a) (car a))
(my-first (list 5 7 3))

我想在控制台中看到这个:

8
MY_FIRST
5

感谢您的帮助。

最佳答案

所以,对我来说,最好和最简单的解决方案是按以下方式包装代码:

    (format t "~{~a~%~}" (list
<code in file>
))

然后我在文件末尾执行 C-x C-e,然后在 REPL 中一一获取我所有表达式的结果。感谢大家。

UPD我使用互联网和这个答案:How to run Common Lisp code with Slime in Emacs Lisp 来编写这两个函数。此代码位于我的 .emacs 文件中。现在我只需要按“C-c e”或“C-c r”来评估所有文件或仅选择区域。 问题彻底解决

(require 'slime)
(defun lispy--eval-lisp (str)
"Eval STR as Common Lisp code."
(unless (slime-current-connection)
(let ((wnd (current-window-configuration)))
(slime)
(while (not (and (slime-current-connection)
(get-buffer-window (slime-output-buffer))))
(sit-for 0.2))
(set-window-configuration wnd)))
(let (deactivate-mark)
(slime-eval `(swank:eval-and-grab-output ,str))))

(defun feval ()
"Evaluates the whole file"
(interactive)
(message (car (lispy--eval-lisp
(concat "(format t \"~{~a~%~}\" (list " (string-make-unibyte (buffer-string)) "))")))))
(defun reval (from to)
(interactive "r")
(message (car (lispy--eval-lisp
(concat "(format t \"~{~a~%~}\" (list " (string-make-unibyte (buffer-substring from to)) "))")))))

(global-set-key "\C-ce" 'feval)
(global-set-key "\C-cr" 'reval)

关于Emacs SLIME - Common Lisp - 评估区域并打印所有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33344571/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com