如何使swank与stumpw一起工作?

时间:2014-01-06 14:21:22

标签: emacs lisp common-lisp swank

我已将此代码段添加到我的stumpwmrc文件中:

(defun load-swank ()
  "Load a swank server"
  (ql:quickload 'swank)
  (require 'swank)
  (setq swank:*use-dedicated-output-stream* nil)
  (setq slime-net-coding-system 'utf-8-unix)
  (swank:create-server :port 4006))
(load-swank)

我希望打开一个套接字服务器,接受“swank”协议。因此我可以使用emacs连接到它(感谢Slime)。

但是当我登录并且stumpwm正在读取其配置文件时,这是我收到的错误消息:

15:00:34 Outputting a message:
         ^B^1*Error loading ^b/home/ybaumes/.stumpwmrc^B: ^nThe name "SWANK" does not designate any package.

我该如何解决?我调用'require,甚至'quickload函数。这有什么问题?

1 个答案:

答案 0 :(得分:2)

典型的错误是:

您加载文件,读者看到代码:

未加载SWANK

(defun load-swank ()
  "Load a swank server"

未加载SWANK

  (ql:quickload 'swank)

SWANK未加载 - 请记住,我们仍在阅读表单。

  (require 'swank)

SWANK未加载 - 请记住,我们仍在阅读表单。

现在使用我们在包装中不存在的符号......读者抱怨:

  (setq swank:*use-dedicated-output-stream* nil)  ; the package SWANK does not exist yet.

  (setq slime-net-coding-system 'utf-8-unix)
  (swank:create-server :port 4006))

现在要加载SWANK:

(load-swank)

您不能使用不存在的包中的符号。

例如,函数内部有效:

(setf (symbol-value (read-from-string "swank:*use-dedicated-output-stream*")) nil)

等等。

您需要在该函数的运行时找到该符号。使用(find-symbol "FOO" "SWANK")(记住Common Lisp在内部是upcase)或(read-from-string "SWANK::FOO")