2012-02-23 3 views
7

は、私はSBCL開始するには、以下のスクリプトを使用します。emacsの中にスライムを使用した場合slimeを使ってSBCLの現在のディレクトリを設定するには?過去に

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

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

を今、私はSBCLの現在のディレクトリを設定する方法を知っているdoonot?

ご迷惑をおかけして申し訳ございません。

答えて

5

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

もしそうなら、おそらくlocal-projectsQuicklispに入れてみてください。 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は難しくありませんでしたが、心配することは少ないです。

8

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

実行中のLispの現在のディレクトリを変更する場合は、,cd shortcutを使用するのが最善の方法です。これは、現在のSlimeのインストールがデフォルトではごくわずかであるため、適切なslime-replセットアップがあることを前提としています。 contributed packagesを参照してください。おそらく少なくともslime-fancy metapackageが必要です。

+1

slime-cdは、slime.elのインタラクティブにコンパイルされたLisp関数です。 (slime-cd DIRECTORY) DIRECTORYをLispの現在のディレクトリにします。 swank:set-default-directoryが返す文字列を返します。 –

+0

これは役に立ちました。しかし、「cdショートカット」へのリンクは死んでいます。何を思っていたんだ? – MadPhysicist

関連する問題