2015-11-17 50 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