是否可以调试Maxima CAS Emacs 中的 Lisp 代码?
一直使用这么多打印语句是一件痛苦的事情。
最佳答案
多年来我使用了两种方法。
使用 Maxima 核心文件运行 slime。查看此电子邮件以了解如何操作
http://article.gmane.org/gmane.comp.mathematics.maxima.general/36029
运行 Maxima,但在初始化文件中添加代码以创建 swank 服务器,然后使用
slime-connect
连接到该服务器。http://article.gmane.org/gmane.comp.mathematics.maxima.general/44533
然后名单上的某个人(也许是 Leo Butler?)提出了一个比那封电子邮件中的方法更简洁的方法。不幸的是,我的搜索失败了,我找不到对话,所以我现在只粘贴我的 ~/.maxima/swank.lisp
中的内容:
(eval-when (:compile-toplevel :load-toplevel :execute)
(defvar *swank-asd*
(car (directory #P"~/.emacs.d/elpa/slime*/swank.asd")))
(when *swank-asd*
(load *swank-asd*)
(require :swank)))
(when (find-package :swank)
(swank:create-server :port 56789 :dont-close t)
;; Hack to make "q" not kill Maxima outright. Only applies from console
(in-package :maxima)
(defvar *real-continue-function* (symbol-function 'continue))
(setf (symbol-function 'continue)
(lambda (&rest args)
(let ((swank::*sldb-quit-restart* 'maxima::macsyma-quit))
(apply *real-continue-function* args))))
(format t "Swank loaded successfully"))
首先尝试从我的 Emacs 目录加载 swank(我使用 Elpa 安装 slime)。成功时,或者如果 swank 出于某种原因被加载,它会创建一个服务器,然后执行第二封电子邮件中描述的巧妙的“使 q
键不是很烦人”的技巧。
关于在 Emacs 上调试 Maxima CAS Lisp 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33763418/