7

以前は、次のスクリプトを使用して SBCL を開始しました。

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

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

emacs でスラ​​イムを使用する場合、SBCL の現在のディレクトリを設定する方法がわかりません。

どんな提案でも大歓迎です!

4

2 に答える 2

10

SLIME は、現在のバッファに関連付けられたファイルがあるディレクトリから取得した現在のディレクトリで Lisp システムを開始します。通常、最初に SLIME を起動したいファイルを開きます。

現在のディレクトリを実行中の Lisp に変更したい場合、最良の方法は,cd ショートカットを使用することです。現在のSlimeのインストールはデフォルトで非常に最小限であるため、これは適切なslime-replがセットアップされていることを前提としています. 寄贈されたパッケージを参照してください。おそらく、少なくともスライム ファンシー メタパッケージが必要です。

于 2012-02-24T05:42:22.427 に答える
5

SLIME から現在のディレクトリを変更する必要があるのはなぜですか? 現在書いているシステムからLispソースファイルにアクセスしたいからではなく、データを含むファイルを読み書きするコードを書きたいからだと思います。

もしそうなら、おそらくQuicklisplocal-projectsで試したほうがいいでしょう。と一緒に使用すると、システムを簡単に作成できます。システムは、またはを使用してロードできます。quickproject(ql:quickload 'my-system)(require 'my-system)

システムのルートから相対的に配置されたデータ ファイルを参照する必要がある場合my-system(例の一貫性を保つために最後の段落の名前を使用するだけです) asdf:system-relative-pathname、. たとえば、(asdf:system-relative-pathname 'my-system "files/data.txt").

確かに、展開はまったく別のビジネスです。私の解決策は、実行中の実行可能ファイルがどのように呼び出されたかを調べて、コードがデプロイされているか開発中であるかを判断することです。開発中の場合は、 を使用しますasdf:system-relative-pathname。展開された場合、実行可能ファイルのパスに基づいてファイルのパスを決定します (私の「ビルド スクリプト」は、プロジェクトのビルド時に実行可能ファイルの横にこれらのファイルをコピーします)。

このアプローチを使い始めてからcd、SBCL での -ing の必要性はゼロになりました。cd周りを回るのは難しくありませんでしたが、心配することが少なくなったのは良いことです.

于 2012-02-24T07:10:03.153 に答える