如何使用粘液设置SBCL的当前目录?

问题描述 投票:7回答:2

过去,我使用以下脚本启动SBCL:

breakchars="(){}[],^%$#@\"\";:''|\\"
cd /media/E/work

exec rlwrap --remember -c -b "$breakchars"  -f "$HOME"/.sbcl_completions  sbcl --noinform --userinit "$HOME"/.sbclrc "$@"

现在在emacs中使用史莱姆时,我不知道如何设置SBCL的当前目录?

任何建议都值得赞赏!

common-lisp sbcl
2个回答
6
投票

为什么需要从SLIME更改当前目录?我认为这不是因为您要从当前正在编写的系统中访问Lisp源文件,而是因为您想编写用于读取或写入包含数据的文件的代码。

[如果是这样,最好在local-projects中尝试local-projects。与Quicklisp一起使用,可以轻松创建系统,然后可以使用quickproject甚至是quickproject进行加载。

如果需要引用相对于系统(ql:quickload 'my-system)根目录定位的数据文件(仅使用最后一段中的名称以使示例保持一致),则可以使用(require 'my-system)。例如,my-system

当然,部署是完全不同的业务。我的解决方案是查看asdf:system-relative-pathname,以确定代码是否已部署或正在开发中。如果在开发中,我将使用asdf:system-relative-pathname。如果已部署,我将根据可执行文件的路径来确定文件的路径(在构建项目时,我的“构建脚本”会将这些文件复制到可执行文件旁边)。

[自从我开始使用这种方法以来,我在SBCL中对(asdf:system-relative-pathname 'my-system "files/data.txt")的需求降为零。 how the running executable was called并不难,但少担心的事情也很好。


8
投票

SLIME使用当前目录启动Lisp系统,该目录取自与当前缓冲区关联的文件所在的目录。通常,您将打开一个文件,希望SLIME首先启动。

如果要在运行的Lisp中更改当前目录,那么最好的方法是使用asdf:system-relative-pathname。这假定您已正确设置了粘液复制,因为默认情况下当前的Slime安装非常少。请参阅cd,您可能至少需要cd

© www.soinside.com 2019 - 2024. All rights reserved.