2015-11-17 53 views
1

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

一直都在使用这么多的打印语句是一种痛苦。

+1

Maxima邮件列表上的最佳提问。 –

+0

@RainerJoswig我经常出现Maxima的邮件列表,我想可能是这里的某个人可能会意识到这一点。 – Rorschach

+0

您是否问过将Maxima作为Elisp运行,还是关于如何在通过Slime连接到Emacs的Common Lisp下运行? –

回答

2

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

  1. 使用Maxima核心文件运行粘液。看到这个电子邮件怎么办呢

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

  2. 运行千里马,但在初始化文件中添加代码来创建一个自吹服务器然后用slime-connect连接到。

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

名单上

有人(莱奥·巴特勒,也许?),那么建议比是在电子邮件中的整洁的方法。不幸的是,我的搜索福失败了我,我找不到谈话所以我就贴什么在我的~/.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目录加载斯旺克(我使用Elpa安装粘液)。一旦成功,或者因为某种原因无论如何都装载了swank,它就会创建一个服务器,然后在第二封电子邮件中描述的巧妙的“使q密钥不会令人讨厌”。

+0

它可以帮助调试maxima的源代​​码吗?难道不是在slime/emacs上而不是在终端上运行maxima? – Rorschach

+0

对不起,但我不明白你的问题。我的答案提供了两种不同的方式来运行与泥浆连接的千里马。我以为这就是你想要的? –

+0

是的,我猜想它可以帮助我在slime上运行maxima,但它是否也会帮助我在maxima代码中设置断点并调试它? – Rorschach