在Emacs上调试Maxima CAS Lisp代码

时间:2015-11-17 17:33:32

标签: debugging emacs lisp common-lisp maxima

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

一直使用如此多的印刷文件是一件痛苦的事。

1 个答案:

答案 0 :(得分:2)

多年来我一直采用两种方法。

  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

  3. 列表中的某个人(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密钥不会真烦人" hack在第二封电子邮件中描述。