現在のディレクトリをSLIMEから変更する必要があるのはなぜですか?あなたが現在書いているシステムからLispソースファイルを訪れたいからではなく、データを含むファイルを読み書きするコードを書く必要があるからです。
もしそうなら、おそらくlocal-projects
をQuicklispに入れてみてください。 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
を実行する必要はなくなりました。 cd
-aroundは難しくありませんでしたが、心配することは少ないです。
slime-cdは、slime.elのインタラクティブにコンパイルされたLisp関数です。 (slime-cd DIRECTORY) DIRECTORYをLispの現在のディレクトリにします。 swank:set-default-directoryが返す文字列を返します。 –
これは役に立ちました。しかし、「cdショートカット」へのリンクは死んでいます。何を思っていたんだ? – MadPhysicist