2017-02-14 42 views
1

这是我的工作流程:我在emacs中运行REPL,并创建一个新系统。当我尝试使用(asdf:test-system :system)测试系统时,出现Component :SYSTEM not found错误。当然,当我重新启动lisp映像时,组件被找到。重新加载组件列表

我的问题是:我可以向ASDF发信号通知~/common-lisp/目录中有一个新系统吗?

我想象我找会是这样的命令:(asdf:reload-systems)

回答

2

装系统时清除配置工作。希望这也适用于测试它们:

* (asdf:load-system :test) 

debugger invoked on a ASDF/FIND-SYSTEM:MISSING-COMPONENT in thread 
#<THREAD "main thread" RUNNING {1001E0E533}>: 
    Component :TEST not found 

Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL. 

restarts (invokable by number or by possibly-abbreviated name): 
    0: [RETRY      ] Retry ASDF operation. 
    1: [CLEAR-CONFIGURATION-AND-RETRY] Retry ASDF operation after resetting the 
            configuration. 
    2: [ABORT      ] Exit debugger, returning to top level. 

((:METHOD ASDF/OPERATE:OPERATE (SYMBOL T)) ASDF/LISP-ACTION:LOAD-OP :TEST) [fast-method] 
0] 

使用重启#1使得它在这里工作。但是你也可以自己做:

* (asdf:clear-configuration) 

NIL 
* (asdf:load-system :test) 

T 
* 

注意,~/common-lisp/路径仅从ASDF 3.1.2默认支持,你可能需要检查哪个版本是你的。

详情see the documentation

+0

测试了重启和'清除配置'功能,它的工作原理。谢谢。我不确定为什么第一次尝试重新启动时不起作用。 – tsikov

+0

@tsikov如果这再次发生,请尝试检查是否有异常。例如。有时我会在Emacs中进行更改,但忘记保存缓冲区。 – coredump