我已将此代码段添加到我的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函数。这有什么问题?
答案 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")
。