2012-02-23 98 views
7

在過去,我用下面的腳本來啓動SBCL:如何使用slime設置SBCL的當前目錄?

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

exec rlwrap --remember -c -b "$breakchars" -f "$HOME"/.sbcl_completions sbcl --noinform --userinit "$HOME"/.sbclrc "[email protected]" 

現在使用emacs的煤泥時,我doonot知道如何設置SBCL的當前目錄?

任何建議表示讚賞!

回答

5

爲什麼您需要從SLIME更改當前目錄?我認爲這不是因爲您想從您當前正在編寫的系統訪問Lisp源文件,而是因爲您需要編寫讀取或寫入包含數據的文件的代碼。

如果是這樣,那麼在Quicklisp中嘗試local-projects可能更好。與quickproject一起,它允許您輕鬆創建系統,然後您可以使用(ql:quickload 'my-system)甚至(require 'my-system)加載系統。

如果您需要參考相對於系統my-system根目錄的數據文件(僅使用最後一段中的名稱來保持示例一致),則可以使用asdf:system-relative-pathname。例如,(asdf:system-relative-pathname 'my-system "files/data.txt")

當然,部署是一個完全不同的業務。我的解決方案是查看how the running executable was called以確定代碼是否已部署或正在開發中。如果在開發中,我使用asdf:system-relative-pathname。如果已部署,我將根據可執行文件的路徑確定文件的路徑(我的「構建腳本」在構建項目時將這些文件複製到可執行文件旁邊)。

自從我開始使用這種方法以來,我對SBCL中的cd -ing的需求降至零。周圍並不難,但很少有事情需要擔心。

8

SLIME從與當前緩衝區關聯的文件的目錄中取得的當前目錄啓動Lisp系統。通常,您會打開一個您希望SLIME首先啓動的文件。

如果要將當前目錄更改爲正在運行的Lisp,那麼最好的方法是使用,cd shortcut。這假定你有一個合適的史萊姆複製設置,因爲當前的史萊姆默認安裝是非常小的。請參閱contributed packages,您可能至少需要slime-fancy metapackage

+1

slime-cd是'slime.el'中交互式編譯的Lisp函數。 (slime-cd DIRECTORY) 使DIRECTORY成爲Lisp的當前目錄。 返回swank:set-default-directory返回的值。 – 2012-02-24 08:28:01

+0

這很有幫助。但是,「CD快捷方式」的鏈接已死亡。你有什麼想法? – MadPhysicist 2017-12-11 22:14:48

相關問題