在 Emacs 上调试 Maxima CAS Lisp 代码

标签 debugging emacs lisp common-lisp maxima

是否可以调试Maxima CAS Emacs 中的 Lisp 代码?

一直使用这么多打印语句是一件痛苦的事情。

最佳答案

多年来我使用了两种方法。

  1. 使用 Maxima 核心文件运行 slime。查看此电子邮件以了解如何操作

    http://article.gmane.org/gmane.comp.mathematics.maxima.general/36029

  2. 运行 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/

相关文章:

emacs - 如何在 Emacs 中选择或突出显示一个 block ?

emacs - adoc模式是什么意思?

variables - 如何在clojure宏中绑定(bind)var的名称和值?

linux - 在 Emacs 中调试时如何在 I/O 窗口中发出 EOF 信号?

linux - 如何将emacsclient 背景设置为Emacs 背景?

debugging - Lisp代码调试

linux - 为什么 `pop` 指令不从堆栈中弹出?

android - Gradle 发布版本仍然可以调试?

debugging - 在 IntelliJ IDEA 中单步执行 JDK 源代码

php - 引用 - 这个错误在 PHP 中意味着什么?